ww3tool 0.1.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- desktop/__init__.py +29 -0
- desktop/_repo_root.py +38 -0
- desktop/application.py +63 -0
- desktop/background_runner.py +46 -0
- desktop/branding.py +30 -0
- desktop/components/__init__.py +11 -0
- desktop/components/bounds_map_preview.py +252 -0
- desktop/components/combo_box.py +98 -0
- desktop/components/forcing_progress_dialog.py +84 -0
- desktop/components/globe_picker_dialog.py +474 -0
- desktop/components/header_card.py +36 -0
- desktop/components/image_gallery_drawer.py +470 -0
- desktop/components/ndbc_station_map_dialog.py +207 -0
- desktop/components/point_edit_dialog.py +179 -0
- desktop/components/region_map_dialog.py +233 -0
- desktop/components/right_aligned_controls.py +53 -0
- desktop/components/scroll_area.py +46 -0
- desktop/components/section_title.py +56 -0
- desktop/components/styles.py +127 -0
- desktop/components/table_widget.py +58 -0
- desktop/components/validators.py +29 -0
- desktop/qt_callback_dispatcher.py +31 -0
- desktop/steps/__init__.py +13 -0
- desktop/steps/calculation_panel.py +523 -0
- desktop/steps/forcing_panel.py +268 -0
- desktop/steps/grid_panel.py +941 -0
- desktop/steps/local_run_panel.py +133 -0
- desktop/steps/point_io.py +272 -0
- desktop/steps/server_connect_panel.py +563 -0
- desktop/steps/server_ops_panel.py +111 -0
- desktop/steps/ww3_panel.py +679 -0
- desktop/view_models/__init__.py +11 -0
- desktop/view_models/forcing_step.py +136 -0
- desktop/view_models/local_run.py +49 -0
- desktop/view_models/pipeline.py +958 -0
- desktop/view_models/plot.py +201 -0
- desktop/view_models/remote.py +263 -0
- desktop/view_models/settings.py +139 -0
- desktop/windows/__init__.py +22 -0
- desktop/windows/cluster_monitor.py +1181 -0
- desktop/windows/plot_window.py +1060 -0
- desktop/windows/preprocessing_window.py +3577 -0
- desktop/windows/settings_window.py +1559 -0
- desktop/windows/tools_window.py +534 -0
- desktop/windows/work_folder_dialog.py +239 -0
- run.py +552 -0
- workflows/__init__.py +105 -0
- workflows/application/__init__.py +119 -0
- workflows/application/configuration.py +1462 -0
- workflows/application/download_jason3.py +182 -0
- workflows/application/forcing_coverage_checker.py +193 -0
- workflows/application/forcing_inspection.py +266 -0
- workflows/application/forcing_merge.py +64 -0
- workflows/application/forcing_preparation.py +259 -0
- workflows/application/grid_preparation.py +152 -0
- workflows/application/grid_tools.py +412 -0
- workflows/application/local_run.py +75 -0
- workflows/application/match_jason3.py +339 -0
- workflows/application/match_ndbc.py +264 -0
- workflows/application/plot_spectrum.py +182 -0
- workflows/application/plot_wave_maps.py +429 -0
- workflows/application/plot_wind_field.py +210 -0
- workflows/application/preprocessing_workflow.py +146 -0
- workflows/application/remote_ops.py +2003 -0
- workflows/application/slurm_ops.py +26 -0
- workflows/domain/__init__.py +77 -0
- workflows/domain/config_models.py +638 -0
- workflows/domain/forcing_fields.py +179 -0
- workflows/domain/grid_bounds.py +230 -0
- workflows/domain/grid_spacing_recommendation.py +153 -0
- workflows/domain/named_path_preset_yaml.py +86 -0
- workflows/domain/output_scheme_yaml.py +188 -0
- workflows/domain/parameter_catalog.py +115 -0
- workflows/domain/timestep_recommendation.py +282 -0
- workflows/infrastructure/__init__.py +12 -0
- workflows/infrastructure/adapters/__init__.py +18 -0
- workflows/infrastructure/adapters/grid_generation_adapter.py +852 -0
- workflows/infrastructure/adapters/grid_visualization_adapter.py +191 -0
- workflows/infrastructure/adapters/ww3_namelist_adapter.py +409 -0
- workflows/infrastructure/forcing/__init__.py +27 -0
- workflows/infrastructure/forcing/file_path_manager.py +175 -0
- workflows/infrastructure/forcing/file_service.py +718 -0
- workflows/infrastructure/forcing/forcing_normalize_service.py +757 -0
- workflows/infrastructure/forcing/forcing_time_metadata.py +208 -0
- workflows/infrastructure/forcing/merge_service.py +947 -0
- workflows/infrastructure/forcing/use_cases.py +340 -0
- workflows/infrastructure/forcing/variable_detector.py +156 -0
- workflows/infrastructure/grid_visualization/__init__.py +16 -0
- workflows/infrastructure/grid_visualization/rect_grid_desc_parse.py +421 -0
- workflows/infrastructure/grid_visualization/structured_grid_paths.py +82 -0
- workflows/infrastructure/grid_visualization/worker.py +1408 -0
- workflows/infrastructure/local/__init__.py +4 -0
- workflows/infrastructure/local/run_service.py +628 -0
- workflows/infrastructure/plot/__init__.py +13 -0
- workflows/infrastructure/plot/jason3_download_worker.py +702 -0
- workflows/infrastructure/plot/jason3_worker.py +904 -0
- workflows/infrastructure/plot/ndbc_worker.py +667 -0
- workflows/infrastructure/plot/photo_output.py +62 -0
- workflows/infrastructure/plot/spectrum_worker.py +1790 -0
- workflows/infrastructure/plot/wave_map_worker.py +1434 -0
- workflows/infrastructure/plot/wind_field_worker.py +485 -0
- workflows/infrastructure/plot/workers_utils.py +357 -0
- workflows/infrastructure/region_map_renderer.py +147 -0
- workflows/infrastructure/remote/__init__.py +16 -0
- workflows/infrastructure/remote/ssh_client.py +590 -0
- workflows/infrastructure/remote/ssh_config.py +139 -0
- workflows/infrastructure/runtime_config.py +1599 -0
- workflows/infrastructure/ww3/__init__.py +12 -0
- workflows/infrastructure/ww3/grid_param_write.py +160 -0
- workflows/infrastructure/ww3/modify_ww3_nml.py +678 -0
- workflows/infrastructure/ww3/namelist_param_write.py +159 -0
- workflows/infrastructure/ww3/namelists_nml.py +298 -0
- workflows/infrastructure/ww3/nested_level_dirs.py +54 -0
- workflows/infrastructure/ww3/nml_log_format.py +63 -0
- workflows/infrastructure/ww3/nml_primitives.py +96 -0
- workflows/infrastructure/ww3/restart_checkpoints.py +262 -0
- workflows/infrastructure/ww3/server_sh.py +389 -0
- workflows/infrastructure/ww3/smc_forcing_bbox.py +125 -0
- workflows/infrastructure/ww3/smc_open_boundary.py +44 -0
- workflows/infrastructure/ww3/smc_ww3_version.py +158 -0
- workflows/infrastructure/ww3/step4_service.py +182 -0
- workflows/infrastructure/ww3/widget_stubs.py +199 -0
- workflows/infrastructure/ww3/ww3_grid_nml.py +1176 -0
- workflows/infrastructure/ww3/ww3_multi_nml.py +596 -0
- workflows/infrastructure/ww3/ww3_ounf_nml.py +175 -0
- workflows/infrastructure/ww3/ww3_ounp_nml.py +356 -0
- workflows/infrastructure/ww3/ww3_prnc_nml.py +909 -0
- workflows/infrastructure/ww3/ww3_shel_nml.py +957 -0
- workflows/infrastructure/ww3/ww3_trnc_nml.py +373 -0
- workflows/interfaces/__init__.py +15 -0
- workflows/interfaces/command_line.py +1211 -0
- workflows/interfaces/interactive_cli.py +1923 -0
- workflows/interfaces/workdir_setup.py +107 -0
- workflows/support/__init__.py +24 -0
- workflows/support/formatting.py +18 -0
- workflows/support/logging.py +69 -0
- workflows/support/process_worker.py +145 -0
- workflows/support/translations.py +118 -0
- ww3tool-0.1.1.dist-info/METADATA +245 -0
- ww3tool-0.1.1.dist-info/RECORD +870 -0
- ww3tool-0.1.1.dist-info/WHEEL +5 -0
- ww3tool-0.1.1.dist-info/entry_points.txt +2 -0
- ww3tool-0.1.1.dist-info/top_level.txt +4 -0
- ww3tool_resources/__init__.py +18 -0
- ww3tool_resources/meshgen/README.md +100 -0
- ww3tool_resources/meshgen/get_reference_data.py +442 -0
- ww3tool_resources/meshgen/smc_generator/README.md +152 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Bathys/Bathy044_033d.jpg +0 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Bathys/ECBuoys.dat +400 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Bathys/SPBuoys.dat +51 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Bathys/Subgrdline3.dat +45 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/PropHyb/Constants.f90 +198 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/PropHyb/Makefile +45 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/PropHyb/SMCPropWW3Hyb.f90 +1473 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/PropHyb/W3DispMD.f90 +439 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/PropHyb/W3MPInitMD.f90 +515 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/PropHyb/W3PSMCMD.f90 +1884 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/PropOMP/Constants.f90 +78 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/PropOMP/Makefile +46 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/PropOMP/Makefileifort +46 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/PropOMP/SMCGPropMP.f90 +1202 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/PropOMP/W3DispMD.f90 +439 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/PropOMP/W3PSMCMD.f90 +1463 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/SWESMCoMP/Makefile +45 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/SWESMCoMP/SWEsCnstMD.f90 +226 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/SWESMCoMP/SWEsDynaMD.f90 +2167 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/SWESMCoMP/SWEsInitMD.f90 +1264 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/SWESMCoMP/SWEsInput.txt +10 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/SWESMCoMP/SWEsnSMCPM.f90 +688 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/SWESMCoMP/runSWEsOMP +58 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/F90SMC/constants.mod +0 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/LICENSE +28 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/PropInput.txt +9 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/SWEsInput.txt +10 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/SideInputAMM153.txt +6 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/SideInputSMC1dR3.txt +5 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/SideInputSMC1dR3Arc.txt +5 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/SideMPInput.txt +5 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/SideMPInputArc.txt +5 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/convps2gif +32 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/convps2gif90r +37 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/countcell4lv +56 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/countcell6lv +54 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/countijsd4lv +77 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/countijsd6lv +82 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/removecell +34 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/runSMCGProp +48 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/runSMCSideMP +52 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/runSWEsOMP +56 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/runSub3CountCell +31 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/runSub3SideMP +49 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/trimtempcels +36 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/Casp6125Cels.d +1293 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/GtLk6125Cels.d +1545 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/awkAmazon +8 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/awkAustralia +7 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/awkCaspiaNo +7 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/awkCaspian +17 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/awkErieStCl +7 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/awkGtLakeNo +7 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/awkMeditern +10 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/awkMicHuron +11 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/awkSuperior +9 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/awkTurpBngl +7 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/zAmazon.png +0 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/zCaspian0.png +0 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/zCaspianS.png +0 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/zErieStCl.png +0 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/zMeditern.png +0 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/zMerged4Atn.png +0 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/zMerged4Pcf.png +0 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/zMerged4Sth.png +0 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/zMicHuron.png +0 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/zSuperior.png +0 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/Linuxs/zTrimming/zTurpBngl.png +0 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/AMM153kmCells.py +121 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/AMM153kmGrids.py +224 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/AMM153kmProps.py +210 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/AMM153kmSWHts.py +174 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/AMM153kmWHDif.py +228 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/BathymetryView.py +79 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/ECBuoys.dat +400 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/GridInfo125120.txt +6 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/GridInfo125120Subs.txt +5 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/GridInfo251020.txt +6 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/GridInfo36125.txt +6 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/GridInfo61250.txt +6 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/GridInfo61250Subs.txt +5 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/GridInfoAMM153.txt +7 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/GridInfoGtLks.txt +6 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/GridInfoMeditr.txt +6 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/GridInfoRtdArc.txt +7 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/GridInfoSMC1R3.txt +5 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/GridInfoSWEs1d.txt +5 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/Gridinfo.dat +2 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/GtLks6125Grids.py +126 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/Lakes625Cells.py +116 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/SMC1R3W2dif.py +206 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/SMC1R3grids.py +273 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/SMC1R3wdpth.py +252 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/SMC61250Obstr.py +133 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/SMC61250Pro3S.py +179 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/SMC61250Rgul.txt +8 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/SMCGloblCell.py +114 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/SMCGloblGrid.py +337 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/SMCGloblProp.py +274 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/SMCGloblSWHt.py +250 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/SMCGridRInfo.py +58 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/SMCHfdinfo.dat +2 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/SMCRotatGrid.py +250 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/SMCRotatSWHt.py +174 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/SPBuoys.dat +51 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/SWEs1dinfo.dat +2 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/Slatlons.dat +6 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/Sub61250Grid3.py +304 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/Sub61250SWHts.py +200 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/Sub61250Splt3.py +224 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/Sub61250bstr3.py +127 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/SubGloblGrid.py +328 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/SubGloblSWHt.py +218 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/addtexts.py +26 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/awkGibrlt +8 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/colrboxy.py +79 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/colrpoly.py +70 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/configinterp.txt +9 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/configreduce.txt +8 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/eq2lldeg.py +102 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/latlon2ijs.py +121 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/ll2eqdeg.py +95 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/readcell.py +78 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/readftxt.py +71 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/readmerg.py +49 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/readtext.py +55 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/reduce_interp.py +530 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/regional_bounds.py +39 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/regulrinfo.py +96 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/rgbcolor.py +34 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/rgbspectrum.dat +257 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/scale_depth.py +26 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/scale_diff.py +38 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/scale_dsqrt.py +51 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/scale_liner.py +29 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/scale_logwh.py +36 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/scale_swh.py +26 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcellSWE.py +280 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcellbdy.py +346 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcellful.py +221 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcellgen.py +449 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcellmap.py +252 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcelsplit.py +262 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcelvrglr.py +115 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcelvrts.py +147 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcfield.py +112 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcfrglr.py +95 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcglobl.py +262 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcgrglr.py +149 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcgrids.py +172 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcliner.py +49 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smclocal.py +193 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcontour.py +95 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcswhcv.py +50 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcupalevel.py +69 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcviewdep.py +145 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/smcviewrap.py +137 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/steromap.py +89 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/strendat +1 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/swhglobl.py +196 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/swhlocal.py +151 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/whtdfsqr.py +69 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/PySMCs/whtliner.py +52 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/README.md +2 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/SMCGTools_Guide.pdf +0 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/output/SMC_ChinaSeaBdys.dat +842 -0
- ww3tool_resources/meshgen/smc_generator/SMCGTools/output/SMC_ChinaSeaRunInfo.json +14 -0
- ww3tool_resources/meshgen/smc_generator/create_grid.py +1136 -0
- ww3tool_resources/meshgen/smc_generator/grid.json +46 -0
- ww3tool_resources/meshgen/smc_generator/output/grid.json +61 -0
- ww3tool_resources/meshgen/smc_generator/output/grid_boundary.dat +7790 -0
- ww3tool_resources/meshgen/smc_generator/output/grid_cell.dat +8944 -0
- ww3tool_resources/meshgen/smc_generator/output/grid_iside.dat +11229 -0
- ww3tool_resources/meshgen/smc_generator/output/grid_jside.dat +11039 -0
- ww3tool_resources/meshgen/smc_generator/output/grid_subtr.dat +8944 -0
- ww3tool_resources/meshgen/smc_generator/smcgside.py +393 -0
- ww3tool_resources/meshgen/structured_generator/README.md +178 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/LICENSE +674 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/README.md +23 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/README +14 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/cart2ll_polarstereo.m +58 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/clean_mask.m +167 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/clear_BS_ATNE_new.m +31 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/clear_Caspian_Sea_glob.m +47 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/clear_Hudson_Bay.m +27 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/clear_glob_30m.m +43 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/compute_boundary.m +1043 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/compute_boundary_iro.m +861 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/compute_boundary_xyz.m +861 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/compute_cellcorner.m +250 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/create_boundary.m +437 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/create_boundary_7M.m +411 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/create_boundary_SWPAC.m +410 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/create_grid.m +609 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/create_grid_curv.m +194 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/create_namelist.m +116 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/create_obstr.m +1032 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/emodnet_to_XYZ.f90 +147 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/gebco_to_XYZ.f90 +134 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/generate_grid.m +441 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/generate_grid_xyz.m +305 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/ispolyselfintersect.m +42 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/license_namelist.txt +24 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/load_grd_emodnet.m +296 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/make_bounc.sh +84 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/modify_mask.m +195 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/mypcolor.m +20 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/optional_bound.m +61 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/overlaps.m +72 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/plot_bot_mask_obst.m +124 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/read_bot.m +12 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/read_mask.m +40 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/read_namelist.m +234 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/read_obstr.m +44 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/read_ww3meta.m +113 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/readme_namelist.m +74 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/reconcile_masks.m +103 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/remove_lake.m +249 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/specific_case/create_grid_Alaska_reg.m +275 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/specific_case/create_grid_iro_1k.m +289 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/specific_case/maskmod_Alaska_reg.m +88 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/split_boundary.m +113 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/split_boundary_iro.m +93 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/split_boundary_xyz.m +93 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/split_dateline.m +51 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/split_dateline_360.m +46 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/stereographic_lon_lat.m +48 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/write_fortran_namelist.m +58 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/write_namelist_arr.m +52 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/write_namelist_boo.m +29 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/write_namelist_flt.m +28 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/write_namelist_int.m +28 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/write_namelist_str.m +28 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/write_namelist_vec.m +119 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/write_ww3file.m +47 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/write_ww3meta.m +230 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/bin/write_ww3obstr.m +53 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/create_grid.m +59 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/grid.nml +236 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/namelist/gridgen.ARC-12KM.nml +235 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/namelist/gridgen.BENG-3M.nml +235 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/namelist/gridgen.BISCAY-10M.nml +235 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/namelist/gridgen.GLOB-20KM.nml +236 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/namelist/gridgen.GLOB-30M.nml +235 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/namelist/gridgen.GLOB-60M.nml +235 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/namelist/gridgen.IROISE-1M.nml +235 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/namelist/gridgen.NATL-1D.nml +235 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/namelist/gridgen.NATL-60M.nml +235 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/namelist/gridgen.NC-3M.nml +235 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/namelist/gridgen.NORWAY-3M.nml +235 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/namelist/gridgen.ZA-7M.nml +235 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/python/compare_bot_glob_30m.py +51 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/python/compare_mask_glob_30m.py +152 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/python/gridgen_curvilinear_latlon.ipynb +304 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/python/gridgen_viewer.ipynb +723 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/python/read_bot.py +31 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/python/read_mask.py +30 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/python/read_slope.py +108 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/reference/alaska_10minzone.ascii +73 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/reference/nc_ww3_grdwrite.m +186 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/reference/stereo_readme +24 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/reference/user_polygons.flag +50 -0
- ww3tool_resources/meshgen/structured_generator/gridgen/reference/xyz_iro_1k.log +4 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/__init__.py +14 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/create_grid.py +969 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/grid/__init__.py +13 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/grid/clean_mask.py +126 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/grid/compute_boundary.py +887 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/grid/create_obstr.py +1015 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/grid/generate_grid.py +501 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/grid/remove_lake.py +206 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/grid/split_boundary.py +140 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/grid.nml +239 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/io/__init__.py +12 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/io/optional_bound.py +112 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/io/read_namelist.py +125 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/io/write_ww3file.py +57 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/io/write_ww3meta.py +262 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/io/write_ww3obstr.py +62 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/utils/__init__.py +8 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/utils/compute_cellcorner.py +277 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/utils/create_custom_grid.py +245 -0
- ww3tool_resources/meshgen/structured_generator/pygridgen/utils/parallel.py +149 -0
- ww3tool_resources/meshgen/unstructured_generator/README.md +281 -0
- ww3tool_resources/meshgen/unstructured_generator/create_grid.py +1657 -0
- ww3tool_resources/meshgen/unstructured_generator/grid.json +58 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/LICENSE.md +12 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/MANIFEST.in +9 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/README.md +90 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/build.py +183 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/example.py +71 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/CMakeLists.txt +4 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/LICENSE.md +12 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/README.md +102 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/bin/marche +0 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/bin/tripod +0 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/example.jig +452 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/geo/airfoil.jig +26 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/geo/airfoil.msh +957 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/geo/bunny.jig +24 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/geo/bunny.msh +32033 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/geo/earth.jig +25 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/geo/earth.msh +16634 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/geo/lakes.jig +26 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/geo/lakes.msh +611 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/geo/parts.jig +26 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/geo/parts.msh +4181 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/img/bunny-TRIA3-1.png +0 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/img/bunny-TRIA3-2.png +0 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/img/bunny-TRIA3-3.png +0 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/img/bunny-TRIA4-3.png +0 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/inc/jigsaw_const.h +109 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/inc/jigsaw_jig_t.h +542 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/inc/jigsaw_msh_t.h +258 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/inc/lib_jigsaw.h +348 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/CMakeLists.txt +201 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/geo_load.hpp +1404 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/hfn_init.hpp +289 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/hfn_load.hpp +2517 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/hfn_save.inc +1064 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/ini_load.hpp +1357 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/jig_load.hpp +1188 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/jig_read.hpp +738 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/jigsaw.cpp +933 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/jigsaw.hpp +2109 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/aabb_tree/aabb_mesh_k.hpp +205 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/aabb_tree/aabb_pred_k.hpp +815 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/aabb_tree/aabb_tree_k.hpp +1177 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/aabb_tree/aabb_type_k.hpp +218 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/aabbtree.hpp +65 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/algorithms/find.hpp +183 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/algorithms/sort.hpp +583 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/algorithms.hpp +62 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/allocators/alloc_base.hpp +157 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/allocators/alloc_item.hpp +587 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/allocators/alloc_pool.hpp +416 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/allocators/alloc_wrap.hpp +197 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/allocators.hpp +65 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/basebase.hpp +157 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/containers/array.hpp +821 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/containers/array_iter.hpp +422 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/containers/arraylist.hpp +509 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/containers/basic_stack.hpp +514 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/containers/block_array.hpp +862 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/containers/block_iter.hpp +441 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/containers/double_list.hpp +1032 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/containers/doubleiter.hpp +383 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/containers/fixed_array.hpp +297 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/containers/hashtable.hpp +579 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/containers/hashtwice.hpp +777 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/containers/iter_base.hpp +185 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/containers/priorityidx.hpp +737 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/containers/prioritymap.hpp +718 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/containers/priorityset.hpp +465 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/containers/single_list.hpp +810 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/containers/singleiter.hpp +354 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/containers.hpp +85 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/expansion/dd_float.hpp +554 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/expansion/ia_float.hpp +675 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/expansion/mp_basic.hpp +664 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/expansion/mp_float.hpp +1026 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/expansion/mp_utils.hpp +609 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/geom_base/cell_ball_k.hpp +1468 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/geom_base/cell_base_k.hpp +805 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/geom_base/intersect_k.hpp +2481 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/geom_base/vect_base_k.hpp +391 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/geom_reps/geom_base_2.hpp +255 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/geom_reps/geom_base_3.hpp +314 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/geom_reps/geom_mesh_ellipsoid_3.hpp +2301 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/geom_reps/geom_mesh_euclidean_2.hpp +1894 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/geom_reps/geom_mesh_euclidean_3.hpp +2964 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/geometry.hpp +70 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/geompred.hpp +63 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/geomreps.hpp +82 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/hashfunc.hpp +783 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/interpolate/hfun_base_k.hpp +107 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/interpolate/hfun_clip_k.hpp +1350 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/interpolate/hfun_constant_value_k.hpp +113 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/interpolate/hfun_grid_ellipsoid_3.hpp +940 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/interpolate/hfun_grid_euclidean_2.hpp +623 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/interpolate/hfun_grid_euclidean_3.hpp +859 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/interpolate/hfun_mesh_ellipsoid_3.hpp +834 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/interpolate/hfun_mesh_euclidean_2.hpp +770 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/interpolate/hfun_mesh_euclidean_3.hpp +819 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/interpolate.hpp +81 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/_bfs_mesh_2.inc +283 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/_zip_mesh_2.inc +655 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/cost_mesh_2.inc +291 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/flip_mesh_2.inc +523 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/iter_divs_2.inc +461 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/iter_divs_3.inc +57 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/iter_dual_2.inc +391 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/iter_dual_3.inc +51 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/iter_flip_2.inc +454 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/iter_flip_3.inc +298 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/iter_mesh_2.hpp +878 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/iter_mesh_3.hpp +67 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/iter_mesh_euclidean_2.hpp +256 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/iter_mesh_euclidean_3.hpp +381 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/iter_node_1.inc +191 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/iter_node_2.inc +1260 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/iter_node_3.inc +51 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/iter_pred_ellipsoid_3.hpp +344 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/iter_pred_euclidean_2.hpp +298 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/iter_timers.hpp +151 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/iter_zips_2.inc +1036 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/iter_zips_3.inc +52 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/move_mesh_2.inc +1459 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/part_mesh_2.inc +395 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/iter_mesh/sort_mesh_2.inc +367 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/itermesh.hpp +78 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/mathutil.hpp +320 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/mesh_reps/base_complex_k.hpp +3293 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/mesh_reps/hash_complex_k.hpp +770 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/mesh_reps/mesh_complex_1.hpp +432 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/mesh_reps/mesh_complex_2.hpp +693 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/mesh_reps/mesh_complex_3.hpp +1003 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/mesh_reps/mesh_complex_type_k.hpp +1443 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/mesh_reps/tria_complex_1.hpp +432 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/mesh_reps/tria_complex_2.hpp +582 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/mesh_reps/tria_complex_3.hpp +730 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/meshreps.hpp +95 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/mpfloats.hpp +76 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/parameters/iter_params.hpp +262 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/parameters/mesh_params.hpp +498 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/predicate/bisect_k.hpp +970 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/predicate/inball_k.hpp +2585 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/predicate/orient_k.hpp +852 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/predicate/predicate_k.hpp +830 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_base_2.hpp +598 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_base_3.hpp +1085 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_complex_2.hpp +538 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_complex_3.hpp +633 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_cost_delaunay_2.inc +340 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_cost_delaunay_3.inc +606 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_cost_delfront_2.inc +349 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_cost_delfront_3.inc +637 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_create_init_2.inc +527 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_create_init_3.inc +735 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_filt_k.hpp +1026 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_make_2.hpp +976 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_make_3.hpp +1188 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_mesh_2.hpp +1473 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_mesh_3.hpp +1924 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_offh_delfront_2.inc +416 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_offh_delfront_3.inc +648 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_pred_delaunay_2.hpp +273 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_pred_delaunay_3.hpp +343 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_pred_delfront_2.hpp +650 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_pred_delfront_3.hpp +1111 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_refine_ball_2.inc +509 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_refine_ball_3.inc +588 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_refine_base_2.inc +317 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_refine_base_3.inc +341 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_refine_face_2.inc +351 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_refine_face_3.inc +544 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_refine_topo_2.inc +516 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_refine_topo_3.inc +1225 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_sink_delfront_2.inc +232 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_sink_delfront_3.inc +458 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_test_bounds_2.inc +381 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_test_bounds_3.inc +619 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_timers.hpp +138 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_update_face_2.inc +550 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_update_face_3.inc +758 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_update_topo_2.inc +213 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdel_mesh/rdel_update_topo_3.inc +392 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/rdelmesh.hpp +109 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/tessellate/delaunay_scan_tria.inc +115 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/tessellate/delaunay_star_void.inc +213 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/tessellate/delaunay_tri_k.hpp +1008 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/tessellate/delaunay_tri_pred_2.hpp +303 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/tessellate/delaunay_tri_pred_3.hpp +329 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/tessellate/delaunay_tri_pred_4.hpp +367 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/tessellate/delaunay_tri_type_2.hpp +390 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/tessellate/delaunay_tri_type_3.hpp +524 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/tessellate/delaunay_tri_type_4.hpp +537 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/tessellate/delaunay_walk_mesh.inc +271 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/tessellate/laguerre_tri_pred_2.hpp +307 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/tessellate/laguerre_tri_pred_3.hpp +334 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/tessellate/laguerre_tri_pred_4.hpp +367 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/tessellate.hpp +76 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/textutil.hpp +253 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/libcpp/useropts.hpp +59 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/liblib/init_jig_t.hpp +174 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/liblib/init_msh_t.hpp +685 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/liblib/load_jig_t.hpp +448 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/liblib/load_msh_t.hpp +672 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/liblib/save_jig_t.hpp +269 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/liblib/save_msh_t.hpp +82 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/marche.hpp +540 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/msh_copy.hpp +536 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/msh_init.hpp +355 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/msh_read.hpp +1463 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/msh_save.hpp +111 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/msh_save.inc +1622 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/netcdf/COPYRIGHT.md +11 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/netcdf/README.md +81 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/netcdf/ncutil.h +517 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/netcdf/netcdf.h +2001 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/offset.hpp +267 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/rdt_save.inc +1418 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/tri_save.inc +1032 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/src/tripod.hpp +946 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/CMakeLists.txt +152 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/README.md +21 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/print.h +149 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test2d_a.c +108 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test2d_b.c +161 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test2d_c.c +172 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test2d_d.c +137 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test2d_e.c +136 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test2d_f.c +129 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test2d_g.c +81 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test2d_h.c +118 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test2d_i.c +121 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test2s_a.c +76 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test2s_b.c +135 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test2s_c.c +128 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test2s_e.c +110 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test2s_f.c +112 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test2s_g.c +104 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test2s_h.c +108 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test2s_i.c +117 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test3d_a.c +105 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test3d_b.c +144 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test3d_c.c +161 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test3d_d.c +176 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test3d_e.c +131 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test3d_f.c +123 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test3d_g.c +81 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test3d_h.c +109 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test3d_i.c +116 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/uni/test_all.c +108 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/external/jigsaw/version.txt +255 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/files/airfoil.msh +957 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/files/bunny.msh +32033 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/files/eight.msh +38607 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/files/lakes.msh +611 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/files/piece.msh +1020 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/files/wheel.msh +17734 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/__init__.py +153 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/_bin/marche +0 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/_bin/tripod +0 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/bisect.py +775 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/certify.py +296 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/def_t.py +61 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/jig_l.py +316 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/jig_t.py +352 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/jigsaw.py +633 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/libsaw.py +863 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/loadjig.py +185 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/loadmsh.py +650 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/loadprj.py +58 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/msh_l.py +293 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/msh_t.py +260 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/parse/__init__.py +0 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/parse/loadgeo.py +184 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/parse/saveoff.py +192 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/parse/savevtk.py +394 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/parse/savewav.py +160 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/prj_t.py +11 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/project.py +250 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/savejig.py +225 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/savemsh.py +654 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/saveprj.py +99 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/tools/__init__.py +0 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/tools/mathutils.py +136 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/tools/meshutils.py +162 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/tools/orthoball.py +412 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/tools/predicate.py +354 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/tools/projector.py +156 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/jigsawpy/tools/scorecard.py +684 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/pyproject.toml +36 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/requirements.txt +2 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/setup.cfg +4 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/setup.py +80 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/tests/__init__.py +0 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/tests/case_0_.py +247 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/tests/case_1_.py +182 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/tests/case_2_.py +71 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/tests/case_3_.py +82 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/tests/case_4_.py +65 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/tests/case_5_.py +106 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/tests/case_6_.py +73 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/tests/case_7_.py +51 -0
- ww3tool_resources/meshgen/unstructured_generator/jigsaw-python/tests/case_8_.py +47 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/README.md +96 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/ShiftMesh.py +47 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/config.ini +56 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/mesh_workspace/geom.msh +3 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/mesh_workspace/geom_regional.msh +511 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/mesh_workspace/grid.msh +3 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/mesh_workspace/opts.jig +9 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/mesh_workspace/opts.log +97 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/mesh_workspace/opts_regional.jig +7 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/mesh_workspace/opts_regional.log +54 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/ocn_ww3.py +572 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/plot_msh.py +227 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/InterpolateBathymetry/AddBathyToMesh.py +37 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/InterpolateBathymetry/DivideMeshNodes.py +141 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/InterpolateBathymetry/DowloadBathyData.sh +103 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/InterpolateBathymetry/FiniteElementMeshRoutines.py +228 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/InterpolateBathymetry/GaussMarkov.py +134 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/InterpolateBathymetry/InterpolateCRM.partscat.py +371 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/InterpolateBathymetry/KnitOutputBackTogether.py +41 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/InterpolateBathymetry/MakeCommonNetCDFFileFormat.py +437 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/InterpolateBathymetry/README.txt +48 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/InterpolateBathymetry/SmoothSubsampleCMEMS.py +116 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/InterpolateBathymetry/SmoothSubsampleNetCDFFiles.py +135 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/InterpolateBathymetry/meshes/HawaiiTest.msh +1689 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/BuildBoundaryPSLGwGSHHS.m +354 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/BuildBoundaryPSLGwOSM.m +351 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/DownloadShapeFiles.sh +53 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/ExtraPointsOfIntrest.m +117 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/FilterRoutinesNM.py +427 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/LonCon.m +20 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/MakeCoastalBoundariesGSHHS.m +180 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/MakeCoastalBoundariesOSM.m +183 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/MakeDfunGSHHS.m +312 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/MakeDistanceToCoastRWPS.m +219 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/MakeFiguresNWCoastal.m +9 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/MergePslgsOSMxGSHHS.m +65 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/MergePslgsOSMxGSHHS_14N230W.m +77 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/MeshGenScript.NWcoastal.py +248 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/PostProcessGrid_GSHHS.m +275 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/PostProcessGrid_GSHHSxOSM_NewOrleans.m +266 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/PostProcessGrid_NWcoastal.m +151 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/PreProcessCoastline_GSHHS.m +15 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/PreProcessCoastline_NWCoastalMesh.m +19 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/PreProcessCoastline_RWPS_GSHHSxOSM_NewOrleans.m +21 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/RWPSMeshGenScript.GSHHS.py +247 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/RWPSMeshGenScript.GSHHSxOSM.NewOrleans.py +245 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/SetPath.m +97 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/jobcard.matlab.postjigsaw +19 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/jobcard.matlab.prejigsaw +19 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/MeshGenDirectory/jobcard.python.jigsaw +20 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/README.txt +10 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/BoundaryShape2msh.m +57 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/BoundingBox.m +15 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/BoxSmoothTopo.m +51 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/BuildBoundaryPSLGfunction.m +424 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/CombineMesh.m +20 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/ComputeAdjacency.m +8 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/ComputeLengthScale_wgs84.m +32 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/ComputeLengthScale_wgs84_MEL.m +31 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/DistanceToCoast.m +58 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/Ele2Nodes.m +25 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/EleArea.m +22 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/FindOuterBndNoPSLG.m +45 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/FindOuterBndWW3.m +47 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/FindPointsAx.m +14 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/GetMatlabLibs.sh +8 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/HandEditMesh.m +57 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/InterpCoastline.m +40 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/MakeDistanceToCoastData.m +128 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/MergePslgsOSMxGSSHS.m +63 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/RemoveMeshParts.m +90 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/RemoveMissingIslands.m +94 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/RemoveMissingIslandsEle.m +120 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/RemoveMissingIslandsPoint.m +91 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/RemoveSandPoints.m +81 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/RemoveSandPointsWW3.m +73 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/SmoothCoastalBoundaries.m +181 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/SmoothSubSampleCoastlineFast.m +28 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/WriteWW3Mesh.m +81 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/WriteWW3MeshX.m +77 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/detbndy.m +99 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/edges2chains.m +87 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/edges2chainsG.m +18 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/graphics/PlotJigsawGriddedData.m +51 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/graphics/PlotJigsawPSLG.m +40 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/graphics/PlotJigsawUnstMesh.m +76 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/graphics/PlotWW3Mesh.m +77 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/insidepoly.m +15 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/joinpslg.m +74 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/kprint.m +7 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/l.m +8 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/loadmshWW3.m +166 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/patch_global.m +10 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/pslg2geom.m +17 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/remove_dead_nodes.m +29 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/submeshFast.m +32 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/submeshFastEle.m +25 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/subpslgFast.m +35 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/matlab/topo2msh.m +32 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/python/ComputeDistanceToCoast/ComputeDistanceToCoast.py +143 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/python/ComputeDistanceToCoast/ComputeDistanceToCoastConv.py +176 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/python/ComputeDistanceToCoast/FindUSadjacentGSHHSpoints.py +99 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/python/ComputeDistanceToCoast/ReadWriteCoast.py +63 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/python/ComputeDistanceToCoast/SmoothAndInterpCoastline.py +17 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/python/ComputeDistanceToCoast/SmoothAndSubsampleCoastline.py +278 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/regional/python/ComputeDistanceToCoast/SmoothAndSubsampleCoastlineP.py +94 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/spacing.py +188 -0
- ww3tool_resources/meshgen/unstructured_generator/unst_msh_gen/window_mask.py +123 -0
- ww3tool_resources/params.yml +392 -0
- ww3tool_resources/public/6.07_nml/namelists.nml +616 -0
- ww3tool_resources/public/6.07_nml/ww3_grid.nml +1390 -0
- ww3tool_resources/public/6.07_nml/ww3_multi.nml +347 -0
- ww3tool_resources/public/6.07_nml/ww3_ounf.nml +157 -0
- ww3tool_resources/public/6.07_nml/ww3_ounp.nml +317 -0
- ww3tool_resources/public/6.07_nml/ww3_prnc.nml +151 -0
- ww3tool_resources/public/6.07_nml/ww3_shel.nml +629 -0
- ww3tool_resources/public/6.07_nml/ww3_strt.inp +100 -0
- ww3tool_resources/public/6.07_nml/ww3_trnc.nml +63 -0
- ww3tool_resources/public/7.14_nml/namelists.nml +1054 -0
- ww3tool_resources/public/7.14_nml/ww3_grid.nml +1390 -0
- ww3tool_resources/public/7.14_nml/ww3_multi.nml +345 -0
- ww3tool_resources/public/7.14_nml/ww3_ounf.nml +159 -0
- ww3tool_resources/public/7.14_nml/ww3_ounp.nml +374 -0
- ww3tool_resources/public/7.14_nml/ww3_prnc.nml +153 -0
- ww3tool_resources/public/7.14_nml/ww3_shel.nml +692 -0
- ww3tool_resources/public/7.14_nml/ww3_strt.inp +100 -0
- ww3tool_resources/public/7.14_nml/ww3_trnc.nml +63 -0
- ww3tool_resources/public/globe_picker/globe_picker.html +2274 -0
- ww3tool_resources/public/globe_picker/polar_tile_map.js +246 -0
- ww3tool_resources/public/languages/en_US.json +2680 -0
- ww3tool_resources/public/languages/zh_CN.json +2679 -0
- ww3tool_resources/public/resource/logo.png +0 -0
- ww3tool_resources/public/scripts/local.sh +541 -0
- ww3tool_resources/public/scripts/server.sh +651 -0
- ww3tool_resources/public/scripts/ww3_ntfy_watch.sh +514 -0
- ww3tool_resources/src/requirements.txt +17 -0
desktop/__init__.py
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"""Desktop application and view-model adapters for the src architecture."""
|
|
2
|
+
|
|
3
|
+
__all__ = [
|
|
4
|
+
"ForcingStepViewModel",
|
|
5
|
+
"PipelineViewModel",
|
|
6
|
+
"PreprocessingWindow",
|
|
7
|
+
"create_window",
|
|
8
|
+
"main",
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def __getattr__(name):
|
|
13
|
+
if name == "ForcingStepViewModel":
|
|
14
|
+
from .view_models.forcing_step import ForcingStepViewModel
|
|
15
|
+
|
|
16
|
+
return ForcingStepViewModel
|
|
17
|
+
if name == "PipelineViewModel":
|
|
18
|
+
from .view_models.pipeline import PipelineViewModel
|
|
19
|
+
|
|
20
|
+
return PipelineViewModel
|
|
21
|
+
if name == "PreprocessingWindow":
|
|
22
|
+
from .windows.preprocessing_window import PreprocessingWindow
|
|
23
|
+
|
|
24
|
+
return PreprocessingWindow
|
|
25
|
+
if name in {"create_window", "main"}:
|
|
26
|
+
from .application import create_window, main
|
|
27
|
+
|
|
28
|
+
return {"create_window": create_window, "main": main}[name]
|
|
29
|
+
raise AttributeError(name)
|
desktop/_repo_root.py
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"""仓库根目录解析(desktop 专用)。
|
|
2
|
+
|
|
3
|
+
``WW3TOOL_ROOT`` 环境变量优先(pip/brew 安装形态下指向含
|
|
4
|
+
meshgen/public/params.yml 的仓库),否则按仓库布局从本文件推导:
|
|
5
|
+
``<仓库根>/src/desktop/``,向上 2 级即仓库根。
|
|
6
|
+
|
|
7
|
+
[EN] Repo-root resolution for the desktop package: WW3TOOL_ROOT env wins
|
|
8
|
+
(packaged installs); otherwise inferred from the repo layout.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
import os
|
|
12
|
+
from pathlib import Path
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def repo_root() -> Path:
|
|
16
|
+
env_root = os.environ.get("WW3TOOL_ROOT")
|
|
17
|
+
if env_root:
|
|
18
|
+
return Path(env_root).expanduser().resolve()
|
|
19
|
+
# 仓库形态:从本文件向上找到含 params.yml 与 run.py 的仓库根
|
|
20
|
+
# [EN] Repo layout: walk up to the dir holding both params.yml and run.py.
|
|
21
|
+
_d = Path(__file__).resolve().parent
|
|
22
|
+
while True:
|
|
23
|
+
if (_d / "params.yml").is_file() and (_d / "run.py").is_file():
|
|
24
|
+
return _d
|
|
25
|
+
if _d.parent == _d:
|
|
26
|
+
break
|
|
27
|
+
_d = _d.parent
|
|
28
|
+
# 装包形态:site-packages 里的 ww3tool_resources 自带全部运行资源
|
|
29
|
+
# [EN] Packaged install: ww3tool_resources ships the runtime resources.
|
|
30
|
+
try:
|
|
31
|
+
import ww3tool_resources
|
|
32
|
+
|
|
33
|
+
pkg_root = Path(ww3tool_resources.__file__).resolve().parent
|
|
34
|
+
if (pkg_root / "params.yml").is_file():
|
|
35
|
+
return pkg_root
|
|
36
|
+
except Exception:
|
|
37
|
+
pass
|
|
38
|
+
return Path(__file__).resolve().parents[2] # 兜底:原仓库推断
|
desktop/application.py
ADDED
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
"""Desktop startup for the workflow-backed application."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import sys
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def _select_initial_work_directory(window: Any) -> bool:
|
|
10
|
+
"""Prompt for a work directory on startup. Returns False if the user cancels."""
|
|
11
|
+
from .windows.work_folder_dialog import WorkFolderDialog
|
|
12
|
+
|
|
13
|
+
dialog = WorkFolderDialog(parent=window, is_startup=True)
|
|
14
|
+
if dialog.exec() != dialog.DialogCode.Accepted or not dialog.selected_folder:
|
|
15
|
+
return False
|
|
16
|
+
if hasattr(window, "set_work_directory"):
|
|
17
|
+
window.set_work_directory(dialog.selected_folder)
|
|
18
|
+
return True
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def create_window():
|
|
22
|
+
from .windows.preprocessing_window import create_preprocessing_window
|
|
23
|
+
|
|
24
|
+
return create_preprocessing_window()
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def main(argv: list[str] | None = None) -> int:
|
|
28
|
+
# [EN] Must set AA_ShareOpenGLContexts before QApplication for QWebEngineView.
|
|
29
|
+
import PyQt6.QtCore
|
|
30
|
+
PyQt6.QtCore.QCoreApplication.setAttribute(
|
|
31
|
+
PyQt6.QtCore.Qt.ApplicationAttribute.AA_ShareOpenGLContexts
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
try:
|
|
35
|
+
from PyQt6.QtWidgets import QApplication
|
|
36
|
+
except ImportError as exc:
|
|
37
|
+
raise SystemExit(
|
|
38
|
+
"无法启动桌面界面:请先安装 PyQt6 依赖 "
|
|
39
|
+
"(python3 -m pip install -r src/requirements.txt)"
|
|
40
|
+
) from exc
|
|
41
|
+
|
|
42
|
+
# [EN] Validate root params.yml paths at startup (same as CLI/shell).
|
|
43
|
+
# Incompatible or non-existent paths are auto-corrected before any config is loaded.
|
|
44
|
+
try:
|
|
45
|
+
from workflows.infrastructure.runtime_config import sanitize_root_params_paths
|
|
46
|
+
sanitize_root_params_paths()
|
|
47
|
+
except Exception:
|
|
48
|
+
pass
|
|
49
|
+
|
|
50
|
+
arguments = [sys.argv[0], *(argv if argv is not None else sys.argv[1:])]
|
|
51
|
+
app = QApplication(arguments)
|
|
52
|
+
from .branding import load_logo_icon, apply_window_logo
|
|
53
|
+
|
|
54
|
+
icon = load_logo_icon()
|
|
55
|
+
if icon is not None:
|
|
56
|
+
app.setWindowIcon(icon)
|
|
57
|
+
|
|
58
|
+
window = create_window()
|
|
59
|
+
apply_window_logo(window)
|
|
60
|
+
window.show()
|
|
61
|
+
if not _select_initial_work_directory(window):
|
|
62
|
+
return 0
|
|
63
|
+
return app.exec()
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"""Run workflow tasks off the UI thread and marshal results back to Qt."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import threading
|
|
6
|
+
import traceback
|
|
7
|
+
import uuid
|
|
8
|
+
from typing import Callable
|
|
9
|
+
|
|
10
|
+
from PyQt6 import QtCore
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class _BackgroundRunnerBridge(QtCore.QObject):
|
|
14
|
+
finished = QtCore.pyqtSignal(str, object)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class BackgroundRunner:
|
|
18
|
+
"""Runs callables on daemon threads and delivers results on the UI thread."""
|
|
19
|
+
|
|
20
|
+
def __init__(self, parent: QtCore.QObject | None = None) -> None:
|
|
21
|
+
self._bridge = _BackgroundRunnerBridge(parent)
|
|
22
|
+
self._bridge.finished.connect(self._dispatch, QtCore.Qt.ConnectionType.QueuedConnection)
|
|
23
|
+
self._callbacks: dict[str, Callable[[object], None]] = {}
|
|
24
|
+
|
|
25
|
+
def run(self, task: Callable[[], object], on_done: Callable[[object], None]) -> str:
|
|
26
|
+
token = uuid.uuid4().hex
|
|
27
|
+
self._callbacks[token] = on_done
|
|
28
|
+
|
|
29
|
+
def _worker() -> None:
|
|
30
|
+
try:
|
|
31
|
+
result = task()
|
|
32
|
+
except Exception as exc:
|
|
33
|
+
traceback.print_exc()
|
|
34
|
+
result = {"success": False, "error": str(exc)}
|
|
35
|
+
self._bridge.finished.emit(token, result)
|
|
36
|
+
|
|
37
|
+
threading.Thread(target=_worker, daemon=True).start()
|
|
38
|
+
return token
|
|
39
|
+
|
|
40
|
+
def _dispatch(self, token: str, result: object) -> None:
|
|
41
|
+
callback = self._callbacks.pop(token, None)
|
|
42
|
+
if callback is not None:
|
|
43
|
+
try:
|
|
44
|
+
callback(result)
|
|
45
|
+
except Exception:
|
|
46
|
+
traceback.print_exc()
|
desktop/branding.py
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
"""Application branding assets (window / title bar icon)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from typing import Any
|
|
7
|
+
|
|
8
|
+
from PyQt6.QtGui import QIcon
|
|
9
|
+
|
|
10
|
+
from ._repo_root import repo_root
|
|
11
|
+
|
|
12
|
+
LOGO_PATH = repo_root() / "public" / "resource" / "logo.png"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def load_logo_icon() -> QIcon | None:
|
|
16
|
+
if not LOGO_PATH.is_file():
|
|
17
|
+
return None
|
|
18
|
+
icon = QIcon(str(LOGO_PATH))
|
|
19
|
+
return icon if not icon.isNull() else None
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def apply_window_logo(window: Any) -> None:
|
|
23
|
+
"""Set app logo on the window and FluentTitleBar icon label."""
|
|
24
|
+
icon = load_logo_icon()
|
|
25
|
+
if icon is None:
|
|
26
|
+
return
|
|
27
|
+
window.setWindowIcon(icon)
|
|
28
|
+
title_bar = getattr(window, "titleBar", None)
|
|
29
|
+
if title_bar is not None and hasattr(title_bar, "setIcon"):
|
|
30
|
+
title_bar.setIcon(icon)
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""Reusable desktop presentation components."""
|
|
2
|
+
|
|
3
|
+
from .combo_box import left_align_combo_text
|
|
4
|
+
from .image_gallery_drawer import ImageGalleryDrawer, ImageGalleryHost, ImageGalleryPanel
|
|
5
|
+
|
|
6
|
+
__all__ = [
|
|
7
|
+
"left_align_combo_text",
|
|
8
|
+
"ImageGalleryDrawer",
|
|
9
|
+
"ImageGalleryHost",
|
|
10
|
+
"ImageGalleryPanel",
|
|
11
|
+
]
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
"""Reusable inline map preview for editable geographic bounds."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import json
|
|
6
|
+
import math
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
from PyQt6.QtCore import pyqtSignal, QRectF, QTimer, QUrl, QUrlQuery
|
|
10
|
+
from PyQt6.QtGui import QColor, QPainterPath, QRegion
|
|
11
|
+
from PyQt6.QtWebEngineCore import QWebEngineSettings
|
|
12
|
+
from PyQt6.QtWidgets import QSizePolicy
|
|
13
|
+
|
|
14
|
+
from .._repo_root import repo_root
|
|
15
|
+
from .globe_picker_dialog import MapWebEngineView, current_map_language, current_map_type
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
class BoundsMapPreview(MapWebEngineView):
|
|
19
|
+
"""Show a blue outline for four bound fields without map editing controls."""
|
|
20
|
+
|
|
21
|
+
expand_requested = pyqtSignal()
|
|
22
|
+
|
|
23
|
+
def __init__(self, parent=None) -> None:
|
|
24
|
+
super().__init__(parent)
|
|
25
|
+
self._page_loaded = False
|
|
26
|
+
self._regions: list[dict[str, object]] = []
|
|
27
|
+
self._field_regions: list[dict[str, object]] = []
|
|
28
|
+
self._field_connections: list[tuple[object, object]] = []
|
|
29
|
+
self._applying_web_move = False
|
|
30
|
+
self._move_poll_in_flight = False
|
|
31
|
+
self._update_timer = QTimer(self)
|
|
32
|
+
self._update_timer.setSingleShot(True)
|
|
33
|
+
self._update_timer.setInterval(180)
|
|
34
|
+
self._update_timer.timeout.connect(self._update_from_bound_fields)
|
|
35
|
+
self._move_poll_timer = QTimer(self)
|
|
36
|
+
self._move_poll_timer.setInterval(120)
|
|
37
|
+
self._move_poll_timer.timeout.connect(self._poll_preview_move)
|
|
38
|
+
|
|
39
|
+
self.setSizePolicy(QSizePolicy.Policy.Expanding, QSizePolicy.Policy.Fixed)
|
|
40
|
+
self.setFixedHeight(210)
|
|
41
|
+
self.setZoomFactor(1.0)
|
|
42
|
+
page = self.page()
|
|
43
|
+
page.setBackgroundColor(QColor("#ffffff"))
|
|
44
|
+
settings = page.settings()
|
|
45
|
+
settings.setAttribute(QWebEngineSettings.WebAttribute.LocalContentCanAccessRemoteUrls, True)
|
|
46
|
+
settings.setAttribute(QWebEngineSettings.WebAttribute.WebGLEnabled, True)
|
|
47
|
+
page.loadFinished.connect(self._on_page_loaded)
|
|
48
|
+
|
|
49
|
+
html_path = repo_root() / "public" / "globe_picker" / "globe_picker.html"
|
|
50
|
+
url = QUrl.fromLocalFile(str(html_path.resolve()))
|
|
51
|
+
query = QUrlQuery()
|
|
52
|
+
query.addQueryItem("mode", "preview")
|
|
53
|
+
query.addQueryItem("lang", current_map_language())
|
|
54
|
+
query.addQueryItem("mapType", current_map_type())
|
|
55
|
+
url.setQuery(query)
|
|
56
|
+
self.load(url)
|
|
57
|
+
|
|
58
|
+
def bind_fields(
|
|
59
|
+
self, *, west, east, south, north, color: str = "#1677d2", label: str = ""
|
|
60
|
+
) -> None:
|
|
61
|
+
self._clear_field_bindings()
|
|
62
|
+
self.add_bound_fields(
|
|
63
|
+
west=west, east=east, south=south, north=north, color=color, label=label
|
|
64
|
+
)
|
|
65
|
+
|
|
66
|
+
def add_bound_fields(
|
|
67
|
+
self, *, west, east, south, north, color: str = "#1677d2", label: str = ""
|
|
68
|
+
) -> None:
|
|
69
|
+
fields = (west, east, south, north)
|
|
70
|
+
self._field_regions.append({"fields": fields, "color": color, "label": label})
|
|
71
|
+
for field in fields:
|
|
72
|
+
slot = lambda *_: self._schedule_field_update()
|
|
73
|
+
field.textChanged.connect(slot)
|
|
74
|
+
self._field_connections.append((field, slot))
|
|
75
|
+
self._update_timer.start()
|
|
76
|
+
|
|
77
|
+
def replace_bound_fields(self, bindings: list[dict[str, object]]) -> None:
|
|
78
|
+
"""Replace all live field bindings, for example after nested levels change."""
|
|
79
|
+
self._clear_field_bindings()
|
|
80
|
+
for binding in bindings:
|
|
81
|
+
self.add_bound_fields(**binding)
|
|
82
|
+
if not bindings:
|
|
83
|
+
self.clear_bounds()
|
|
84
|
+
# 立即同步 regions,确保 regions() 返回最新数据
|
|
85
|
+
self._update_from_bound_fields()
|
|
86
|
+
|
|
87
|
+
def _clear_field_bindings(self) -> None:
|
|
88
|
+
self._update_timer.stop()
|
|
89
|
+
for field, slot in self._field_connections:
|
|
90
|
+
try:
|
|
91
|
+
field.textChanged.disconnect(slot)
|
|
92
|
+
except (RuntimeError, TypeError):
|
|
93
|
+
pass
|
|
94
|
+
self._field_connections.clear()
|
|
95
|
+
self._field_regions.clear()
|
|
96
|
+
|
|
97
|
+
def set_bounds(self, west: float, east: float, south: float, north: float) -> None:
|
|
98
|
+
self.set_regions([{"west": west, "east": east, "south": south, "north": north}])
|
|
99
|
+
|
|
100
|
+
def set_regions(self, regions: list[dict[str, object]]) -> None:
|
|
101
|
+
self._regions = [dict(region) for region in regions]
|
|
102
|
+
self._sync_regions()
|
|
103
|
+
|
|
104
|
+
def clear_bounds(self) -> None:
|
|
105
|
+
self.set_regions([])
|
|
106
|
+
|
|
107
|
+
def refresh(self) -> None:
|
|
108
|
+
self._update_timer.stop()
|
|
109
|
+
self._update_from_bound_fields()
|
|
110
|
+
|
|
111
|
+
def regions(self) -> list[dict[str, object]]:
|
|
112
|
+
return [dict(region) for region in self._regions]
|
|
113
|
+
|
|
114
|
+
def reload_map_type(self) -> None:
|
|
115
|
+
url = self.url()
|
|
116
|
+
query = QUrlQuery(url)
|
|
117
|
+
query.removeAllQueryItems("mapType")
|
|
118
|
+
query.addQueryItem("mapType", current_map_type())
|
|
119
|
+
url.setQuery(query)
|
|
120
|
+
self._page_loaded = False
|
|
121
|
+
self.load(url)
|
|
122
|
+
|
|
123
|
+
def resizeEvent(self, event) -> None:
|
|
124
|
+
super().resizeEvent(event)
|
|
125
|
+
path = QPainterPath()
|
|
126
|
+
path.addRoundedRect(QRectF(self.rect()), 8.0, 8.0)
|
|
127
|
+
self.setMask(QRegion(path.toFillPolygon().toPolygon()))
|
|
128
|
+
|
|
129
|
+
def showEvent(self, event) -> None:
|
|
130
|
+
super().showEvent(event)
|
|
131
|
+
if self._page_loaded:
|
|
132
|
+
self._move_poll_timer.start()
|
|
133
|
+
self._restore_host_frameless()
|
|
134
|
+
|
|
135
|
+
def hideEvent(self, event) -> None:
|
|
136
|
+
self._move_poll_timer.stop()
|
|
137
|
+
super().hideEvent(event)
|
|
138
|
+
|
|
139
|
+
def _on_page_loaded(self, ok: bool) -> None:
|
|
140
|
+
self._page_loaded = ok
|
|
141
|
+
if ok:
|
|
142
|
+
self._sync_regions()
|
|
143
|
+
if self.isVisible():
|
|
144
|
+
self._move_poll_timer.start()
|
|
145
|
+
self._restore_host_frameless()
|
|
146
|
+
QTimer.singleShot(0, self._restore_host_frameless)
|
|
147
|
+
QTimer.singleShot(100, self._restore_host_frameless)
|
|
148
|
+
|
|
149
|
+
def _schedule_field_update(self) -> None:
|
|
150
|
+
if not self._applying_web_move:
|
|
151
|
+
self._update_timer.start()
|
|
152
|
+
|
|
153
|
+
def _poll_preview_move(self) -> None:
|
|
154
|
+
if not self._page_loaded or self._move_poll_in_flight:
|
|
155
|
+
return
|
|
156
|
+
self._move_poll_in_flight = True
|
|
157
|
+
self.page().runJavaScript(
|
|
158
|
+
"(function(){"
|
|
159
|
+
"var r=window.__previewMoveResult||null;"
|
|
160
|
+
"window.__previewMoveResult=null;"
|
|
161
|
+
"var x=window.__expandRequested||false;"
|
|
162
|
+
"window.__expandRequested=false;"
|
|
163
|
+
"if(x)return {_expand:true};"
|
|
164
|
+
"return r;"
|
|
165
|
+
"})()",
|
|
166
|
+
self._on_preview_move,
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
def _on_preview_move(self, result: object) -> None:
|
|
170
|
+
self._move_poll_in_flight = False
|
|
171
|
+
if not isinstance(result, dict):
|
|
172
|
+
return
|
|
173
|
+
if result.get("_expand"):
|
|
174
|
+
QTimer.singleShot(0, self.expand_requested.emit)
|
|
175
|
+
return
|
|
176
|
+
try:
|
|
177
|
+
index = int(result["index"])
|
|
178
|
+
bounds = tuple(float(result[key]) for key in ("west", "east", "south", "north"))
|
|
179
|
+
except (KeyError, TypeError, ValueError):
|
|
180
|
+
return
|
|
181
|
+
if index < 0 or index >= len(self._field_regions):
|
|
182
|
+
return
|
|
183
|
+
west, east, south, north = bounds
|
|
184
|
+
if not all(math.isfinite(value) for value in bounds):
|
|
185
|
+
return
|
|
186
|
+
if south >= north or south < -90 or north > 90 or east <= west or east - west > 360:
|
|
187
|
+
return
|
|
188
|
+
|
|
189
|
+
fields = self._field_regions[index]["fields"]
|
|
190
|
+
self._applying_web_move = True
|
|
191
|
+
try:
|
|
192
|
+
for field, value in zip(fields, bounds):
|
|
193
|
+
field.setText(f"{value:.4f}")
|
|
194
|
+
finally:
|
|
195
|
+
self._applying_web_move = False
|
|
196
|
+
|
|
197
|
+
for region in self._regions:
|
|
198
|
+
if int(region.get("fieldIndex", -1)) == index:
|
|
199
|
+
region.update({"west": west, "east": east, "south": south, "north": north})
|
|
200
|
+
break
|
|
201
|
+
|
|
202
|
+
def _update_from_bound_fields(self) -> None:
|
|
203
|
+
if not self._field_regions:
|
|
204
|
+
return
|
|
205
|
+
regions: list[dict[str, object]] = []
|
|
206
|
+
for field_index, binding in enumerate(self._field_regions):
|
|
207
|
+
fields = binding["fields"]
|
|
208
|
+
try:
|
|
209
|
+
west, east, south, north = (
|
|
210
|
+
float(field.text().strip()) for field in fields
|
|
211
|
+
)
|
|
212
|
+
except ValueError:
|
|
213
|
+
continue
|
|
214
|
+
if not all(math.isfinite(value) for value in (west, east, south, north)):
|
|
215
|
+
continue
|
|
216
|
+
while east <= west:
|
|
217
|
+
east += 360
|
|
218
|
+
if south >= north or south < -90 or north > 90 or east - west > 360:
|
|
219
|
+
continue
|
|
220
|
+
regions.append(
|
|
221
|
+
{
|
|
222
|
+
"west": west,
|
|
223
|
+
"east": east,
|
|
224
|
+
"south": south,
|
|
225
|
+
"north": north,
|
|
226
|
+
"color": binding["color"],
|
|
227
|
+
"label": binding["label"],
|
|
228
|
+
"width": 1.5,
|
|
229
|
+
"fieldIndex": field_index,
|
|
230
|
+
}
|
|
231
|
+
)
|
|
232
|
+
self.set_regions(regions)
|
|
233
|
+
|
|
234
|
+
def _restore_host_frameless(self) -> None:
|
|
235
|
+
host = self.window()
|
|
236
|
+
if host is self:
|
|
237
|
+
return
|
|
238
|
+
update_frameless = getattr(host, "updateFrameless", None)
|
|
239
|
+
if callable(update_frameless):
|
|
240
|
+
update_frameless()
|
|
241
|
+
set_system_buttons = getattr(host, "setSystemTitleBarButtonVisible", None)
|
|
242
|
+
if callable(set_system_buttons):
|
|
243
|
+
set_system_buttons(False)
|
|
244
|
+
title_bar = getattr(host, "titleBar", None)
|
|
245
|
+
if title_bar is not None:
|
|
246
|
+
title_bar.raise_()
|
|
247
|
+
|
|
248
|
+
def _sync_regions(self) -> None:
|
|
249
|
+
if not self._page_loaded:
|
|
250
|
+
return
|
|
251
|
+
payload = json.dumps(self._regions, separators=(",", ":"))
|
|
252
|
+
self.page().runJavaScript(f"window.__setPreviewRegions({payload})")
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"""Presentation helpers shared by desktop combo boxes."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from collections.abc import Iterable
|
|
6
|
+
|
|
7
|
+
from PyQt6.QtCore import Qt, QTimer
|
|
8
|
+
from PyQt6.QtWidgets import QWidget
|
|
9
|
+
from qfluentwidgets import ComboBox
|
|
10
|
+
|
|
11
|
+
from workflows.domain.parameter_catalog import canonical_file_split
|
|
12
|
+
from workflows.support.translations import tr
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def add_labeled_combo_items(combo: ComboBox, items: Iterable[tuple[str, str]]) -> None:
|
|
16
|
+
"""qfluentwidgets ``addItem(text, icon, userData)`` 第二参是 icon,枚举值必须用 ``userData=``。
|
|
17
|
+
|
|
18
|
+
[EN] In qfluentwidgets, ``addItem(text, icon, userData)`` treats the second
|
|
19
|
+
parameter as icon; enum values must be passed with ``userData=``.
|
|
20
|
+
"""
|
|
21
|
+
for label, value in items:
|
|
22
|
+
combo.addItem(label, userData=value)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
def combo_selected_user_data(combo: ComboBox) -> str:
|
|
26
|
+
"""读取当前项 ``userData``;缺失时回退 ``currentText``。
|
|
27
|
+
|
|
28
|
+
[EN] Read the current item's ``userData``; fall back to ``currentText`` when missing.
|
|
29
|
+
"""
|
|
30
|
+
data = combo.itemData(combo.currentIndex())
|
|
31
|
+
if data is not None and str(data).strip():
|
|
32
|
+
return str(data).strip()
|
|
33
|
+
return combo.currentText().strip()
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def file_split_combo_items() -> list[tuple[str, str]]:
|
|
37
|
+
"""``ww3.file_split`` 下拉项:展示文案 + 规范枚举值。
|
|
38
|
+
|
|
39
|
+
[EN] Drop-down items for ``ww3.file_split``: display text + canonical enum value.
|
|
40
|
+
"""
|
|
41
|
+
return [
|
|
42
|
+
(tr("file_split_single", "单文件"), "single"),
|
|
43
|
+
(tr("file_split_hour", "小时"), "hour"),
|
|
44
|
+
(tr("file_split_day", "天"), "day"),
|
|
45
|
+
(tr("file_split_month", "月"), "month"),
|
|
46
|
+
(tr("file_split_year", "年"), "year"),
|
|
47
|
+
]
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def current_file_split_from_combo(combo: ComboBox, *, default: str = "year") -> str:
|
|
51
|
+
"""从下拉框读出规范的 ``ww3.file_split`` 枚举值。
|
|
52
|
+
|
|
53
|
+
[EN] Read the canonical ``ww3.file_split`` enum value from the combo box.
|
|
54
|
+
"""
|
|
55
|
+
return canonical_file_split(combo_selected_user_data(combo), default=default)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
def select_file_split_combo(combo: ComboBox, value: object, *, default: str = "year") -> None:
|
|
59
|
+
"""按规范值选中 file_split 项;兼容旧值 ``none`` 与误存的展示文案。
|
|
60
|
+
|
|
61
|
+
[EN] Select the file_split item by canonical value; compatible with the legacy
|
|
62
|
+
value ``none`` and mistakenly stored display text.
|
|
63
|
+
"""
|
|
64
|
+
selected = canonical_file_split(value, default=default)
|
|
65
|
+
for index in range(combo.count()):
|
|
66
|
+
data = combo.itemData(index)
|
|
67
|
+
if str(data or "").strip().lower() == selected:
|
|
68
|
+
combo.setCurrentIndex(index)
|
|
69
|
+
return
|
|
70
|
+
label_by_value = {item_value: item_label for item_label, item_value in file_split_combo_items()}
|
|
71
|
+
target_label = label_by_value.get(selected)
|
|
72
|
+
if target_label:
|
|
73
|
+
for index in range(combo.count()):
|
|
74
|
+
if combo.itemText(index) == target_label:
|
|
75
|
+
combo.setCurrentIndex(index)
|
|
76
|
+
return
|
|
77
|
+
if combo.count():
|
|
78
|
+
combo.setCurrentIndex(0)
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def left_align_combo_text(combo: QWidget) -> None:
|
|
82
|
+
"""Keep combo display text aligned with the left-side form fields."""
|
|
83
|
+
|
|
84
|
+
def apply_alignment() -> None:
|
|
85
|
+
line_edit_factory = getattr(combo, "lineEdit", None)
|
|
86
|
+
if callable(line_edit_factory):
|
|
87
|
+
line_edit = line_edit_factory()
|
|
88
|
+
if line_edit is not None:
|
|
89
|
+
line_edit.setAlignment(Qt.AlignmentFlag.AlignLeft | Qt.AlignmentFlag.AlignVCenter)
|
|
90
|
+
|
|
91
|
+
if "text-align: left" not in combo.styleSheet():
|
|
92
|
+
combo.setStyleSheet(
|
|
93
|
+
f"{combo.styleSheet()}\n"
|
|
94
|
+
"QComboBox, ComboBox, EditableComboBox { text-align: left; }\n"
|
|
95
|
+
)
|
|
96
|
+
|
|
97
|
+
apply_alignment()
|
|
98
|
+
QTimer.singleShot(0, apply_alignment)
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"""Progress feedback displayed while forcing files are prepared."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from PyQt6 import QtCore, QtGui, QtWidgets
|
|
6
|
+
from PyQt6.QtCore import Qt
|
|
7
|
+
from qfluentwidgets import MessageBoxBase, themeColor
|
|
8
|
+
from workflows.support.translations import tr
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class _RotatingSpinner(QtWidgets.QWidget):
|
|
12
|
+
def __init__(self, parent=None, diameter: int = 52) -> None:
|
|
13
|
+
super().__init__(parent)
|
|
14
|
+
self._angle = 0
|
|
15
|
+
self._thickness = 5
|
|
16
|
+
self.setFixedSize(diameter, diameter)
|
|
17
|
+
self._timer = QtCore.QTimer(self)
|
|
18
|
+
self._timer.setInterval(16)
|
|
19
|
+
self._timer.timeout.connect(self._advance)
|
|
20
|
+
self._timer.start()
|
|
21
|
+
|
|
22
|
+
def _advance(self) -> None:
|
|
23
|
+
self._angle = (self._angle + 12) % 360
|
|
24
|
+
self.update()
|
|
25
|
+
|
|
26
|
+
def paintEvent(self, event) -> None:
|
|
27
|
+
_ = event
|
|
28
|
+
rect = self.rect().adjusted(6, 6, -6, -6)
|
|
29
|
+
painter = QtGui.QPainter(self)
|
|
30
|
+
painter.setRenderHint(QtGui.QPainter.RenderHint.Antialiasing)
|
|
31
|
+
|
|
32
|
+
track_pen = QtGui.QPen(QtGui.QColor(220, 224, 230), self._thickness)
|
|
33
|
+
track_pen.setCapStyle(Qt.PenCapStyle.RoundCap)
|
|
34
|
+
painter.setPen(track_pen)
|
|
35
|
+
painter.drawArc(rect, 0, 360 * 16)
|
|
36
|
+
|
|
37
|
+
accent = themeColor()
|
|
38
|
+
if not accent or not accent.isValid():
|
|
39
|
+
accent = self.palette().color(QtGui.QPalette.ColorRole.Highlight)
|
|
40
|
+
arc_pen = QtGui.QPen(accent, self._thickness)
|
|
41
|
+
arc_pen.setCapStyle(Qt.PenCapStyle.RoundCap)
|
|
42
|
+
painter.setPen(arc_pen)
|
|
43
|
+
painter.drawArc(rect, int(-self._angle * 16), int(110 * 16))
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
class ForcingProgressDialog(MessageBoxBase):
|
|
47
|
+
"""Legacy-aligned wait dialog for Step 2 file preparation."""
|
|
48
|
+
|
|
49
|
+
def __init__(self, parent, message: str | None = None) -> None:
|
|
50
|
+
super().__init__(parent)
|
|
51
|
+
message = message or tr("please_wait", "请稍候...")
|
|
52
|
+
self.setWindowTitle("")
|
|
53
|
+
self.hideYesButton()
|
|
54
|
+
self.hideCancelButton()
|
|
55
|
+
self.buttonLayout.parent().setVisible(False)
|
|
56
|
+
if hasattr(self, "setClosableOnMaskClicked"):
|
|
57
|
+
self.setClosableOnMaskClicked(True)
|
|
58
|
+
|
|
59
|
+
container = QtWidgets.QWidget(self)
|
|
60
|
+
layout = QtWidgets.QVBoxLayout(container)
|
|
61
|
+
layout.setContentsMargins(24, 16, 24, 16)
|
|
62
|
+
layout.setSpacing(14)
|
|
63
|
+
layout.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
|
64
|
+
|
|
65
|
+
layout.addWidget(_RotatingSpinner(container, diameter=56), alignment=Qt.AlignmentFlag.AlignCenter)
|
|
66
|
+
|
|
67
|
+
title = QtWidgets.QLabel(tr("forcing_progress_title", "正在处理强迫场文件..."))
|
|
68
|
+
title.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
|
69
|
+
title.setStyleSheet("font-size: 18px; font-weight: 600;")
|
|
70
|
+
layout.addWidget(title)
|
|
71
|
+
|
|
72
|
+
self._message_label = QtWidgets.QLabel(message)
|
|
73
|
+
self._message_label.setAlignment(Qt.AlignmentFlag.AlignCenter)
|
|
74
|
+
self._message_label.setWordWrap(True)
|
|
75
|
+
self._message_label.setStyleSheet("font-size: 13px;")
|
|
76
|
+
layout.addWidget(self._message_label)
|
|
77
|
+
|
|
78
|
+
self.viewLayout.addWidget(container, 1)
|
|
79
|
+
self.setMinimumWidth(420)
|
|
80
|
+
self.setMinimumHeight(220)
|
|
81
|
+
self.setWindowModality(QtCore.Qt.WindowModality.WindowModal)
|
|
82
|
+
|
|
83
|
+
def set_message(self, message: str) -> None:
|
|
84
|
+
self._message_label.setText(message)
|