wrfrun 0.1.9__py3-none-any.whl → 0.2.0__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.
- wrfrun/cli.py +7 -4
- wrfrun/core/base.py +44 -14
- wrfrun/core/config.py +184 -28
- wrfrun/core/error.py +8 -1
- wrfrun/core/server.py +27 -10
- wrfrun/data.py +14 -16
- wrfrun/extension/littler/core.py +3 -3
- wrfrun/extension/utils.py +3 -2
- wrfrun/model/plot.py +7 -2
- wrfrun/model/utils.py +4 -3
- wrfrun/model/wrf/core.py +49 -37
- wrfrun/model/wrf/geodata.py +2 -1
- wrfrun/model/wrf/namelist.py +3 -4
- wrfrun/model/wrf/utils.py +3 -2
- wrfrun/model/wrf/vtable.py +9 -6
- wrfrun/res/__init__.py +15 -3
- wrfrun/res/config/config.template.toml +7 -0
- wrfrun/run.py +21 -5
- wrfrun/scheduler/lsf.py +3 -1
- wrfrun/scheduler/pbs.py +3 -1
- wrfrun/scheduler/script.py +4 -2
- wrfrun/scheduler/slurm.py +3 -1
- wrfrun/scheduler/utils.py +2 -2
- wrfrun/workspace/core.py +4 -2
- wrfrun/workspace/wrf.py +50 -6
- {wrfrun-0.1.9.dist-info → wrfrun-0.2.0.dist-info}/METADATA +1 -1
- {wrfrun-0.1.9.dist-info → wrfrun-0.2.0.dist-info}/RECORD +29 -29
- {wrfrun-0.1.9.dist-info → wrfrun-0.2.0.dist-info}/WHEEL +0 -0
- {wrfrun-0.1.9.dist-info → wrfrun-0.2.0.dist-info}/entry_points.txt +0 -0
wrfrun/run.py
CHANGED
|
@@ -7,7 +7,7 @@ import threading
|
|
|
7
7
|
from os.path import abspath, dirname
|
|
8
8
|
from typing import Optional, Tuple, Union
|
|
9
9
|
|
|
10
|
-
from .core import ExecConfigRecorder, WRFRUNConfig, WRFRunBasicError, WRFRunServer, WRFRunServerHandler, replay_config_generator, stop_server
|
|
10
|
+
from .core import ExecConfigRecorder, WRFRUNConfig, init_wrfrun_config, WRFRunBasicError, WRFRunServer, WRFRunServerHandler, replay_config_generator, stop_server
|
|
11
11
|
from .data import prepare_wps_input_data
|
|
12
12
|
from .model import clear_model_logs, generate_domain_area
|
|
13
13
|
from .scheduler import in_job_scheduler, prepare_scheduler_script
|
|
@@ -41,16 +41,29 @@ class WRFRun:
|
|
|
41
41
|
_instance = None
|
|
42
42
|
_initialized = False
|
|
43
43
|
|
|
44
|
-
def __init__(
|
|
44
|
+
def __init__(
|
|
45
|
+
self, config_file: str, init_workspace=True,
|
|
46
|
+
start_server=False, submit_job=False, prepare_wps_data=False,
|
|
47
|
+
wps_data_area: Optional[Tuple[int, int, int, int]] = None,
|
|
48
|
+
skip_domain_confirm=False
|
|
49
|
+
):
|
|
45
50
|
"""
|
|
46
51
|
WRFRun, a context class to achieve some goals before and after running WRF, like save a copy of config file, start and close WRFRunServer.
|
|
47
52
|
|
|
48
53
|
:param config_file: ``wrfrun`` config file's path.
|
|
54
|
+
:type config_file: str
|
|
49
55
|
:param init_workspace: If True, clean old files in workspace and re-create it.
|
|
56
|
+
:type init_workspace: bool
|
|
50
57
|
:param start_server: Whether to start WRFRunServer, defaults to True.
|
|
58
|
+
:type start_server: bool
|
|
51
59
|
:param submit_job: If commit this task to the PBS system, defaults to True.
|
|
60
|
+
:type submit_job: bool
|
|
52
61
|
:param prepare_wps_data: If True, download input datas for WPS first.
|
|
62
|
+
:type prepare_wps_data: bool
|
|
53
63
|
:param wps_data_area: If ``prepare_wps_data==True``, you need to give the area range of input data so download function can download data from ERA5.
|
|
64
|
+
:type wps_data_area: tuple
|
|
65
|
+
:param skip_domain_confirm: If ``True``, skip domain confirm.
|
|
66
|
+
:type skip_domain_confirm: bool
|
|
54
67
|
:return:
|
|
55
68
|
"""
|
|
56
69
|
if self._initialized:
|
|
@@ -67,13 +80,14 @@ class WRFRun:
|
|
|
67
80
|
self._init_workspace = init_workspace
|
|
68
81
|
self._prepare_wps_data = prepare_wps_data
|
|
69
82
|
self._wps_data_area = wps_data_area
|
|
83
|
+
self._skip_domain_confirm = skip_domain_confirm
|
|
70
84
|
self._entry_file_path = abspath(sys.argv[0])
|
|
71
85
|
self._entry_file_dir_path = dirname(self._entry_file_path)
|
|
72
86
|
self._replay_configs = None
|
|
73
87
|
|
|
74
88
|
# make sure we can read the config file, because sometimes the user may run the Python script in a different path.
|
|
75
89
|
abs_config_path = f"{self._entry_file_dir_path}/{config_file}"
|
|
76
|
-
|
|
90
|
+
init_wrfrun_config(abs_config_path)
|
|
77
91
|
|
|
78
92
|
self._record_output_path = None
|
|
79
93
|
self._record_include_data = False
|
|
@@ -101,7 +115,8 @@ class WRFRun:
|
|
|
101
115
|
prepare_workspace()
|
|
102
116
|
|
|
103
117
|
# ask user before commit the task
|
|
104
|
-
|
|
118
|
+
if not self._skip_domain_confirm:
|
|
119
|
+
confirm_model_area()
|
|
105
120
|
|
|
106
121
|
prepare_scheduler_script(self._entry_file_path)
|
|
107
122
|
|
|
@@ -113,7 +128,8 @@ class WRFRun:
|
|
|
113
128
|
if self._init_workspace:
|
|
114
129
|
prepare_workspace()
|
|
115
130
|
|
|
116
|
-
|
|
131
|
+
if not self._skip_domain_confirm:
|
|
132
|
+
confirm_model_area()
|
|
117
133
|
|
|
118
134
|
# save a copy of config to the output path
|
|
119
135
|
WRFRUNConfig.save_wrfrun_config(f"{WRFRUNConfig.WRFRUN_OUTPUT_PATH}/config.toml")
|
wrfrun/scheduler/lsf.py
CHANGED
|
@@ -10,7 +10,7 @@ Scheduler interface for LSF system.
|
|
|
10
10
|
lsf_generate_settings
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
|
-
from wrfrun.core import
|
|
13
|
+
from wrfrun.core import get_wrfrun_config
|
|
14
14
|
from wrfrun.res import SCHEDULER_LSF_TEMPLATE
|
|
15
15
|
from .utils import get_core_num
|
|
16
16
|
|
|
@@ -22,6 +22,8 @@ def lsf_generate_settings(scheduler_config: dict) -> str:
|
|
|
22
22
|
:return: Generated settings.
|
|
23
23
|
:rtype: str
|
|
24
24
|
"""
|
|
25
|
+
WRFRUNConfig = get_wrfrun_config()
|
|
26
|
+
|
|
25
27
|
# get log path and job scheduler config
|
|
26
28
|
log_path = WRFRUNConfig.get_log_path()
|
|
27
29
|
|
wrfrun/scheduler/pbs.py
CHANGED
|
@@ -10,7 +10,7 @@ Scheduler interface for PBS system.
|
|
|
10
10
|
pbs_generate_settings
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
|
-
from wrfrun.core import
|
|
13
|
+
from wrfrun.core import get_wrfrun_config
|
|
14
14
|
from wrfrun.res import SCHEDULER_PBS_TEMPLATE
|
|
15
15
|
from .utils import get_core_num
|
|
16
16
|
|
|
@@ -22,6 +22,8 @@ def pbs_generate_settings(scheduler_config: dict) -> str:
|
|
|
22
22
|
:return: Generated settings.
|
|
23
23
|
:rtype: str
|
|
24
24
|
"""
|
|
25
|
+
WRFRUNConfig = get_wrfrun_config()
|
|
26
|
+
|
|
25
27
|
# get log path and job scheduler config
|
|
26
28
|
log_path = WRFRUNConfig.get_log_path()
|
|
27
29
|
|
wrfrun/scheduler/script.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
from os.path import
|
|
1
|
+
from os.path import abspath, dirname, exists
|
|
2
2
|
|
|
3
|
-
from wrfrun import
|
|
3
|
+
from wrfrun import get_wrfrun_config
|
|
4
4
|
from wrfrun.res import RUN_SH_TEMPLATE
|
|
5
5
|
from wrfrun.utils import logger
|
|
6
6
|
from .lsf import lsf_generate_settings
|
|
@@ -15,6 +15,8 @@ def prepare_scheduler_script(main_file_path: str):
|
|
|
15
15
|
:param main_file_path: Path of the main entry file.
|
|
16
16
|
:type main_file_path: str
|
|
17
17
|
"""
|
|
18
|
+
WRFRUNConfig = get_wrfrun_config()
|
|
19
|
+
|
|
18
20
|
# check main file path
|
|
19
21
|
if not exists(main_file_path):
|
|
20
22
|
logger.error(f"Wrong path of main entry file: {main_file_path}")
|
wrfrun/scheduler/slurm.py
CHANGED
|
@@ -10,7 +10,7 @@ Scheduler interface for Slurm system.
|
|
|
10
10
|
slurm_generate_settings
|
|
11
11
|
"""
|
|
12
12
|
|
|
13
|
-
from wrfrun.core import
|
|
13
|
+
from wrfrun.core import get_wrfrun_config
|
|
14
14
|
from wrfrun.res import SCHEDULER_SLURM_TEMPLATE
|
|
15
15
|
from .utils import get_core_num
|
|
16
16
|
|
|
@@ -22,6 +22,8 @@ def slurm_generate_settings(scheduler_config: dict) -> str:
|
|
|
22
22
|
:return: Generated settings.
|
|
23
23
|
:rtype: str
|
|
24
24
|
"""
|
|
25
|
+
WRFRUNConfig = get_wrfrun_config()
|
|
26
|
+
|
|
25
27
|
# get log path and job scheduler config
|
|
26
28
|
log_path = WRFRUNConfig.get_log_path()
|
|
27
29
|
|
wrfrun/scheduler/utils.py
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
from wrfrun import
|
|
1
|
+
from wrfrun.core import get_wrfrun_config
|
|
2
2
|
|
|
3
3
|
|
|
4
4
|
def get_core_num() -> int:
|
|
@@ -8,7 +8,7 @@ def get_core_num() -> int:
|
|
|
8
8
|
:return: Core number.
|
|
9
9
|
:rtype: int
|
|
10
10
|
"""
|
|
11
|
-
return
|
|
11
|
+
return get_wrfrun_config()["core_num"]
|
|
12
12
|
|
|
13
13
|
|
|
14
14
|
__all__ = ["get_core_num"]
|
wrfrun/workspace/core.py
CHANGED
|
@@ -13,9 +13,9 @@ Core functions to prepare ``wrfrun`` workspace.
|
|
|
13
13
|
from os.path import exists
|
|
14
14
|
from shutil import rmtree
|
|
15
15
|
|
|
16
|
-
from wrfrun import
|
|
16
|
+
from wrfrun.core import get_wrfrun_config
|
|
17
17
|
from wrfrun.utils import check_path, logger
|
|
18
|
-
from .wrf import
|
|
18
|
+
from .wrf import check_wrf_workspace, prepare_wrf_workspace
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
def prepare_workspace():
|
|
@@ -34,6 +34,7 @@ def prepare_workspace():
|
|
|
34
34
|
|
|
35
35
|
1. :doc:`WPS/WRF model </api/workspace.wrf>`
|
|
36
36
|
"""
|
|
37
|
+
WRFRUNConfig = get_wrfrun_config()
|
|
37
38
|
logger.info(f"Initialize main workspace.")
|
|
38
39
|
|
|
39
40
|
wrfrun_temp_path = WRFRUNConfig.parse_resource_uri(WRFRUNConfig.WRFRUN_TEMP_PATH)
|
|
@@ -66,6 +67,7 @@ def check_workspace() -> bool:
|
|
|
66
67
|
:return: ``True`` if workspace exists, ``False`` otherwise.
|
|
67
68
|
:rtype: bool
|
|
68
69
|
"""
|
|
70
|
+
WRFRUNConfig = get_wrfrun_config()
|
|
69
71
|
|
|
70
72
|
wrfrun_temp_path = WRFRUNConfig.parse_resource_uri(WRFRUNConfig.WRFRUN_TEMP_PATH)
|
|
71
73
|
workspace_path = WRFRUNConfig.parse_resource_uri(WRFRUNConfig.WRFRUN_WORKSPACE_ROOT)
|
wrfrun/workspace/wrf.py
CHANGED
|
@@ -7,20 +7,60 @@ Functions to prepare workspace for WPS/WRF model.
|
|
|
7
7
|
.. autosummary::
|
|
8
8
|
:toctree: generated/
|
|
9
9
|
|
|
10
|
+
get_wrf_workspace_path
|
|
10
11
|
prepare_wrf_workspace
|
|
11
12
|
check_wrf_workspace
|
|
12
13
|
"""
|
|
13
14
|
|
|
14
15
|
from os import listdir, makedirs, symlink
|
|
15
16
|
from os.path import exists
|
|
17
|
+
from typing import Literal
|
|
16
18
|
|
|
17
|
-
from wrfrun.core import
|
|
18
|
-
from wrfrun.utils import
|
|
19
|
+
from wrfrun.core import WRFRunConfig, get_wrfrun_config, set_register_func
|
|
20
|
+
from wrfrun.utils import check_path, logger
|
|
19
21
|
|
|
22
|
+
WORKSPACE_MODEL_WPS = ""
|
|
23
|
+
WORKSPACE_MODEL_WRF = ""
|
|
24
|
+
WORKSPACE_MODEL_WRFDA = ""
|
|
20
25
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
26
|
+
|
|
27
|
+
def _register_wrf_workspace_uri(wrfrun_config: WRFRunConfig):
|
|
28
|
+
"""
|
|
29
|
+
This function doesn't register any URI.
|
|
30
|
+
|
|
31
|
+
This is a hook to initializes some global strings.
|
|
32
|
+
|
|
33
|
+
:param wrfrun_config: ``WRFRunConfig`` instance.
|
|
34
|
+
:type wrfrun_config: WRFRunConfig
|
|
35
|
+
"""
|
|
36
|
+
global WORKSPACE_MODEL_WPS, WORKSPACE_MODEL_WRF, WORKSPACE_MODEL_WRFDA
|
|
37
|
+
|
|
38
|
+
WORKSPACE_MODEL_WPS = f"{wrfrun_config.WRFRUN_WORKSPACE_MODEL}/WPS"
|
|
39
|
+
WORKSPACE_MODEL_WRF = f"{wrfrun_config.WRFRUN_WORKSPACE_MODEL}/WRF"
|
|
40
|
+
WORKSPACE_MODEL_WRFDA = f"{wrfrun_config.WRFRUN_WORKSPACE_MODEL}/WRFDA"
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
set_register_func(_register_wrf_workspace_uri)
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def get_wrf_workspace_path(name: Literal["wps", "wrf", "wrfda"]) -> str:
|
|
47
|
+
"""
|
|
48
|
+
Get workspace path of WRF model.
|
|
49
|
+
|
|
50
|
+
:param name: Model part name.
|
|
51
|
+
:type name: str
|
|
52
|
+
:return: Workspace path.
|
|
53
|
+
:rtype: str
|
|
54
|
+
"""
|
|
55
|
+
match name:
|
|
56
|
+
case "wps":
|
|
57
|
+
return WORKSPACE_MODEL_WPS
|
|
58
|
+
|
|
59
|
+
case "wrf":
|
|
60
|
+
return WORKSPACE_MODEL_WRF
|
|
61
|
+
|
|
62
|
+
case "wrfda":
|
|
63
|
+
return WORKSPACE_MODEL_WRFDA
|
|
24
64
|
|
|
25
65
|
|
|
26
66
|
def prepare_wrf_workspace(model_config: dict):
|
|
@@ -39,6 +79,8 @@ def prepare_wrf_workspace(model_config: dict):
|
|
|
39
79
|
"""
|
|
40
80
|
logger.info(f"Initialize workspace for WPS/WRF.")
|
|
41
81
|
|
|
82
|
+
WRFRUNConfig = get_wrfrun_config()
|
|
83
|
+
|
|
42
84
|
wps_path = model_config["wps_path"]
|
|
43
85
|
wrf_path = model_config["wrf_path"]
|
|
44
86
|
wrfda_path = model_config["wrfda_path"]
|
|
@@ -97,6 +139,8 @@ def check_wrf_workspace(model_config: dict) -> bool:
|
|
|
97
139
|
:return: ``True`` if WPS/WRF workspace exists, ``False`` otherwise.
|
|
98
140
|
:rtype: bool
|
|
99
141
|
"""
|
|
142
|
+
WRFRUNConfig = get_wrfrun_config()
|
|
143
|
+
|
|
100
144
|
wps_path = model_config["wps_path"]
|
|
101
145
|
wrf_path = model_config["wrf_path"]
|
|
102
146
|
wrfda_path = model_config["wrfda_path"]
|
|
@@ -118,4 +162,4 @@ def check_wrf_workspace(model_config: dict) -> bool:
|
|
|
118
162
|
return flag
|
|
119
163
|
|
|
120
164
|
|
|
121
|
-
__all__ = ["
|
|
165
|
+
__all__ = ["get_wrf_workspace_path", "prepare_wrf_workspace", "check_wrf_workspace"]
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
wrfrun-0.
|
|
2
|
-
wrfrun-0.
|
|
3
|
-
wrfrun-0.
|
|
1
|
+
wrfrun-0.2.0.dist-info/METADATA,sha256=v05u5wToeTsctm_vmFeK8z1I29iWTjauvJmbTOkZ9lI,2932
|
|
2
|
+
wrfrun-0.2.0.dist-info/WHEEL,sha256=5J4neoE7k6LMgx4Fz1FHgBiO3YevhJGtNQ3muDrdLQM,75
|
|
3
|
+
wrfrun-0.2.0.dist-info/entry_points.txt,sha256=G3358n6wW1qZF3hSH9umxrWHJewN-6N1BUloacN2tks,50
|
|
4
4
|
wrfrun/__init__.py,sha256=l2zGk2qDWa3EXIlwvzqBYZHOU9273TN75Rmvx_7PAYM,58
|
|
5
|
-
wrfrun/cli.py,sha256=
|
|
6
|
-
wrfrun/data.py,sha256=
|
|
7
|
-
wrfrun/run.py,sha256=
|
|
5
|
+
wrfrun/cli.py,sha256=3N4QCKfBQ9pKV7MP0fEN9BygEOiUJVMTqW47cl1ZpHY,4347
|
|
6
|
+
wrfrun/data.py,sha256=NqpxZ_qDGodJdgdqVUKtJwbyZo0DG7l3_vTZ-2Unbgw,14817
|
|
7
|
+
wrfrun/run.py,sha256=WgTaFRRAEZ83SKzPkrOyXtxlea3DUtU-5zR6zS0dS_c,9458
|
|
8
8
|
wrfrun/utils.py,sha256=BdGP5u2Y2e3tqU0dawfHsTeqZ0q4Ic4MCGR8RU4FJ90,8388
|
|
9
9
|
wrfrun/core/__init__.py,sha256=zsitfcmbO_Qf_Uh0FzZ4rceZAo3WEYev32jSjgRjtkw,1325
|
|
10
|
-
wrfrun/core/base.py,sha256=
|
|
11
|
-
wrfrun/core/config.py,sha256=
|
|
12
|
-
wrfrun/core/error.py,sha256=
|
|
10
|
+
wrfrun/core/base.py,sha256=1aqZIiYuVEYWTGOUKnrFZUb9ihM2H6TVaUOOQ4AfwHQ,31414
|
|
11
|
+
wrfrun/core/config.py,sha256=sW4g9ovy1I31g4dHnzKQdk7h3TQhjbqfys5ngPOKCvs,32834
|
|
12
|
+
wrfrun/core/error.py,sha256=mrwwgvxMH0v4GL0GEG7JjMxDV1S3D_KiRmKTTCZfCBc,2523
|
|
13
13
|
wrfrun/core/replay.py,sha256=jZWN68IgUroxuCzg7EO0FXxe2zwokxJnquu4t81hp7Y,4782
|
|
14
|
-
wrfrun/core/server.py,sha256=
|
|
14
|
+
wrfrun/core/server.py,sha256=CDU6VmWwFg1BVlA1plCagG7fDWUev19T9Q3pJ_WDf1s,8936
|
|
15
15
|
wrfrun/extension/__init__.py,sha256=YDYCS0KD3e-uLvf1K08ktNfP2sUSKpbgkHrvXj21EPQ,913
|
|
16
|
-
wrfrun/extension/utils.py,sha256=
|
|
16
|
+
wrfrun/extension/utils.py,sha256=xf3WquF8w7J-vYfgkTFOhVVrEEuO3oRgMoNaRVhec9k,2501
|
|
17
17
|
wrfrun/extension/goos_sst/__init__.py,sha256=QsVheVVL5K0_k-eg8-xe2MLAJ845iivXzGHbp2qARh4,2101
|
|
18
18
|
wrfrun/extension/goos_sst/core.py,sha256=_s53vq0nAwnwWxExD8-73p5seCWLO1XVzRh5T8JofAw,3870
|
|
19
19
|
wrfrun/extension/goos_sst/utils.py,sha256=bomXbhpOuNOYm2rL1SiOeSxVbSaKWfVxX51KoODgBn0,3469
|
|
20
20
|
wrfrun/extension/goos_sst/res/__init__.py,sha256=-Ey6iFHzQYZNOGhVrSkMjOwiXVgt3P6eaumq7pOmh_E,511
|
|
21
21
|
wrfrun/extension/goos_sst/res/Vtable.ERA_GOOS_SST,sha256=UfbzWKEE2pnQO4Q2mkMmkl7pv_bDSxVGaN2jEYfMVzE,534
|
|
22
22
|
wrfrun/extension/littler/__init__.py,sha256=bLiGIpB_FpTyio44CjIzwwcahyFWxGW-gECfBOIG9Y8,2032
|
|
23
|
-
wrfrun/extension/littler/core.py,sha256=
|
|
23
|
+
wrfrun/extension/littler/core.py,sha256=fS4F0RNs36VL3ej-9WsAn-n8C8nJb29XOQvVYpLaeOM,34192
|
|
24
24
|
wrfrun/model/__init__.py,sha256=PYA6ZUwL4u3heRIMX_qkLvAA6jDrY4kugD8rCvnl-2Y,803
|
|
25
25
|
wrfrun/model/base.py,sha256=WnVNu12ICJgThfZR7kK6_XLCQWVYFsHrdyAz8wl_YRc,218
|
|
26
|
-
wrfrun/model/plot.py,sha256=
|
|
27
|
-
wrfrun/model/utils.py,sha256=
|
|
26
|
+
wrfrun/model/plot.py,sha256=2owjhCxRKpQDbaJ4zCpCcvUdMx-6rkYhqrTaHmIVrwg,10588
|
|
27
|
+
wrfrun/model/utils.py,sha256=IZOd_yTPnxgPMBBROrhDS_WYdnUW6egEEooo4skSkEE,1263
|
|
28
28
|
wrfrun/model/wrf/__init__.py,sha256=KJij1JMTcj3i5e2LcJJJudA99LrsJIVHeMj9ktT9Y_4,1752
|
|
29
|
-
wrfrun/model/wrf/core.py,sha256=
|
|
29
|
+
wrfrun/model/wrf/core.py,sha256=Dhab9jbMRhq5FNYp2yOPBF3ZbZjzo7wa7pLFRisokLs,36335
|
|
30
30
|
wrfrun/model/wrf/exec_wrap.py,sha256=REOtNLCc6IcM2yaaSXoXGgXFA-xjMHmoTiA9B3ZezEA,4418
|
|
31
|
-
wrfrun/model/wrf/geodata.py,sha256=
|
|
32
|
-
wrfrun/model/wrf/namelist.py,sha256=
|
|
31
|
+
wrfrun/model/wrf/geodata.py,sha256=2-B7hkMfB-MmSy3mMHbKqTYAlpcmSNVp26XW_VkPWu4,9784
|
|
32
|
+
wrfrun/model/wrf/namelist.py,sha256=CSOjoKKzniZ1wJVNL8jfBBVufmDUFwT0ZEoTsLZkGuc,16930
|
|
33
33
|
wrfrun/model/wrf/scheme.py,sha256=8y85Dbu-GajwjHr3Spw8_tN21xAloD-SnmxJd11nXKE,11254
|
|
34
|
-
wrfrun/model/wrf/utils.py,sha256=
|
|
35
|
-
wrfrun/model/wrf/vtable.py,sha256=
|
|
34
|
+
wrfrun/model/wrf/utils.py,sha256=FsLy6Hah58aMbQlR-z3W72lhHXAdhBbQzu58y2dmHOw,3760
|
|
35
|
+
wrfrun/model/wrf/vtable.py,sha256=6FtbdEugJrN0_Ta4LqtoHyYzu6bbFxDFvuqkrW51DCw,2620
|
|
36
36
|
wrfrun/plot/__init__.py,sha256=9Kn0IgkX10sHEqHJwk7mZV-dP14XMNcvXN8znO89FIw,19
|
|
37
37
|
wrfrun/plot/wps.py,sha256=pvkxbh5760AAM4KaPteMzhFniZZFtkYF31xhzSBa7lo,5552
|
|
38
|
-
wrfrun/res/__init__.py,sha256=
|
|
38
|
+
wrfrun/res/__init__.py,sha256=18wHJhgDd0hwITHe79xBNwgM4A3yEUJOz2ubcYKeBZI,1669
|
|
39
39
|
wrfrun/res/run.template.sh,sha256=k-r4lOOarscmSdiBXGHPnv3oeiRe-qW-VhOBia27ZGU,101
|
|
40
|
-
wrfrun/res/config/config.template.toml,sha256=
|
|
40
|
+
wrfrun/res/config/config.template.toml,sha256=BTDGDm8aXqXbZM-gpXdGXNZEFFIWmeXd5pLdasWuT38,1593
|
|
41
41
|
wrfrun/res/config/wrf.template.toml,sha256=qQS3OHAXBMaKWgj2qT7jLeDu6tyngPgin7Q-XcE3ZkQ,3189
|
|
42
42
|
wrfrun/res/extension/plotgrids.ncl,sha256=B0mvH1H1j_w7EEana9HmU1XJZtG0w9IccQ54zXpbQG0,7546
|
|
43
43
|
wrfrun/res/namelist/namelist.input.da_wrfvar.template,sha256=Cwc-XPu_spJeQte4duWrulPBOLRMEBtn0mIn0pgMmKY,4912
|
|
@@ -51,12 +51,12 @@ wrfrun/res/scheduler/pbs.template,sha256=kP4pGMAq2uz0OZUAWii7dO4ECLC924c8SnciFeB
|
|
|
51
51
|
wrfrun/res/scheduler/slurm.template,sha256=sQNjkKzOftipDD4kYmzhZkh8fg0M9uaQsdLjDakCVwA,336
|
|
52
52
|
wrfrun/scheduler/__init__.py,sha256=pOqnCAl2-_yC7zPS2VQL5RMltQN4zc0koYS_MESKtHo,1130
|
|
53
53
|
wrfrun/scheduler/env.py,sha256=N_K5yZFRXMEXvW3yjSideEDPWZzoWpbRhFS9LJoZ3R8,1262
|
|
54
|
-
wrfrun/scheduler/lsf.py,sha256=
|
|
55
|
-
wrfrun/scheduler/pbs.py,sha256=
|
|
56
|
-
wrfrun/scheduler/script.py,sha256=
|
|
57
|
-
wrfrun/scheduler/slurm.py,sha256=
|
|
58
|
-
wrfrun/scheduler/utils.py,sha256=
|
|
54
|
+
wrfrun/scheduler/lsf.py,sha256=ajpYnWWryEMMguEBz5H0CONaJmM7AhDV8SOwD1DKkdI,1203
|
|
55
|
+
wrfrun/scheduler/pbs.py,sha256=A0nAOsgU8xzrPZZYrmQI00wUj5P8E_QY_LhDKFvua-Q,1219
|
|
56
|
+
wrfrun/scheduler/script.py,sha256=DdTAGK3gWFuD_3jbQb9cfXI6q0pW3Z_YW6EgWh7I3rU,2448
|
|
57
|
+
wrfrun/scheduler/slurm.py,sha256=SedEq8zV-bfCwWw28UOWJ6qMmP0TkTjJZ9HlMC7gYf0,1241
|
|
58
|
+
wrfrun/scheduler/utils.py,sha256=iIH2abTptzyw7KYmQYYAwCqzfvfZ6FinTNq33e06zvw,223
|
|
59
59
|
wrfrun/workspace/__init__.py,sha256=e7ijFWaYRMmBbso0pXnsAc0oUnkQ3t3UguhY3a0U6Qk,1456
|
|
60
|
-
wrfrun/workspace/core.py,sha256=
|
|
61
|
-
wrfrun/workspace/wrf.py,sha256=
|
|
62
|
-
wrfrun-0.
|
|
60
|
+
wrfrun/workspace/core.py,sha256=R-jp5Le_MAZ7I9abImqK3zyGbFG_8wPVQ632hzeIg2k,2705
|
|
61
|
+
wrfrun/workspace/wrf.py,sha256=prZEdJwyMPguLsafNT9v4vNcq2R_I7WuJsKsvq_NE-4,5140
|
|
62
|
+
wrfrun-0.2.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|