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/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__(self, config_file: str, init_workspace=True, start_server=False, submit_job=False, prepare_wps_data=False, wps_data_area: Optional[Tuple[int, int, int, int]] = None):
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
- WRFRUNConfig.load_wrfrun_config(abs_config_path)
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
- confirm_model_area()
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
- confirm_model_area()
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 WRFRUNConfig
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 WRFRUNConfig
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
 
@@ -1,6 +1,6 @@
1
- from os.path import exists, abspath, dirname
1
+ from os.path import abspath, dirname, exists
2
2
 
3
- from wrfrun import WRFRUNConfig
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 WRFRUNConfig
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 WRFRUNConfig
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 WRFRUNConfig["core_num"]
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 WRFRUNConfig
16
+ from wrfrun.core import get_wrfrun_config
17
17
  from wrfrun.utils import check_path, logger
18
- from .wrf import prepare_wrf_workspace, check_wrf_workspace
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 WRFRUNConfig
18
- from wrfrun.utils import logger, check_path
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
- WORKSPACE_MODEL_WPS = f"{WRFRUNConfig.WRFRUN_WORKSPACE_MODEL}/WPS"
22
- WORKSPACE_MODEL_WRF = f"{WRFRUNConfig.WRFRUN_WORKSPACE_MODEL}/WRF"
23
- WORKSPACE_MODEL_WRFDA = f"{WRFRUNConfig.WRFRUN_WORKSPACE_MODEL}/WRFDA"
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__ = ["prepare_wrf_workspace", "WORKSPACE_MODEL_WRF", "WORKSPACE_MODEL_WPS", "WORKSPACE_MODEL_WRFDA", "check_wrf_workspace"]
165
+ __all__ = ["get_wrf_workspace_path", "prepare_wrf_workspace", "check_wrf_workspace"]
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: wrfrun
3
- Version: 0.1.9
3
+ Version: 0.2.0
4
4
  Summary: wrfrun is a comprehensive toolkit for managing and using WRF
5
5
  Keywords: WRF
6
6
  Author-Email: Syize <syizeliu@gmail.com>
@@ -1,43 +1,43 @@
1
- wrfrun-0.1.9.dist-info/METADATA,sha256=RPtBDS1Ctr0OatYSqezZsgRqGj621sS-dijdt4oN2Vk,2932
2
- wrfrun-0.1.9.dist-info/WHEEL,sha256=5J4neoE7k6LMgx4Fz1FHgBiO3YevhJGtNQ3muDrdLQM,75
3
- wrfrun-0.1.9.dist-info/entry_points.txt,sha256=G3358n6wW1qZF3hSH9umxrWHJewN-6N1BUloacN2tks,50
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=xaMxiHQCHvgHWKlPavYXkC9hGIo7JpUZaIsV8ZKr_SM,4300
6
- wrfrun/data.py,sha256=W6IhopHpp0lhvVo-beuO6NsbfsGDmN5MNf8Bqkt7xsA,14845
7
- wrfrun/run.py,sha256=aYRQ-YqjIt5g4MQEnphmZIwanT9TBlYCddcyXxtgD_s,8918
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=LXtol0AQlDiZYMZeQT3qRZVcQ-F0ETE7sMXdI1jriLw,30324
11
- wrfrun/core/config.py,sha256=gljrE1j8qFNJb_VVJwhQ3E2pmapT9cFUg1pyWizEvjA,27457
12
- wrfrun/core/error.py,sha256=etnImryyqDUggfZOKK1ynOm71GRSFJVGGOwhuiZahTI,2383
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=Kns4an_wqnrYsi0PJxJgQJY8ShjNDnvrxY5V7gsbDec,8660
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=mmcyqxOEVGSBu8t8ukB2SeRp9X_PLR0kWvfptBC_WWo,2458
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=0Si4phAUiCwgjEQnDfWKSOvtnyitWYmrDWkB6_2VjUg,34173
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=SvD5_2sLaLqYvuvcZVX1x3XTrgMW_bsGP-Npr6RKHVU,10335
27
- wrfrun/model/utils.py,sha256=5_ffMJCPi_n3-Mgaci9F2eMk2fY7_UrcjmK0JSsZZr0,1206
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=Ykw6ElY3mUelWOThDFT--ChnwY7zgcbyooLuJNhGqV4,35627
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=X9OUOm0__5NI7sl2z1F9_ur5wZ4P0HkpBNcRZQYKof0,9740
32
- wrfrun/model/wrf/namelist.py,sha256=ksxHlh-LtxDBF73cCe8J0wpyGrSvM1dBgPgwK2XseGo,16918
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=DuKghfqBT77p_beDKJ3EyyPMuRmBJCgCElvs3YheWak,3709
35
- wrfrun/model/wrf/vtable.py,sha256=1el_TctQfPVTYnZn0nJNgfDvVXy6q5ZzVIyUgWRfFUs,2478
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=cIjX9Was6nhms-aBLUY0V1393of-LzoSRcWcD_HGgn0,1437
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=DjtFjy2sL_P6w63XfLDkmDWhWKyo6qrlwBy69cnbvXA,1378
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=E_sKUk4_RZMBSkHctzDi2sEAy8UrteZvgpbuU2zeSvo,1158
55
- wrfrun/scheduler/pbs.py,sha256=fqGqoIWG4lh2bT_NqxPxL3XIdPo8keWG2MFqZmOMKpI,1174
56
- wrfrun/scheduler/script.py,sha256=si2pzrKCOutICcke4t1c5kmCnVlTS9PZJF5MJTp3YTk,2403
57
- wrfrun/scheduler/slurm.py,sha256=Y3a4MAt5omDgVUtONaL2ajV609HbOZl2opjIGkHUa7g,1196
58
- wrfrun/scheduler/utils.py,sha256=5BGPEB-oMn4ifo3XZOkDOwAvjWXi69UHLR5HMabwUAM,206
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=wj9f8XzafazpxXuO_wtConOEhkHwJLyPTwhubXrn20s,2617
61
- wrfrun/workspace/wrf.py,sha256=wp5pQgKB9B-7JGc2psRIyj_pI7iG344jphBBB0b6PsY,4098
62
- wrfrun-0.1.9.dist-info/RECORD,,
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