Changeset ca867de in flex_extract.git for source/python/mods
- Timestamp:
- Oct 5, 2018, 3:35:18 PM (6 years ago)
- Branches:
- master, ctbto, dev
- Children:
- 5bad6ec
- Parents:
- 27fe969
- Location:
- source/python/mods
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
source/python/mods/get_mars_data.py
r27fe969 rca867de 48 48 import os 49 49 import sys 50 import datetime51 50 import inspect 51 from datetime import datetime, timedelta 52 53 # software specific classes and modules from flex_extract 54 sys.path.append('../') 55 import _config 56 from tools import my_error, normal_exit, get_cmdline_arguments, read_ecenv 57 from classes.EcFlexpart import EcFlexpart 58 from classes.UioFiles import UioFiles 59 52 60 try: 53 61 ecapi = True … … 55 63 except ImportError: 56 64 ecapi = False 57 58 # software specific classes and modules from flex_extract59 import _config60 from tools import my_error, normal_exit, get_cmdline_arguments, read_ecenv61 from classes.EcFlexpart import EcFlexpart62 from classes.UioFiles import UioFiles63 65 # ------------------------------------------------------------------------------ 64 66 # FUNCTION … … 147 149 # allerdings ist das relevant und ersichtlich an den NICHT FLUSS DATEN 148 150 149 150 # set start date of retrieval period 151 start = datetime.date(year=int(c.start_date[:4]), 152 month=int(c.start_date[4:6]), 153 day=int(c.start_date[6:])) 154 startm1 = start - datetime.timedelta(days=1) 155 156 # set end date of retrieval period 157 end = datetime.date(year=int(c.end_date[:4]), 158 month=int(c.end_date[4:6]), 159 day=int(c.end_date[6:])) 160 161 # set time period for one single retrieval 162 datechunk = datetime.timedelta(days=int(c.date_chunk)) 151 start = datetime.strptime(c.start_date, '%Y%m%d') 152 end = datetime.strptime(c.end_date, '%Y%m%d') 153 # time period for one single retrieval 154 datechunk = timedelta(days=int(c.date_chunk)) 163 155 164 156 if c.basetime == '00': 165 start = startm1 157 start = start - timedelta(days=1) 158 159 if c.maxstep <= 24: 160 startm1 = start - timedelta(days=1) 166 161 167 162 if c.basetime == '00' or c.basetime == '12': 168 # endp1 = end + datetime.timedelta(days=1)163 # endp1 = end + timedelta(days=1) 169 164 endp1 = end 170 165 else: 171 # endp1 = end + datetime.timedelta(days=2)172 endp1 = end + datetime.timedelta(days=1)166 # endp1 = end + timedelta(days=2) 167 endp1 = end + timedelta(days=1) 173 168 174 169 # -------------- flux data ------------------------------------------------ … … 243 238 # we only need to add datechunk - 1 days to retrieval 244 239 # for a period 245 delta_t_m1 = delta_t - datetime.timedelta(days=1)240 delta_t_m1 = delta_t - timedelta(days=1) 246 241 247 242 day = start -
source/python/mods/prepare_flexpart.py
r27fe969 rca867de 59 59 60 60 # software specific classes and modules from flex_extract 61 sys.path.append('../') 61 62 import _config 62 63 from classes.UioFiles import UioFiles 64 from classes.ControlFile import ControlFile 63 65 from tools import clean_up, get_cmdline_arguments, read_ecenv 64 66 from classes.EcFlexpart import EcFlexpart -
source/python/mods/tools.py
r27fe969 rca867de 60 60 # ------------------------------------------------------------------------------ 61 61 62 def none_or_str(value): 63 ''' 64 @Description: 65 Converts the input string into pythons None-type if the string 66 contains "None". 67 68 @Input: 69 value: string 70 String to be checked for the "None" word. 71 72 @Return: 73 None or value: 74 Return depends on the content of the input value. If it was "None", 75 then the python type None is returned. Otherwise the string itself. 76 ''' 77 if value == 'None': 78 return None 79 return value 80 81 def none_or_int(value): 82 ''' 83 @Description: 84 Converts the input string into pythons None-type if the string 85 contains "None". Otherwise it is converted to an integer value. 86 87 @Input: 88 value: string 89 String to be checked for the "None" word. 90 91 @Return: 92 None or int(value): 93 Return depends on the content of the input value. If it was "None", 94 then the python type None is returned. Otherwise the string is 95 converted into an integer value. 96 ''' 97 if value == 'None': 98 return None 99 return int(value) 100 62 101 def get_cmdline_arguments(): 63 102 ''' … … 79 118 80 119 # the most important arguments 81 parser.add_argument("--start_date", dest="start_date", default=None, 120 parser.add_argument("--start_date", dest="start_date", 121 type=none_or_str, default=None, 82 122 help="start date YYYYMMDD") 83 parser.add_argument("--end_date", dest="end_date", default=None, 123 parser.add_argument("--end_date", dest="end_date", 124 type=none_or_str, default=None, 84 125 help="end_date YYYYMMDD") 85 parser.add_argument("--date_chunk", dest="date_chunk", default=None, 126 parser.add_argument("--date_chunk", dest="date_chunk", 127 type=none_or_int, default=None, 86 128 help="# of days to be retrieved at once") 129 parser.add_argument("--controlfile", dest="controlfile", 130 type=none_or_str, default='CONTROL.temp', 131 help="file with CONTROL parameters") 132 133 # parameter for extra output information 134 parser.add_argument("--debug", dest="debug", 135 type=none_or_int, default=None, 136 help="debug mode - leave temporary files intact") 137 parser.add_argument("--request", dest="request", 138 type=none_or_int, default=None, 139 help="list all mars request in file mars_requests.dat \ 140 and skip submission to mars") 87 141 88 142 # some arguments that override the default in the CONTROL file 89 parser.add_argument("--basetime", dest="basetime", default=None, 90 help="base such as 00/12 (for half day retrievals)") 91 parser.add_argument("--step", dest="step", default=None, 143 parser.add_argument("--basetime", dest="basetime", 144 type=none_or_int, default=None, 145 help="base such as 00 or 12 (for half day retrievals)") 146 parser.add_argument("--step", dest="step", 147 type=none_or_str, default=None, 92 148 help="steps such as 00/to/48") 93 parser.add_argument("--levelist", dest="levelist", default=None, 149 parser.add_argument("--levelist", dest="levelist", 150 type=none_or_str, default=None, 94 151 help="Vertical levels to be retrieved, e.g. 30/to/60") 95 parser.add_argument("--area", dest="area", default=None, 152 parser.add_argument("--area", dest="area", 153 type=none_or_str, default=None, 96 154 help="area defined as north/west/south/east") 97 155 98 156 # set the working directories 99 parser.add_argument("--inputdir", dest="inputdir", default=None, 157 parser.add_argument("--inputdir", dest="inputdir", 158 type=none_or_str, default=None, 100 159 help="root directory for storing intermediate files") 101 parser.add_argument("--outputdir", dest="outputdir", default=None, 160 parser.add_argument("--outputdir", dest="outputdir", 161 type=none_or_str, default=None, 102 162 help="root directory for storing output files") 103 163 parser.add_argument("--flexpart_root_scripts", dest="flexpart_root_scripts", 104 default=None,164 type=none_or_str, default=None, 105 165 help="FLEXPART root directory (to find grib2flexpart \ 106 166 and COMMAND file)\n Normally flex_extract resides in \ … … 108 168 109 169 # this is only used by prepare_flexpart.py to rerun a postprocessing step 110 parser.add_argument("--ppid", dest="ppid", default=None, 170 parser.add_argument("--ppid", dest="ppid", 171 type=none_or_int, default=None, 111 172 help="specify parent process id for \ 112 173 rerun of prepare_flexpart") … … 114 175 # arguments for job submission to ECMWF, only needed by submit.py 115 176 parser.add_argument("--job_template", dest='job_template', 116 default="job.temp",177 type=none_or_str, default="job.temp", 117 178 help="job template file for submission to ECMWF") 118 parser.add_argument("--queue", dest="queue", default=None, 179 parser.add_argument("--queue", dest="queue", 180 type=none_or_str, default=None, 119 181 help="queue for submission to ECMWF \ 120 182 (e.g. ecgate or cca )") 121 parser.add_argument("--controlfile", dest="controlfile",122 default='CONTROL.temp',123 help="file with CONTROL parameters")124 parser.add_argument("--debug", dest="debug", default=None,125 help="debug mode - leave temporary files intact")126 parser.add_argument("--request", dest="request", default=None,127 help="list all mars request in file mars_requests.dat \128 and skip submission to mars")129 183 130 184 args = parser.parse_args()
Note: See TracChangeset
for help on using the changeset viewer.