Changeset 4227 for palm/trunk/SOURCE
- Timestamp:
- Sep 10, 2019 6:04:34 PM (5 years ago)
- Location:
- palm/trunk/SOURCE
- Files:
-
- 1 added
- 1 deleted
- 20 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/Makefile
r4182 r4227 25 25 # ----------------- 26 26 # $Id$ 27 # Add palm_date_time_mod, remove date_and_time_mod 28 # 29 # 4223 2019-09-10 09:20:47Z gronemeier 27 30 # Corrected "Former revisions" section 28 31 # … … 138 141 data_output_spectra.f90 \ 139 142 data_output_tseries.f90 \ 140 date_and_time_mod.f90 \141 143 diagnostic_output_quantities_mod.f90 \ 142 144 diffusion_s.f90 \ … … 187 189 outflow_turbulence.f90 \ 188 190 palm.f90 \ 191 palm_date_time_mod.f90 \ 189 192 parin.f90 \ 190 193 plant_canopy_model_mod.f90 \ … … 324 327 biometeorology_mod.o: \ 325 328 basic_constants_and_equations_mod.o \ 326 date_and_time_mod.o \327 mod ules.o \328 mod_kinds.o \329 netcdf_data_input_mod.o \329 modules.o \ 330 mod_kinds.o \ 331 netcdf_data_input_mod.o \ 332 palm_date_time_mod.o \ 330 333 radiation_model_mod.o 331 334 boundary_conds.o: \ … … 381 384 chem_gasphase_mod.o \ 382 385 chem_modules.o \ 383 date_and_time_mod.o \384 mod _kinds.o \385 modules.o \386 netcdf_data_input_mod.o \386 mod_kinds.o \ 387 modules.o \ 388 netcdf_data_input_mod.o \ 389 palm_date_time_mod.o \ 387 390 surface_mod.o 388 391 chemistry_model_mod.o: \ … … 392 395 chem_modules.o \ 393 396 chem_photolysis_mod.o \ 394 date_and_time_mod.o \395 397 diffusion_s.o \ 396 398 mod_kinds.o \ 397 399 modules.o \ 398 400 netcdf_data_input_mod.o \ 401 palm_date_time_mod.o \ 399 402 radiation_model_mod.o \ 400 403 surface_mod.o … … 411 414 mod_kinds.o \ 412 415 modules.o \ 416 palm_date_time_mod.o \ 413 417 radiation_model_mod.o 414 418 close_file.o: \ … … 503 507 radiation_model_mod.o \ 504 508 urban_surface_mod.o 505 date_and_time_mod.o: \506 mod_kinds.o \507 modules.o508 509 diagnostic_output_quantities_mod.o: \ 509 510 mod_kinds.o \ … … 578 579 bulk_cloud_model_mod.o \ 579 580 cpulog_mod.o \ 580 date_and_time_mod.o \581 581 model_1d_mod.o \ 582 582 module_interface.o \ … … 585 585 netcdf_interface_mod.o \ 586 586 ocean_mod.o \ 587 palm_date_time_mod.o \ 587 588 plant_canopy_model_mod.o \ 588 589 pmc_handle_communicator_mod.o \ … … 592 593 indoor_model_mod.o: \ 593 594 cpulog_mod.o \ 594 date_and_time_mod.o \595 mod _kinds.o \596 modules.o \597 netcdf_data_input_mod.o \595 mod_kinds.o \ 596 modules.o \ 597 netcdf_data_input_mod.o \ 598 palm_date_time_mod.o \ 598 599 surface_mod.o \ 599 600 urban_surface_mod.o … … 621 622 random_generator_parallel_mod.o \ 622 623 read_restart_data_mod.o \ 624 palm_date_time_mod.o \ 623 625 surface_layer_fluxes_mod.o \ 624 626 surface_mod.o \ … … 779 781 netcdf_data_input_mod.o \ 780 782 ocean_mod.o \ 783 palm_date_time_mod.o \ 781 784 radiation_model_mod.o \ 782 785 salsa_mod.o \ … … 810 813 chem_photolysis_mod.o \ 811 814 cpulog_mod.o \ 812 date_and_time_mod.o \813 815 diagnostic_output_quantities_mod.o \ 814 816 land_surface_model_mod.o \ … … 825 827 time_to_string.o \ 826 828 write_restart_data_mod.o 829 palm_date_time_mod.o: \ 830 mod_kinds.o \ 831 modules.o 827 832 parin.o: \ 828 833 chem_modules.o \ 829 834 cpulog_mod.o \ 830 date_and_time_mod.o \831 835 model_1d_mod.o \ 832 836 mod_kinds.o \ … … 952 956 bulk_cloud_model_mod.o \ 953 957 calc_mean_profile.o \ 954 date_and_time_mod.o \955 958 mod_particle_attributes.o \ 956 959 modules.o \ 957 960 netcdf_data_input_mod.o \ 961 palm_date_time_mod.o \ 958 962 plant_canopy_model_mod.o \ 959 963 surface_mod.o … … 970 974 chem_modules.o \ 971 975 cpulog_mod.o \ 972 date_and_time_mod.o \973 976 diagnostic_output_quantities_mod.o \ 974 977 mod_kinds.o \ … … 977 980 modules.o \ 978 981 netcdf_interface_mod.o \ 982 palm_date_time_mod.o \ 979 983 radiation_model_mod.o \ 980 984 random_function_mod.o\ … … 998 1002 diffusion_s.o \ 999 1003 netcdf_data_input_mod.o \ 1004 palm_date_time_mod.o \ 1000 1005 plant_canopy_model_mod.o \ 1001 1006 surface_mod.o \ … … 1086 1091 nesting_offl_mod.o \ 1087 1092 ocean_mod.o \ 1093 palm_date_time_mod.o \ 1088 1094 pmc_interface_mod.o \ 1089 1095 prognostic_equations.o \ … … 1105 1111 basic_constants_and_equations_mod.o \ 1106 1112 cpulog_mod.o \ 1107 date_and_time_mod.o \1108 1113 land_surface_model_mod.o \ 1109 1114 mod_kinds.o \ 1110 1115 modules.o \ 1116 palm_date_time_mod.o \ 1111 1117 pmc_interface_mod.o \ 1112 1118 radiation_model_mod.o \ … … 1152 1158 urban_surface_mod.o: \ 1153 1159 basic_constants_and_equations_mod.o \ 1154 date_and_time_mod.o \1155 mod _kinds.o \1156 modules.o \1157 netcdf_data_input_mod.o \1160 mod_kinds.o \ 1161 modules.o \ 1162 netcdf_data_input_mod.o \ 1163 palm_date_time_mod.o \ 1158 1164 radiation_model_mod.o \ 1159 1165 surface_mod.o … … 1253 1259 mod_kinds.o 1254 1260 write_restart_data_mod.o: \ 1255 date_and_time_mod.o \1256 1261 mod_kinds.o \ 1257 1262 model_1d_mod.o \ … … 1259 1264 modules.o \ 1260 1265 netcdf_interface_mod.o \ 1266 palm_date_time_mod.o \ 1261 1267 radiation_model_mod.o \ 1262 1268 random_function_mod.o \ -
palm/trunk/SOURCE/biometeorology_mod.f90
r4182 r4227 27 27 ! ----------------- 28 28 ! $Id$ 29 ! implement new palm_date_time_mod 30 ! 31 ! 4223 2019-09-10 09:20:47Z gronemeier 29 32 ! Corrected "Former revisions" section 30 33 ! … … 140 143 surface_pressure 141 144 142 USE date_and_time_mod, &143 ONLY: calc_date_and_time, day_of_year, time_utc144 145 145 USE grid_variables, & 146 146 ONLY: ddx, dx, ddy, dy … … 155 155 ONLY: netcdf_data_input_uvem, uvem_projarea_f, uvem_radiance_f, & 156 156 uvem_irradiance_f, uvem_integration_f, building_obstruction_f 157 158 USE palm_date_time_mod, & 159 ONLY: get_date_time 157 160 ! 158 161 !-- Import radiation model to obtain input for mean radiant temperature … … 4226 4229 !-- UVEM specific subroutines 4227 4230 4228 !-------------------------------------------------------------------------------------------------- -------------------!4231 !--------------------------------------------------------------------------------------------------! 4229 4232 ! Description: 4230 4233 ! ------------ 4231 4234 !> Module-specific routine for new module 4232 !-------------------------------------------------------------------------------------------------- -------------------!4235 !--------------------------------------------------------------------------------------------------! 4233 4236 SUBROUTINE uvem_solar_position 4234 4235 USE date_and_time_mod, & 4236 ONLY: calc_date_and_time, day_of_year, time_utc 4237 4238 USE control_parameters, & 4239 ONLY: latitude, longitude 4237 4238 USE control_parameters, & 4239 ONLY: latitude, longitude, time_since_reference_point 4240 4240 4241 4241 IMPLICIT NONE 4242 4243 4244 REAL(wp) :: alpha = 0.0_wp !< solar azimuth angle in radiant 4245 REAL(wp) :: doy_r = 0.0_wp !< real format of day_of_year 4246 REAL(wp) :: declination = 0.0_wp !< declination 4247 REAL(wp) :: dtor = 0.0_wp !< factor to convert degree to radiant 4248 REAL(wp) :: js = 0.0_wp !< parameter for solar position calculation 4249 REAL(wp) :: lat = 52.39_wp !< latitude 4250 REAL(wp) :: lon = 9.7_wp !< longitude 4251 REAL(wp) :: thetar = 0.0_wp !< angle for solar zenith angle calculation 4252 REAL(wp) :: thetasr = 0.0_wp !< angle for solar azimuth angle calculation 4253 REAL(wp) :: zgl = 0.0_wp !< calculated exposure by direct beam 4254 REAL(wp) :: woz = 0.0_wp !< calculated exposure by diffuse radiation 4255 REAL(wp) :: wsp = 0.0_wp !< calculated exposure by direct beam 4256 4257 4258 CALL calc_date_and_time 4259 doy_r = real(day_of_year) 4242 4243 INTEGER(iwp) :: day_of_year = 0 !< day of year 4244 4245 REAL(wp) :: alpha = 0.0_wp !< solar azimuth angle in radiant 4246 REAL(wp) :: declination = 0.0_wp !< declination 4247 REAL(wp) :: dtor = 0.0_wp !< factor to convert degree to radiant 4248 REAL(wp) :: js = 0.0_wp !< parameter for solar position calculation 4249 REAL(wp) :: lat = 52.39_wp !< latitude 4250 REAL(wp) :: lon = 9.7_wp !< longitude 4251 REAL(wp) :: second_of_day = 0.0_wp !< current second of the day 4252 REAL(wp) :: thetar = 0.0_wp !< angle for solar zenith angle calculation 4253 REAL(wp) :: thetasr = 0.0_wp !< angle for solar azimuth angle calculation 4254 REAL(wp) :: zgl = 0.0_wp !< calculated exposure by direct beam 4255 REAL(wp) :: woz = 0.0_wp !< calculated exposure by diffuse radiation 4256 REAL(wp) :: wsp = 0.0_wp !< calculated exposure by direct beam 4257 4258 4259 CALL get_date_time( time_since_reference_point, & 4260 day_of_year = day_of_year, second_of_day = second_of_day ) 4260 4261 dtor = pi / 180.0_wp 4261 4262 lat = latitude … … 4263 4264 ! 4264 4265 !-- calculation of js, necessary for calculation of equation of time (zgl) : 4265 js= 72.0_wp * ( doy_r + ( time_utc/ 86400.0_wp ) ) / 73.0_wp4266 js= 72.0_wp * ( REAL( day_of_year, KIND=wp ) + ( second_of_day / 86400.0_wp ) ) / 73.0_wp 4266 4267 ! 4267 4268 !-- calculation of equation of time (zgl): … … 4270 4271 ! 4271 4272 !-- calculation of apparent solar time woz: 4272 woz = ( ( time_utc/ 3600.0_wp ) - ( 4.0_wp * ( 15.0_wp - lon ) ) / 60.0_wp ) + ( zgl / 60.0_wp )4273 woz = ( ( second_of_day / 3600.0_wp ) - ( 4.0_wp * ( 15.0_wp - lon ) ) / 60.0_wp ) + ( zgl / 60.0_wp ) 4273 4274 ! 4274 4275 !-- calculation of hour angle (wsp): -
palm/trunk/SOURCE/chem_emissions_mod.f90
r4218 r4227 27 27 ! ----------------- 28 28 ! $Id$ 29 ! implement new palm_date_time_mod 30 ! 31 ! 4223 2019-09-10 09:20:47Z gronemeier 29 32 ! Unused routine chem_emissions_check_parameters commented out due to uninitialized content 30 33 ! … … 118 121 ONLY: chem_emis_att_type, chem_emis_val_type 119 122 120 USE date_and_time_mod, &121 ONLY: day_of_month, hour_of_day, &122 index_mm, index_dd, index_hh, &123 month_of_year, hour_of_day, &124 time_default_indices, time_preprocessed_indices125 126 123 USE chem_gasphase_mod, & 127 124 ONLY: nvar, spc_names … … 905 902 ! Description: 906 903 ! ------------ 907 !> Routine for Update of Emission values at each timestep 904 !> Routine for Update of Emission values at each timestep. 905 !> 906 !> @todo Clarify the correct usage of index_dd, index_hh and index_mm. Consider 907 !> renaming of these variables. 908 !> @todo Clarify time used in emis_lod=2 mode. ATM, the used time seems strange. 908 909 !-------------------------------------------------------------------------------! 909 910 … … 919 920 ONLY: hyp, pt 920 921 922 USE control_parameters, & 923 ONLY: time_since_reference_point 924 925 USE palm_date_time_mod, & 926 ONLY: days_per_week, get_date_time, hours_per_day, months_per_year, seconds_per_day 921 927 922 928 IMPLICIT NONE … … 940 946 INTEGER(iwp) :: m !< running index for horizontal surfaces 941 947 948 INTEGER(iwp) :: day_of_month !< day of the month 949 INTEGER(iwp) :: day_of_week !< day of the week 950 INTEGER(iwp) :: day_of_year !< day of the year 951 INTEGER(iwp) :: days_since_reference_point !< days since reference point 952 INTEGER(iwp) :: hour_of_day !< hour of the day 953 INTEGER(iwp) :: month_of_year !< month of the year 954 INTEGER(iwp) :: index_dd !< index day 955 INTEGER(iwp) :: index_hh !< index hour 956 INTEGER(iwp) :: index_mm !< index month 957 958 REAL(wp) :: time_utc_init !< second of day of initial date 959 942 960 ! 943 961 !-- CONVERSION FACTORS: TIME 944 962 REAL(wp), PARAMETER :: hour_per_year = 8760.0_wp !< number of hours in a year of 365 days 945 REAL(wp), PARAMETER :: hour_per_day = 24.0_wp !< number of hours in a day946 963 REAL(wp), PARAMETER :: s_per_hour = 3600.0_wp !< number of sec per hour (s)/(hour) 947 964 REAL(wp), PARAMETER :: s_per_day = 86400.0_wp !< number of sec per day (s)/(day) … … 1073 1090 !-- Update time indices 1074 1091 1075 CALL time_preprocessed_indices( index_hh ) 1076 1092 CALL get_date_time( 0.0_wp, second_of_day=time_utc_init ) 1093 CALL get_date_time( time_since_reference_point, hour=hour_of_day ) 1094 1095 days_since_reference_point = INT( FLOOR( ( time_utc_init + time_since_reference_point ) & 1096 / seconds_per_day ) ) 1097 1098 index_hh = days_since_reference_point * hours_per_day + hour_of_day 1077 1099 1078 1100 ! … … 1102 1124 !-- Update time indices 1103 1125 1104 CALL time_default_indices( month_of_year, day_of_month, hour_of_day, index_hh ) 1126 CALL get_date_time( time_since_reference_point, & 1127 day_of_year=day_of_year, hour=hour_of_day ) 1128 index_hh = ( day_of_year - 1_iwp ) * hour_of_day 1105 1129 1106 1130 ! … … 1132 1156 ! 1133 1157 !-- Update time indices 1134 CALL time_default_indices( daytype_mdh, month_of_year, day_of_month, & 1135 hour_of_day, index_mm, index_dd,index_hh ) 1136 1158 CALL get_date_time( time_since_reference_point, & 1159 month=month_of_year, & 1160 day=day_of_month, & 1161 hour=hour_of_day, & 1162 day_of_week=day_of_week ) 1163 index_mm = month_of_year 1164 index_dd = months_per_year + day_of_week 1165 SELECT CASE(TRIM(daytype_mdh)) 1166 1167 CASE ("workday") 1168 index_hh = months_per_year + days_per_week + hour_of_day 1169 1170 CASE ("weekend") 1171 index_hh = months_per_year + days_per_week + hours_per_day + hour_of_day 1172 1173 CASE ("holiday") 1174 index_hh = months_per_year + days_per_week + 2*hours_per_day + hour_of_day 1175 1176 END SELECT 1137 1177 ! 1138 1178 !-- Check if the index is less or equal to the temporal dimension of MDH emission files … … 1189 1229 1190 1230 ! 1191 !-- Get time-factor for specific hour 1231 !-- Get time-factor for specific hour 1232 CALL get_date_time( time_since_reference_point, hour=hour_of_day ) 1192 1233 1193 1234 index_hh = hour_of_day … … 1196 1237 ENDIF ! emiss_lod 1197 1238 1198 1239 1199 1240 ! 1200 1241 !-- Emission distribution calculation … … 1257 1298 time_factor(icat) * & 1258 1299 emt_att%nox_comp(icat,1) * & 1259 conversion_factor * hour _per_day1300 conversion_factor * hours_per_day 1260 1301 1261 1302 emis_distribution(1,nys:nyn,nxl:nxr,ispec) = & … … 1270 1311 time_factor(icat) * & 1271 1312 emt_att%nox_comp(icat,2) * & 1272 conversion_factor * hour _per_day1313 conversion_factor * hours_per_day 1273 1314 1274 1315 emis_distribution(1,nys:nyn,nxl:nxr,ispec) = & … … 1283 1324 time_factor(icat) * & 1284 1325 emt_att%sox_comp(icat,1) * & 1285 conversion_factor * hour _per_day1326 conversion_factor * hours_per_day 1286 1327 1287 1328 emis_distribution(1,nys:nyn,nxl:nxr,ispec) = & … … 1298 1339 time_factor(icat) * & 1299 1340 emt_att%sox_comp(icat,2) * & 1300 conversion_factor * hour _per_day1341 conversion_factor * hours_per_day 1301 1342 1302 1343 emis_distribution(1,nys:nyn,nxl:nxr,ispec) = & … … 1315 1356 time_factor(icat) * & 1316 1357 emt_att%pm_comp(icat,i_pm_comp,1) * & 1317 conversion_factor * hour _per_day1358 conversion_factor * hours_per_day 1318 1359 1319 1360 emis_distribution(1,nys:nyn,nxl:nxr,ispec) = & … … 1333 1374 time_factor(icat) * & 1334 1375 emt_att%pm_comp(icat,i_pm_comp,2) * & 1335 conversion_factor * hour _per_day1376 conversion_factor * hours_per_day 1336 1377 1337 1378 emis_distribution(1,nys:nyn,nxl:nxr,ispec) = & … … 1351 1392 time_factor(icat) * & 1352 1393 emt_att%pm_comp(icat,i_pm_comp,3) * & 1353 conversion_factor * hour _per_day1394 conversion_factor * hours_per_day 1354 1395 1355 1396 emis_distribution(1,nys:nyn,nxl:nxr,ispec) = & … … 1372 1413 time_factor(icat) * & 1373 1414 emt_att%voc_comp(icat,match_spec_voc_input(ivoc)) * & 1374 conversion_factor * hour _per_day1415 conversion_factor * hours_per_day 1375 1416 1376 1417 emis_distribution(1,nys:nyn,nxl:nxr,ispec) = & … … 1389 1430 delta_emis(nys:nyn,nxl:nxr) = emis(nys:nyn,nxl:nxr) * & 1390 1431 time_factor(icat) * & 1391 conversion_factor * hour _per_day1432 conversion_factor * hours_per_day 1392 1433 1393 1434 emis_distribution(1,nys:nyn,nxl:nxr,ispec) = & -
palm/trunk/SOURCE/chem_photolysis_mod.f90
r4182 r4227 26 26 ! ----------------- 27 27 ! $Id$ 28 ! Change call to calc_zenith 29 ! 30 ! 4223 2019-09-10 09:20:47Z gronemeier 28 31 ! Corrected "Former revisions" section 29 32 ! … … 227 230 SUBROUTINE photolysis_simple 228 231 232 USE palm_date_time_mod, & 233 ONLY: get_date_time 234 229 235 USE radiation_model_mod, & 230 236 ONLY: calc_zenith, cos_zenith … … 232 238 IMPLICIT NONE 233 239 234 INTEGER(iwp) :: iphot,iav !< loop indix for photolysis reaction 235 REAL(wp) :: coszi !< 1./cosine of zenith angle 240 INTEGER(iwp) :: day_of_year !< day of the year 241 INTEGER(iwp) :: iav !< loop indix for photolysis reaction 242 INTEGER(iwp) :: iphot !< loop indix for photolysis reaction 243 244 REAL(wp) :: coszi !< 1./cosine of zenith angle 245 REAL(wp) :: second_of_day !< second of the day 236 246 237 247 DO iphot = 1, nphot … … 239 249 ENDDO 240 250 241 CALL calc_zenith 251 CALL get_date_time( time_since_reference_point, & 252 day_of_year=day_of_year, second_of_day=second_of_day ) 253 CALL calc_zenith( day_of_year, second_of_day ) 242 254 243 255 IF ( cos_zenith > 0.0_wp ) THEN -
palm/trunk/SOURCE/chemistry_model_mod.f90
r4182 r4227 27 27 ! ----------------- 28 28 ! $Id$ 29 ! implement new palm_date_time_mod 30 ! 31 ! 4182 2019-08-22 15:20:23Z scharf 29 32 ! Corrected "Former revisions" section 30 33 ! … … 2996 2999 2997 3000 USE control_parameters, & 2998 ONLY: dt_3d, intermediate_timestep_count, latitude 3001 ONLY: dt_3d, intermediate_timestep_count, latitude, & 3002 time_since_reference_point 2999 3003 3000 3004 USE arrays_3d, & 3001 3005 ONLY: dzw, rho_air_zw 3002 3006 3003 USE date_and_time_mod,&3004 ONLY: day_of_year3007 USE palm_date_time_mod, & 3008 ONLY: get_date_time 3005 3009 3006 3010 USE surface_mod, & … … 3012 3016 3013 3017 3018 INTEGER(iwp) :: day_of_year !< current day of the year 3014 3019 INTEGER(iwp), INTENT(IN) :: i 3015 3020 INTEGER(iwp), INTENT(IN) :: j … … 3286 3291 xm_O * 3 /) !< o3_biascorr 3287 3292 ! 3293 !-- Get current day of the year 3294 CALL get_date_time( time_since_reference_point, day_of_year = day_of_year ) 3295 ! 3288 3296 !-- Initialize surface element m 3289 3297 m = 0 … … 5849 5857 5850 5858 END MODULE chemistry_model_mod 5851 -
palm/trunk/SOURCE/header.f90
r4196 r4227 25 25 ! ----------------- 26 26 ! $Id$ 27 ! implement new palm_date_time_mod 28 ! 29 ! 4223 2019-09-10 09:20:47Z gronemeier 27 30 ! Write information about rotation angle 28 31 ! … … 75 78 ONLY: log_point_s 76 79 77 USE date_and_time_mod, &78 ONLY: day_of_year_init, time_utc_init79 80 80 USE grid_variables, & 81 81 ONLY: dx, dy … … 100 100 sa_vertical_gradient, sa_vertical_gradient_level, & 101 101 sa_vertical_gradient_level_ind 102 103 USE palm_date_time_mod, & 104 ONLY: get_date_time 102 105 103 106 USE pegrid … … 137 140 CHARACTER (LEN=70) :: char1 !< dummy varialbe used for various strings 138 141 CHARACTER (LEN=70) :: char2 !< string containing informating about the advected distance in case of Galilei transformation 142 CHARACTER (LEN=23) :: date_time_str !< string for date and time information 139 143 CHARACTER (LEN=70) :: dopr_chr !< string indicating profile output variables 140 144 CHARACTER (LEN=70) :: do2d_xy !< string indicating 2D-xy output variables … … 1472 1476 1473 1477 ! 1474 !-- Day of year, UTC 1475 WRITE ( io, 456 ) day_of_year_init, time_utc_init 1476 1478 !-- Day and time during model start 1479 CALL get_date_time( 0.0_wp, date_time_str=date_time_str ) 1480 WRITE ( io, 456 ) TRIM( date_time_str ) 1481 1477 1482 ! 1478 1483 !-- Other quantities … … 1858 1863 454 FORMAT (' TKE is not allowed to fall below ',E9.2,' (m/s)**2') 1859 1864 455 FORMAT (' initial TKE is prescribed as ',E9.2,' (m/s)**2') 1860 456 FORMAT (/' Day of the year at model start : day_init = ',I3 & 1861 /' UTC time at model start : time_utc_init = ',F7.1,' s') 1865 456 FORMAT (/' Date and time at model start : ',A) 1862 1866 457 FORMAT (' RANS-mode constants: c_0 = ',F9.5/ & 1863 1867 ' c_1 = ',F9.5/ & -
palm/trunk/SOURCE/indoor_model_mod.f90
r4217 r4227 21 21 ! Current revisions: 22 22 ! ----------------- 23 ! 24 ! 23 ! 24 ! 25 25 ! Former revisions: 26 26 ! ----------------- 27 27 ! $Id$ 28 ! implement new palm_date_time_mod 29 ! 30 ! 4217 2019-09-04 09:47:05Z scharf 28 31 ! Corrected "Former revisions" section 29 32 ! … … 1053 1056 ! ONLY: c_p 1054 1057 1055 ! USE control_parameters, & 1056 ! ONLY: rho_surface 1057 1058 USE date_and_time_mod, & 1059 ONLY: time_utc 1058 USE control_parameters, & 1059 ONLY: time_since_reference_point 1060 1060 1061 1061 USE grid_variables, & 1062 1062 ONLY: dx, dy 1063 1064 USE palm_date_time_mod, & 1065 ONLY: get_date_time, seconds_per_hour 1063 1066 1064 1067 USE pegrid … … 1085 1088 REAL(wp) :: indoor_wall_window_temperature !< weighted temperature of innermost wall/window layer 1086 1089 REAL(wp) :: near_facade_temperature !< outside air temperature 10cm away from facade 1090 REAL(wp) :: second_of_day !< second of the current day 1087 1091 REAL(wp) :: time_utc_hour !< time of day (hour UTC) 1088 1092 … … 1091 1095 ! 1092 1096 !-- Determine time of day in hours. 1093 time_utc_hour = time_utc / 3600.0_wp 1097 CALL get_date_time( time_since_reference_point, second_of_day=second_of_day ) 1098 time_utc_hour = second_of_day / seconds_per_hour 1094 1099 ! 1095 1100 !-- Following calculations must be done for each facade element. -
palm/trunk/SOURCE/init_3d_model.f90
r4187 r4227 25 25 ! ----------------- 26 26 ! $Id$ 27 ! implement new palm_date_time_mod 28 ! 29 ! 4223 2019-09-10 09:20:47Z gronemeier 27 30 ! Deallocate temporary string array since it may be re-used to read different 28 31 ! input data in other modules … … 177 180 ONLY: nesting_offl_init 178 181 182 USE palm_date_time_mod, & 183 ONLY: set_reference_date_time 184 179 185 USE pegrid 180 186 … … 266 272 267 273 CALL location_message( 'model initialization', 'start' ) 274 ! 275 !-- Set reference date-time 276 CALL set_reference_date_time( date_time_str=origin_date_time ) 268 277 269 278 IF ( debug_output ) CALL debug_message( 'allocating arrays', 'start' ) -
palm/trunk/SOURCE/modules.f90
r4196 r4227 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Add origin_date_time 28 ! 29 ! 4146 2019-08-07 07:47:36Z gronemeier 27 30 ! Added rotation_angle 28 31 ! … … 471 474 CHARACTER (LEN=8) :: coupling_char = '' !< appended to filenames in coupled or nested runs ('_O': ocean PE, 472 475 !< '_NV': vertically nested atmosphere PE, '_N##': PE of nested domain ## 476 CHARACTER (LEN=23) :: origin_date_time = '2019-06-21 12:00:00 +00' !< date and time to be simulated 473 477 CHARACTER (LEN=10) :: run_date = ' ' !< date of simulation run 474 478 CHARACTER (LEN=8) :: run_time = ' ' !< time of simulation run -
palm/trunk/SOURCE/nesting_offl_mod.f90
r4226 r4227 20 20 ! Current revisions: 21 21 ! ------------------ 22 ! 22 ! implement new palm_date_time_mod 23 23 ! 24 24 ! Former revisions: … … 164 164 log_point_s 165 165 166 USE date_and_time_mod, &167 ONLY: time_utc_init168 169 166 USE grid_variables 170 167 … … 191 188 pids_id 192 189 190 USE palm_date_time_mod, & 191 ONLY: get_date_time 192 193 193 USE pegrid 194 194 … … 274 274 275 275 REAL(wp) :: fac_dt !< interpolation factor 276 REAL(wp) :: time_utc_init !< time in seconds-of-day of origin_date_time 276 277 REAL(wp) :: zi_ribulk = 0.0_wp !< boundary-layer depth according to bulk Richardson criterion, i.e. the height where Ri_bulk exceeds the critical 277 278 !< bulk Richardson number of 0.2 … … 1800 1801 INTEGER(iwp) :: n !< running index for chemical species 1801 1802 1803 ! 1804 !-- Get time_utc_init from origin_date_time 1805 CALL get_date_time( 0.0_wp, second_of_day = time_utc_init ) 1802 1806 1803 1807 !-- Allocate arrays for geostrophic wind components. Arrays will -
palm/trunk/SOURCE/netcdf_interface_mod.f90
r4196 r4227 25 25 ! ----------------- 26 26 ! $Id$ 27 ! Replace function date_time_string by call to get_date_time 28 ! 29 ! 4223 2019-09-10 09:20:47Z gronemeier 27 30 ! replaced rotation angle from input-netCDF file 28 31 ! by namelist parameter 'rotation_angle' … … 6869 6872 ONLY: revision, run_date, run_time, run_zone, runnr, version 6870 6873 6871 USE date_and_time_mod, &6872 ONLY: day_of_year_init, time_utc_init6873 6874 6874 USE netcdf_data_input_mod, & 6875 6875 ONLY: input_file_atts 6876 6876 6877 USE palm_date_time_mod, & 6878 ONLY: date_time_str_len, get_date_time 6879 6877 6880 IMPLICIT NONE 6878 6881 6879 CHARACTER(LEN= 23) :: origin_time_string !< string containing date andtime of origin6882 CHARACTER(LEN=date_time_str_len) :: origin_time_string !< string containing date-time of origin 6880 6883 6881 6884 CHARACTER(LEN=*), INTENT(IN) :: data_content !< describes the type of data in file … … 6885 6888 INTEGER, INTENT(IN) :: ncid !< file id 6886 6889 ! 6887 !-- Composedate-time string for origin_time6888 origin_time_string = date_time_string( day_of_year_init, time_utc_init)6890 !-- Get date-time string for origin_time 6891 CALL get_date_time( 0.0_wp, date_time_str=origin_time_string ) 6889 6892 6890 6893 #if defined( __netcdf ) … … 7242 7245 END SUBROUTINE convert_utm_to_geographic 7243 7246 7244 !------------------------------------------------------------------------------!7245 ! Description:7246 ! ------------7247 !> Compose string containing date and time of format 'YYYY-MM-DD hh:mm:ss ZZZ'7248 !> from day_of_year and second_of_day.7249 !------------------------------------------------------------------------------!7250 FUNCTION date_time_string( day_of_year, second_of_day )7251 7252 IMPLICIT NONE7253 7254 CHARACTER(LEN=1) :: plus_minus !< either '+' or '-'7255 7256 CHARACTER(LEN=23) :: date_time_string !< string containing date and time7257 7258 INTEGER(iwp) :: day !< day of month7259 INTEGER(iwp) :: err !< error code7260 INTEGER(iwp) :: i !< loop index7261 INTEGER(iwp) :: hour !< hour of the day7262 INTEGER(iwp) :: minute !< minute of the hour7263 INTEGER(iwp) :: month !< month of year7264 INTEGER(iwp) :: year = 2019 !< year (no leap year)7265 INTEGER(iwp) :: zone = 0 !< time zone7266 7267 INTEGER(iwp), INTENT(IN) :: day_of_year !< day of year to start with7268 7269 INTEGER, DIMENSION(12) :: days_per_month = & !< total number of days for7270 (/31,28,31,30,31,30,31,31,30,31,30,31/) !< each month (no leap year)7271 7272 REAL(wp) :: second !< second of the minute7273 7274 REAL(wp), INTENT(IN) :: second_of_day !< second of the day7275 7276 7277 err = 0_iwp7278 !7279 !-- Check day_of_year7280 IF ( day_of_year < 1_iwp .OR. day_of_year > SUM(days_per_month) ) THEN7281 err = err + 1_iwp7282 ENDIF7283 !7284 !-- Check second_of_day7285 IF ( second_of_day < 0.0_wp .OR. second_of_day > 86400.0_wp ) THEN7286 err = err + 2_iwp7287 ENDIF7288 !7289 !-- Execute only if given values are valid7290 IF ( err == 0_iwp ) THEN7291 7292 day = day_of_year7293 month = 0_iwp7294 7295 DO i = 1, 127296 day = day - days_per_month(i)7297 IF ( day < 0 ) THEN7298 day = day + days_per_month(i)7299 month = i7300 EXIT7301 ENDIF7302 ENDDO7303 7304 hour = INT( second_of_day / 3600.0_wp, KIND=iwp )7305 7306 second = second_of_day - 3600.0_wp * REAL( hour, KIND=wp )7307 7308 minute = INT( second / 60.0_wp, KIND=iwp )7309 7310 second = second - 60.0_wp * REAL( minute, KIND=wp )7311 7312 IF ( zone < 0_iwp ) THEN7313 plus_minus = '-'7314 ELSE7315 plus_minus = '+'7316 ENDIF7317 7318 WRITE( date_time_string, 100 ) &7319 year, month, day, hour, minute, INT( second, KIND=iwp ), &7320 plus_minus, zone7321 7322 ELSE7323 !7324 !-- Return empty string if input is invalid7325 date_time_string = REPEAT( " ", LEN(date_time_string) )7326 7327 ENDIF7328 7329 100 FORMAT (I4,'-',I2.2,'-',I2.2,1X,I2.2,':',I2.2,':',I2.2,1X,A1,I2.2)7330 7331 END FUNCTION date_time_string7332 7333 7247 END MODULE netcdf_interface -
palm/trunk/SOURCE/palm.f90
r4182 r4227 25 25 ! ----------------- 26 26 ! $Id$ 27 ! implement new palm_date_time_mod 28 ! 29 ! 4094 2019-07-12 09:24:21Z gronemeier 27 30 ! Corrected "Former revisions" section 28 31 ! … … 77 80 USE cpulog, & 78 81 ONLY: cpu_log, log_point, log_point_s, cpu_statistics 79 80 USE date_and_time_mod, &81 ONLY: calc_date_and_time, init_date_and_time82 82 83 83 USE diagnostic_output_quantities_mod, & … … 267 267 !-- Check control parameters and deduce further quantities 268 268 CALL check_parameters 269 !270 !-- Initial time for chem_emissions_mod271 CALL init_date_and_time272 269 273 270 CALL init_3d_model -
palm/trunk/SOURCE/parin.f90
r4196 r4227 25 25 ! ----------------- 26 26 ! $Id$ 27 ! implement new palm_date_time_mod 28 ! 29 ! 4146 2019-08-07 07:47:36Z gronemeier 27 30 ! added rotation_angle to initialization_parameters 28 31 ! … … 94 97 USE cpulog, & 95 98 ONLY: cpu_log_barrierwait 96 97 USE date_and_time_mod, &98 ONLY: date_init, day_of_year_init, time_utc_init99 99 100 100 USE grid_variables, & … … 164 164 cycle_mg, damp_level_1d, & 165 165 data_output_during_spinup, & 166 date_init, & 167 day_of_year_init, & 166 origin_date_time, & 168 167 dissipation_1d, & 169 168 dp_external, dp_level_b, dp_smooth, dpdxy, & … … 203 202 surface_scalarflux, surface_waterflux, & 204 203 s_surface, s_surface_initial_change, s_vertical_gradient, & 205 s_vertical_gradient_level, time _utc_init, timestep_scheme,&204 s_vertical_gradient_level, timestep_scheme, & 206 205 topography, topography_grid_convention, top_heatflux, & 207 206 top_momentumflux_u, top_momentumflux_v, & … … 238 237 cycle_mg, damp_level_1d, & 239 238 data_output_during_spinup, & 240 date_init, & 241 day_of_year_init, & 239 origin_date_time, & 242 240 dissipation_1d, & 243 241 dp_external, dp_level_b, dp_smooth, dpdxy, & … … 276 274 surface_scalarflux, surface_waterflux, & 277 275 s_surface, s_surface_initial_change, s_vertical_gradient, & 278 s_vertical_gradient_level, time _utc_init, timestep_scheme,&276 s_vertical_gradient_level, timestep_scheme, & 279 277 topography, topography_grid_convention, top_heatflux, & 280 278 top_momentumflux_u, top_momentumflux_v, & -
palm/trunk/SOURCE/radiation_model_mod.f90
r4226 r4227 28 28 ! ----------------- 29 29 ! $Id$ 30 ! implement new palm_date_time_mod 31 ! 32 ! 4226 2019-09-10 17:03:24Z suehring 30 33 ! - Netcdf input routine for dimension length renamed 31 34 ! - Define time variable for external radiation input relative to time_utc_init … … 232 235 ONLY: ddx, ddy, dx, dy 233 236 234 USE date_and_time_mod, &235 ONLY: calc_date_and_time, d_hours_day, d_seconds_hour, d_seconds_year,&236 day_of_year, d_seconds_year, day_of_month, day_of_year_init, &237 init_date_and_time, month_of_year, time_utc_init, time_utc238 239 237 USE indices, & 240 238 ONLY: nnx, nny, nx, nxl, nxlg, nxr, nxrg, ny, nyn, nyng, nys, nysg, & … … 275 273 real_1d_3d, & 276 274 vars_pids 275 276 USE palm_date_time_mod, & 277 ONLY: date_time_str_len, get_date_time, & 278 hours_per_day, seconds_per_hour 277 279 278 280 USE plant_canopy_model_mod, & … … 387 389 time_radiation = 0.0_wp !< time since last call of radiation code 388 390 391 INTEGER(iwp) :: day_of_year !< day of the current year 389 392 390 393 REAL(wp) :: cos_zenith !< cosine of solar zenith angle, also z-coordinate of solar unit vector 394 REAL(wp) :: d_hours_day !< 1 / hours-per-day 395 REAL(wp) :: d_seconds_hour !< 1 / seconds-per-hour 396 REAL(wp) :: second_of_day !< second of the current day 391 397 REAL(wp) :: sun_dir_lat !< y-coordinate of solar unit vector 392 398 REAL(wp) :: sun_dir_lon !< x-coordinate of solar unit vector … … 1520 1526 CALL message( 'init_3d_model', 'PA0348', 0, 1, 0, 6, 0 ) 1521 1527 ENDIF 1528 ! 1529 !-- Precalculate some time constants 1530 d_hours_day = 1.0_wp / REAL( hours_per_day, KIND = wp ) 1531 d_seconds_hour = 1.0_wp / seconds_per_hour 1532 1522 1533 ! 1523 1534 !-- If required, initialize radiation interactions between surfaces … … 2280 2291 !-- Calculate initial values of current (cosine of) the zenith angle and 2281 2292 !-- whether the sun is up 2282 CALL calc_zenith2283 ! 2284 !-- readjust date and time to its initial value 2285 CALL init_date_and_time2293 CALL get_date_time( time_since_reference_point, & 2294 day_of_year=day_of_year, & 2295 second_of_day=second_of_day ) 2296 CALL calc_zenith( day_of_year, second_of_day ) 2286 2297 ! 2287 2298 !-- Calculate initial surface albedo for different surfaces … … 2640 2651 ENDIF 2641 2652 2642 IF ( time_rad_f%var1d(0) /= time_utc_init ) THEN 2653 CALL get_date_time( 0.0_wp, second_of_day=second_of_day ) 2654 2655 IF ( time_rad_f%var1d(0) /= second_of_day ) THEN 2643 2656 message_string = 'External radiation forcing: first point in ' // & 2644 'time is /= time_utc_init.'2657 'time is /= origin_date_time.' 2645 2658 CALL message( 'radiation_init', 'PA0313', 1, 2, 0, 6, 0 ) 2646 2659 ENDIF 2647 2660 2648 2661 IF ( end_time - spinup_time > time_rad_f%var1d(ntime-1) & 2649 - time_utc_init) THEN2662 - second_of_day ) THEN 2650 2663 message_string = 'External radiation forcing does not cover ' // & 2651 2664 'the entire simulation time.' … … 2765 2778 2766 2779 END SELECT 2767 !2768 !-- Readjust date and time to its initial value2769 CALL init_date_and_time2770 2780 2771 2781 ! … … 2821 2831 LOGICAL :: horizontal !< flag indicating treatment of horinzontal surfaces 2822 2832 2823 REAL(wp) :: fac_dt !< interpolation factor 2833 REAL(wp) :: fac_dt !< interpolation factor 2834 REAL(wp) :: second_of_day_init !< second of the day at model start 2824 2835 2825 2836 TYPE(surf_type), POINTER :: surf !< pointer on respective surface type, used to generalize routine … … 2827 2838 ! 2828 2839 !-- Calculate current zenith angle 2829 CALL calc_zenith 2840 CALL get_date_time( time_since_reference_point, & 2841 day_of_year=day_of_year, & 2842 second_of_day=second_of_day ) 2843 CALL calc_zenith( day_of_year, second_of_day ) 2830 2844 ! 2831 2845 !-- Interpolate external radiation on current timestep … … 2835 2849 fac_dt = 0 2836 2850 ELSE 2851 CALL get_date_time( 0.0_wp, second_of_day=second_of_day_init ) 2837 2852 t = 0 2838 2853 DO WHILE ( time_rad_f%var1d(t) <= & 2839 time_since_reference_point + time_utc_init )2854 time_since_reference_point + second_of_day_init ) 2840 2855 t = t + 1 2841 2856 ENDDO … … 2843 2858 tm = MAX( t-1, 0 ) 2844 2859 2845 fac_dt = ( time_since_reference_point + time_utc_init&2860 fac_dt = ( time_since_reference_point + second_of_day_init & 2846 2861 - time_rad_f%var1d(tm) + dt_3d ) & 2847 2862 / ( time_rad_f%var1d(t) - time_rad_f%var1d(tm) ) … … 3067 3082 SUBROUTINE radiation_clearsky 3068 3083 3069 3070 3084 IMPLICIT NONE 3071 3085 3072 3086 INTEGER(iwp) :: l !< running index for surface orientation 3073 3087 3074 3088 LOGICAL :: horizontal !< flag indicating treatment of horinzontal surfaces 3075 3089 3076 3090 REAL(wp) :: pt1 !< potential temperature at first grid level or mean value at urban layer top 3077 3091 REAL(wp) :: pt1_l !< potential temperature at first grid level or mean value at urban layer top at local subdomain … … 3083 3097 ! 3084 3098 !-- Calculate current zenith angle 3085 CALL calc_zenith 3099 CALL get_date_time( time_since_reference_point, & 3100 day_of_year=day_of_year, & 3101 second_of_day=second_of_day ) 3102 CALL calc_zenith( day_of_year, second_of_day ) 3086 3103 3087 3104 ! … … 3632 3649 ONLY: nbgp 3633 3650 3651 USE palm_date_time_mod, & 3652 ONLY: hours_per_day 3653 3634 3654 USE particle_attributes, & 3635 3655 ONLY: grid_particles, number_of_particles, particles, prt_count … … 3642 3662 INTEGER(iwp) :: k_topo !< topography top index 3643 3663 3664 REAL(wp) :: d_hours_day !< 1 / hours-per-day 3644 3665 REAL(wp) :: nc_rad, & !< number concentration of cloud droplets 3645 3666 s_r2, & !< weighted sum over all droplets with r^2 … … 3662 3683 3663 3684 ! 3685 !-- Pre-calculate parameters 3686 d_hours_day = 1.0_wp / REAL( hours_per_day, KIND=wp ) 3687 3688 ! 3664 3689 !-- Calculate current (cosine of) zenith angle and whether the sun is up 3665 CALL calc_zenith 3690 CALL get_date_time( time_since_reference_point, & 3691 day_of_year=day_of_year, & 3692 second_of_day=second_of_day ) 3693 CALL calc_zenith( day_of_year, second_of_day ) 3666 3694 zenith(0) = cos_zenith 3667 3695 ! … … 4548 4576 !> Calculate the cosine of the zenith angle (variable is called zenith) 4549 4577 !------------------------------------------------------------------------------! 4550 SUBROUTINE calc_zenith 4578 SUBROUTINE calc_zenith( day_of_year, second_of_day ) 4579 4580 USE palm_date_time_mod, & 4581 ONLY: seconds_per_day 4551 4582 4552 4583 IMPLICIT NONE 4553 4584 4554 REAL(wp) :: declination, & !< solar declination angle 4555 hour_angle !< solar hour angle 4556 ! 4557 !-- Calculate current day and time based on the initial values and simulation 4558 !-- time 4559 CALL calc_date_and_time 4560 4561 ! 4562 !-- Calculate solar declination and hour angle 4585 INTEGER(iwp), INTENT(IN) :: day_of_year !< day of the year 4586 4587 REAL(wp) :: declination !< solar declination angle 4588 REAL(wp) :: hour_angle !< solar hour angle 4589 REAL(wp), INTENT(IN) :: second_of_day !< current time of the day in UTC 4590 4591 ! 4592 !-- Calculate solar declination and hour angle 4563 4593 declination = ASIN( decl_1 * SIN(decl_2 * REAL(day_of_year, KIND=wp) - decl_3) ) 4564 hour_angle = 2.0_wp * pi * ( time_utc / 86400.0_wp) + lon - pi4594 hour_angle = 2.0_wp * pi * ( second_of_day / seconds_per_day ) + lon - pi 4565 4595 4566 4596 ! … … 5417 5447 5418 5448 sun_direction = .TRUE. 5419 CALL calc_zenith !< required also for diffusion radiation 5420 5449 CALL get_date_time( time_since_reference_point, & 5450 day_of_year=day_of_year, & 5451 second_of_day=second_of_day ) 5452 CALL calc_zenith( day_of_year, second_of_day ) !< required also for diffusion radiation 5453 5454 ! 5421 5455 !-- prepare rotated normal vectors and irradiance factor 5422 5456 vnorm(1,:) = kdir(:) … … 6240 6274 !------------------------------------------------------------------------------! 6241 6275 SUBROUTINE calc_diffusion_radiation 6242 6243 INTEGER(iwp) :: i !< grid index x-direction 6244 INTEGER(iwp) :: j !< grid index y-direction 6245 6246 REAL(wp) :: year_angle !< angle 6247 REAL(wp) :: etr !< extraterestrial radiation 6248 REAL(wp) :: corrected_solarUp !< corrected solar up radiation 6249 REAL(wp) :: horizontalETR !< horizontal extraterestrial radiation 6250 REAL(wp) :: clearnessIndex !< clearness index 6251 REAL(wp) :: diff_frac !< diffusion fraction of the radiation 6252 6253 REAL(wp), PARAMETER :: lowest_solarUp = 0.1_wp !< limit the sun elevation to protect stability of the calculation 6254 ! 6276 6277 USE palm_date_time_mod, & 6278 ONLY: seconds_per_day 6279 6280 INTEGER(iwp) :: i !< grid index x-direction 6281 INTEGER(iwp) :: j !< grid index y-direction 6282 INTEGER(iwp) :: days_per_year !< days in the current year 6283 6284 REAL(wp) :: clearnessIndex !< clearness index 6285 REAL(wp) :: corrected_solarUp !< corrected solar up radiation 6286 REAL(wp) :: diff_frac !< diffusion fraction of the radiation 6287 REAL(wp) :: etr !< extraterestrial radiation 6288 REAL(wp) :: horizontalETR !< horizontal extraterestrial radiation 6289 REAL(wp), PARAMETER :: lowest_solarUp = 0.1_wp !< limit the sun elevation to protect stability of the calculation 6290 REAL(wp) :: second_of_year !< current second of the year 6291 REAL(wp) :: year_angle !< angle 6292 6293 ! 6255 6294 !-- Calculate current day and time based on the initial values and simulation time 6256 year_angle = ( (day_of_year_init * 86400) + time_utc_init & 6257 + time_since_reference_point ) * d_seconds_year & 6258 * 2.0_wp * pi 6259 6295 CALL get_date_time( time_since_reference_point, & 6296 second_of_year = second_of_year, & 6297 days_per_year = days_per_year ) 6298 year_angle = second_of_year / ( REAL( days_per_year, KIND=wp ) * seconds_per_day ) & 6299 * 2.0_wp * pi 6300 6260 6301 etr = solar_constant * (1.00011_wp + & 6261 6302 0.034221_wp * cos(year_angle) + & … … 6263 6304 0.000719_wp * cos(2.0_wp * year_angle) + & 6264 6305 0.000077_wp * sin(2.0_wp * year_angle)) 6265 !6306 6266 6307 !-- 6267 6308 !-- Under a very low angle, we keep extraterestrial radiation at … … 8564 8605 IMPLICIT NONE 8565 8606 8566 INTEGER(iwp) :: it, i, j 8567 INTEGER(iwp) :: day_of_month_prev,month_of_year_prev 8568 REAL(wp) :: tsrp_prev 8569 REAL(wp) :: simulated_time_prev 8570 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: dsidir_tmp !< dsidir_tmp[:,i] = unit vector of i-th 8571 !< appreant solar direction 8607 INTEGER(iwp) :: it, i, j !< loop indices 8608 8609 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: dsidir_tmp !< dsidir_tmp[:,i] = unit vector of i-th 8610 !< appreant solar direction 8572 8611 8573 8612 ALLOCATE ( dsidir_rev(0:raytrace_discrete_elevs/2-1, & … … 8577 8616 raytrace_discrete_elevs/2*raytrace_discrete_azims) ) 8578 8617 ndsidir = 0 8579 8580 !8581 !-- We will artificialy update time_since_reference_point and return to8582 !-- true value later8583 tsrp_prev = time_since_reference_point8584 simulated_time_prev = simulated_time8585 day_of_month_prev = day_of_month8586 month_of_year_prev = month_of_year8587 8618 sun_direction = .TRUE. 8588 8589 ! 8590 !-- initialize the simulated_time 8591 simulated_time = 0._wp 8619 8592 8620 ! 8593 8621 !-- Process spinup time if configured 8594 8622 IF ( spinup_time > 0._wp ) THEN 8595 8623 DO it = 0, CEILING(spinup_time / dt_spinup) 8596 time_since_reference_point = -spinup_time + REAL(it, wp) * dt_spinup 8597 simulated_time = simulated_time + dt_spinup 8598 CALL simulate_pos 8624 CALL simulate_pos( it * dt_spinup - spinup_time ) 8599 8625 ENDDO 8600 8626 ENDIF … … 8602 8628 !-- Process simulation time 8603 8629 DO it = 0, CEILING(( end_time - spinup_time ) / dt_radiation) 8604 time_since_reference_point = REAL(it, wp) * dt_radiation 8605 simulated_time = simulated_time + dt_radiation 8606 CALL simulate_pos 8630 CALL simulate_pos( it * dt_radiation ) 8607 8631 ENDDO 8608 8632 ! 8609 !-- Return date and time to its original values8610 time_since_reference_point = tsrp_prev8611 simulated_time = simulated_time_prev8612 day_of_month = day_of_month_prev8613 month_of_year = month_of_year_prev8614 CALL init_date_and_time8615 8616 8633 !-- Allocate global vars which depend on ndsidir 8617 8634 ALLOCATE ( dsidir ( 3, ndsidir ) ) … … 8634 8651 !> Simuates a single position 8635 8652 !------------------------------------------------------------------------! 8636 SUBROUTINE simulate_pos 8637 IMPLICIT NONE 8653 SUBROUTINE simulate_pos( time_since_reference_local ) 8654 8655 REAL(wp), INTENT(IN) :: time_since_reference_local !< local time since reference 8638 8656 ! 8639 8657 !-- Update apparent solar position based on modified t_s_r_p 8640 CALL calc_zenith 8658 CALL get_date_time( time_since_reference_local, & 8659 day_of_year=day_of_year, & 8660 second_of_day=second_of_day ) 8661 CALL calc_zenith( day_of_year, second_of_day ) 8641 8662 IF ( cos_zenith > 0 ) THEN 8642 8663 !-- -
palm/trunk/SOURCE/read_restart_data_mod.f90
r4182 r4227 25 25 ! ----------------- 26 26 ! $Id$ 27 ! implement new palm_date_time_mod and increased binary version 28 ! 29 ! 4146 2019-08-07 07:47:36Z gronemeier 27 30 ! Corrected "Former revisions" section 28 31 ! … … 94 97 ONLY: cpu_log, log_point_s 95 98 96 USE date_and_time_mod, &97 ONLY: day_of_year_init, time_utc_init98 99 99 USE diagnostic_output_quantities_mod, & 100 100 ONLY: ti_av, uu_av, vv_av, ww_av … … 193 193 READ ( 13 ) version_on_file 194 194 195 binary_version_global = '4. 8'195 binary_version_global = '4.9' 196 196 IF ( TRIM( version_on_file ) /= TRIM( binary_version_global ) ) THEN 197 197 WRITE( message_string, * ) 'version mismatch concerning ', & … … 374 374 CASE ( 'damp_level_1d' ) 375 375 READ ( 13 ) damp_level_1d 376 CASE ( ' day_of_year_init' )377 READ ( 13 ) day_of_year_init376 CASE ( 'origin_date_time' ) 377 READ ( 13 ) origin_date_time 378 378 CASE ( 'dissipation_1d' ) 379 379 READ ( 13 ) dissipation_1d … … 638 638 CASE ( 'time_since_reference_point' ) 639 639 READ ( 13 ) time_since_reference_point 640 CASE ( 'time_utc_init' )641 READ ( 13 ) time_utc_init642 640 CASE ( 'time_virtual_measurement' ) 643 641 READ ( 13 ) time_virtual_measurement -
palm/trunk/SOURCE/salsa_mod.f90
r4226 r4227 26 26 ! ----------------- 27 27 ! $Id$ 28 ! implement new palm_date_time_mod 29 ! 30 ! 4226 2019-09-10 17:03:24Z suehring 28 31 ! Netcdf input routine for dimension length renamed 29 32 ! … … 8385 8388 SUBROUTINE salsa_emission_setup( init ) 8386 8389 8387 USE date_and_time_mod, &8388 ONLY: day_of_month, hour_of_day, index_dd, index_hh, index_mm, month_of_year, &8389 time_default_indices, time_utc_init8390 8391 8390 USE netcdf_data_input_mod, & 8392 8391 ONLY: check_existence, close_input_file, get_attribute, get_variable, & … … 8394 8393 get_dimension_length, open_read_file, street_type_f 8395 8394 8395 USE palm_date_time_mod, & 8396 ONLY: days_per_week, get_date_time, hours_per_day, months_per_year, seconds_per_hour 8397 8396 8398 USE surface_mod, & 8397 8399 ONLY: surf_def_h, surf_lsm_h, surf_usm_h … … 8403 8405 CHARACTER(LEN=25) :: mod_name !< name in the input file 8404 8406 8405 INTEGER(iwp) :: i !< loop index 8406 INTEGER(iwp) :: ib !< loop index: aerosol number bins 8407 INTEGER(iwp) :: ic !< loop index: aerosol chemical components 8408 INTEGER(iwp) :: id_salsa !< NetCDF id of aerosol emission input file 8409 INTEGER(iwp) :: in !< loop index: emission category 8410 INTEGER(iwp) :: inn !< loop index 8411 INTEGER(iwp) :: j !< loop index 8412 INTEGER(iwp) :: ss !< loop index 8407 INTEGER(iwp) :: day_of_month !< day of the month 8408 INTEGER(iwp) :: day_of_week !< day of the week 8409 INTEGER(iwp) :: day_of_year !< day of the year 8410 INTEGER(iwp) :: hour_of_day !< hour of the day 8411 INTEGER(iwp) :: i !< loop index 8412 INTEGER(iwp) :: ib !< loop index: aerosol number bins 8413 INTEGER(iwp) :: ic !< loop index: aerosol chemical components 8414 INTEGER(iwp) :: id_salsa !< NetCDF id of aerosol emission input file 8415 INTEGER(iwp) :: in !< loop index: emission category 8416 INTEGER(iwp) :: index_dd !< index day 8417 INTEGER(iwp) :: index_hh !< index hour 8418 INTEGER(iwp) :: index_mm !< index month 8419 INTEGER(iwp) :: inn !< loop index 8420 INTEGER(iwp) :: j !< loop index 8421 INTEGER(iwp) :: month_of_year !< month of the year 8422 INTEGER(iwp) :: ss !< loop index 8413 8423 8414 8424 INTEGER(iwp), DIMENSION(maxspec) :: cc_i2m !< … … 8417 8427 8418 8428 LOGICAL, INTENT(in) :: init !< if .TRUE. --> initialisation call 8429 8430 REAL(wp) :: second_of_day !< second of the day 8419 8431 8420 8432 REAL(wp), DIMENSION(:), ALLOCATABLE :: nsect_emission !< sectional number emission … … 8662 8674 ! 8663 8675 !-- Next emission update 8664 next_aero_emission_update = MOD( time_utc_init, 3600.0_wp ) - 3600.0_wp 8676 CALL get_date_time( 0.0_wp, second_of_day=second_of_day ) 8677 next_aero_emission_update = MOD( second_of_day, seconds_per_hour ) - seconds_per_hour 8665 8678 ! 8666 8679 !-- Get chemical composition (i.e. mass fraction of different species) in aerosols … … 8818 8831 ! 8819 8832 !-- Get the index of the current hour 8820 CALL time_default_indices( month_of_year, day_of_month, hour_of_day, index_hh ) 8833 CALL get_date_time( time_since_reference_point, & 8834 day_of_year=day_of_year, hour=hour_of_day ) 8835 index_hh = ( day_of_year - 1_iwp ) * hours_per_day + hour_of_day 8821 8836 aero_emission_att%time_factor = aero_emission_att%etf(:,index_hh) 8822 8837 … … 8825 8840 !-- Get the index of current hour (index_hh) (TODO: Now "workday" is always assumed. 8826 8841 !-- Needs to be calculated.) 8827 CALL time_default_indices( daytype, month_of_year, day_of_month, hour_of_day, & 8828 index_mm, index_dd, index_hh ) 8842 CALL get_date_time( time_since_reference_point, & 8843 month=month_of_year, & 8844 day=day_of_month, & 8845 hour=hour_of_day, & 8846 day_of_week=day_of_week ) 8847 index_mm = month_of_year 8848 index_dd = months_per_year + day_of_week 8849 SELECT CASE(TRIM(daytype)) 8850 8851 CASE ("workday") 8852 index_hh = months_per_year + days_per_week + hour_of_day 8853 8854 CASE ("weekend") 8855 index_hh = months_per_year + days_per_week + hours_per_day + hour_of_day 8856 8857 CASE ("holiday") 8858 index_hh = months_per_year + days_per_week + 2*hours_per_day + hour_of_day 8859 8860 END SELECT 8829 8861 aero_emission_att%time_factor = aero_emission_att%etf(:,index_mm) * & 8830 8862 aero_emission_att%etf(:,index_dd) * & … … 9119 9151 SUBROUTINE salsa_gas_emission_setup( init ) 9120 9152 9121 USE date_and_time_mod, &9122 ONLY: day_of_month, hour_of_day, index_dd, index_hh, index_mm, month_of_year, &9123 time_default_indices, time_utc_init9124 9125 9153 USE netcdf_data_input_mod, & 9126 9154 ONLY: check_existence, close_input_file, get_attribute, get_variable, & … … 9128 9156 get_dimension_length, open_read_file 9129 9157 9158 USE palm_date_time_mod, & 9159 ONLY: days_per_week, get_date_time, hours_per_day, months_per_year, seconds_per_hour 9160 9130 9161 USE surface_mod, & 9131 9162 ONLY: surf_def_h, surf_lsm_h, surf_usm_h … … 9138 9169 CHARACTER(LEN=100), DIMENSION(:), ALLOCATABLE :: var_names !< variable names in input data 9139 9170 9171 9172 INTEGER(iwp) :: day_of_month !< day of the month 9173 INTEGER(iwp) :: day_of_week !< day of the week 9174 INTEGER(iwp) :: day_of_year !< day of the year 9175 INTEGER(iwp) :: hour_of_day !< hour of the day 9140 9176 INTEGER(iwp) :: id_chem !< NetCDF id of chemistry emission file 9141 9177 INTEGER(iwp) :: i !< loop index 9142 9178 INTEGER(iwp) :: ig !< loop index 9143 9179 INTEGER(iwp) :: in !< running index for emission categories 9180 INTEGER(iwp) :: index_dd !< index day 9181 INTEGER(iwp) :: index_hh !< index hour 9182 INTEGER(iwp) :: index_mm !< index month 9144 9183 INTEGER(iwp) :: j !< loop index 9184 INTEGER(iwp) :: month_of_year !< month of the year 9145 9185 INTEGER(iwp) :: num_vars !< number of variables 9146 9186 … … 9148 9188 9149 9189 LOGICAL, INTENT(in) :: init !< if .TRUE. --> initialisation call 9190 9191 REAL(wp) :: second_of_day !< second of the day 9150 9192 9151 9193 REAL(wp), DIMENSION(:), ALLOCATABLE :: time_factor !< emission time factor … … 9258 9300 ! 9259 9301 !-- Next emission update 9260 next_gas_emission_update = MOD( time_utc_init, 3600.0_wp ) - 3600.0_wp 9302 CALL get_date_time( time_since_reference_point, second_of_day=second_of_day ) 9303 next_gas_emission_update = MOD( second_of_day, seconds_per_hour ) - seconds_per_hour 9261 9304 ! 9262 9305 !-- Allocate and read surface emission data (in total PM) (NOTE that "preprocessed" input data … … 9303 9346 ! 9304 9347 !-- Get the index of the current hour 9305 CALL time_default_indices( month_of_year, day_of_month, hour_of_day, index_hh ) 9348 CALL get_date_time( time_since_reference_point, & 9349 day_of_year=day_of_year, hour=hour_of_day ) 9350 index_hh = ( day_of_year - 1_iwp ) * hours_per_day + hour_of_day 9306 9351 time_factor = chem_emission_att%hourly_emis_time_factor(:,index_hh) 9307 9352 … … 9310 9355 !-- Get the index of current hour (index_hh) (TODO: Now "workday" is always assumed. 9311 9356 !-- Needs to be calculated.) 9312 CALL time_default_indices( daytype, month_of_year, day_of_month, hour_of_day, & 9313 index_mm, index_dd, index_hh ) 9357 CALL get_date_time( time_since_reference_point, & 9358 month=month_of_year, & 9359 day=day_of_month, & 9360 hour=hour_of_day, & 9361 day_of_week=day_of_week ) 9362 index_mm = month_of_year 9363 index_dd = months_per_year + day_of_week 9364 SELECT CASE(TRIM(daytype)) 9365 9366 CASE ("workday") 9367 index_hh = months_per_year + days_per_week + hour_of_day 9368 9369 CASE ("weekend") 9370 index_hh = months_per_year + days_per_week + hours_per_day + hour_of_day 9371 9372 CASE ("holiday") 9373 index_hh = months_per_year + days_per_week + 2*hours_per_day + hour_of_day 9374 9375 END SELECT 9314 9376 time_factor = chem_emission_att%mdh_emis_time_factor(:,index_mm) * & 9315 9377 chem_emission_att%mdh_emis_time_factor(:,index_dd) * & -
palm/trunk/SOURCE/time_integration.f90
r4226 r4227 25 25 ! ----------------- 26 26 ! $Id$ 27 ! implement new palm_date_time_mod 28 ! 29 ! 4226 2019-09-10 17:03:24Z suehring 27 30 ! Changes in interface for the offline nesting 28 31 ! … … 224 227 ONLY: cpu_log, log_point, log_point_s 225 228 226 USE date_and_time_mod, &227 ONLY: calc_date_and_time, hour_call_emis, hour_of_year228 229 229 USE diagnostic_output_quantities_mod, & 230 230 ONLY: doq_calculate, & … … 272 272 ONLY: prho_reference 273 273 274 USE palm_date_time_mod, & 275 ONLY: get_date_time 276 274 277 USE particle_attributes, & 275 278 ONLY: particle_advection, particle_advection_start, use_sgs_for_particles, wang_kernel … … 367 370 CHARACTER (LEN=9) :: time_to_string !< 368 371 369 INTEGER(iwp) :: ib !< index for aerosol size bins 370 INTEGER(iwp) :: ic !< index for aerosol mass bins 371 INTEGER(iwp) :: icc !< additional index for aerosol mass bins 372 INTEGER(iwp) :: ig !< index for salsa gases 373 INTEGER(iwp) :: lsp 374 INTEGER(iwp) :: lsp_usr !< 375 INTEGER(iwp) :: mid !< masked output running index 376 INTEGER(iwp) :: n !< loop counter for chemistry species 372 INTEGER(iwp) :: hour !< hour of current time 373 INTEGER(iwp) :: hour_call_emis !< last hour where emission was called 374 INTEGER(iwp) :: ib !< index for aerosol size bins 375 INTEGER(iwp) :: ic !< index for aerosol mass bins 376 INTEGER(iwp) :: icc !< additional index for aerosol mass bins 377 INTEGER(iwp) :: ig !< index for salsa gases 378 INTEGER(iwp) :: lsp !< 379 INTEGER(iwp) :: lsp_usr !< 380 INTEGER(iwp) :: mid !< masked output running index 381 INTEGER(iwp) :: n !< loop counter for chemistry species 377 382 378 383 REAL(wp) :: dt_3d_old !< temporary storage of timestep to be used for … … 1192 1197 IF ( air_chemistry .AND. emissions_anthropogenic ) THEN 1193 1198 ! 1194 !-- Update the time --> kanani: revise location of this CALL1195 CALL calc_date_and_time1196 !1197 1199 !-- Call emission routine only once an hour 1198 IF ( hour_of_year > hour_call_emis ) THEN 1200 !> @todo Move check of hour_call_emis into chem_emissions_setup 1201 CALL get_date_time( time_since_reference_point, hour=hour ) 1202 IF ( hour_call_emis /= hour ) THEN 1203 !> @question Which of these two if-statements is correct? 1204 ! IF ( hour_of_year > hour_call_emis ) THEN 1199 1205 CALL chem_emissions_setup( chem_emis_att, chem_emis, n_matched_vars ) 1200 hour_call_emis = hour _of_year1206 hour_call_emis = hour 1201 1207 ENDIF 1202 1208 ENDIF … … 1236 1242 time_since_reference_point = simulated_time - coupling_start_time 1237 1243 simulated_time_chr = time_to_string( time_since_reference_point ) 1238 1239 1240 1244 1241 1245 -
palm/trunk/SOURCE/time_integration_spinup.f90
r4182 r4227 25 25 ! ----------------- 26 26 ! $Id$ 27 ! implement new palm_date_time_mod 28 ! 29 ! 4223 2019-09-10 09:20:47Z gronemeier 27 30 ! Corrected "Former revisions" section 28 31 ! … … 79 82 ONLY: cpu_log, log_point_s 80 83 81 USE date_and_time_mod, &82 ONLY: day_of_year_init, time_utc_init83 84 84 USE indices, & 85 85 ONLY: nbgp, nzb, nzt, nysg, nyng, nxlg, nxrg 86 86 87 88 87 USE land_surface_model_mod, & 89 88 ONLY: lsm_energy_balance, lsm_soil_model, lsm_swap_timelevel 89 90 90 USE pegrid 91 91 … … 94 94 95 95 USE kinds 96 97 USE palm_date_time_mod, & 98 ONLY: get_date_time, seconds_per_hour 96 99 97 100 USE radiation_model_mod, & … … 132 135 133 136 INTEGER(iwp) :: current_timestep_number_spinup = 0 !< number if timestep during spinup 137 INTEGER(iwp) :: day_of_year !< day of the year 134 138 135 139 LOGICAL :: run_control_header_spinup = .FALSE. !< flag parameter for steering whether the header information must be output 136 140 137 REAL(wp) :: pt_spinup !< temporary storage of temperature 138 REAL(wp) :: dt_save !< temporary storage for time step 141 REAL(wp) :: pt_spinup !< temporary storage of temperature 142 REAL(wp) :: dt_save !< temporary storage for time step 143 REAL(wp) :: second_of_day !< second of the day 139 144 140 145 REAL(wp), DIMENSION(:,:,:), ALLOCATABLE :: pt_save !< temporary storage of temperature … … 234 239 !-- shifted by one hour to simulate a lag between air temperature and 235 240 !-- incoming radiation 241 CALL get_date_time( simulated_time - spinup_time - seconds_per_hour, & 242 day_of_year=day_of_year, & 243 second_of_day=second_of_day ) 244 236 245 pt_spinup = spinup_pt_mean + spinup_pt_amplitude & 237 * solar_angle (time_utc_init + time_since_reference_point - 3600.0)246 * solar_angle(day_of_year, second_of_day) 238 247 239 248 ! … … 546 555 !-- Returns the cosine of the solar zenith angle at a given time. This routine 547 556 !-- is similar to that for calculation zenith (see radiation_model_mod.f90) 548 FUNCTION solar_angle( local_time ) 557 !> @todo Load function calc_zenith of radiation model instead of 558 !> rewrite the function here. 559 FUNCTION solar_angle( day_of_year, second_of_day ) 549 560 550 561 USE basic_constants_and_equations_mod, & … … 559 570 560 571 561 REAL(wp) :: solar_angle !< cosine of the solar zenith angle 562 563 REAL(wp) :: day !< day of the year 564 REAL(wp) :: declination !< solar declination angle 565 REAL(wp) :: hour_angle !< solar hour angle 566 REAL(wp) :: time_utc !< current time in UTC 567 REAL(wp), INTENT(IN) :: local_time 568 ! 569 !-- Calculate current day and time based on the initial values and simulation 570 !-- time 571 572 day = day_of_year_init + INT(FLOOR( local_time / 86400.0_wp ), KIND=iwp) 573 time_utc = MOD(local_time, 86400.0_wp) 574 575 572 INTEGER(iwp), INTENT(IN) :: day_of_year !< day of the year 573 574 REAL(wp) :: declination !< solar declination angle 575 REAL(wp) :: hour_angle !< solar hour angle 576 REAL(wp), INTENT(IN) :: second_of_day !< current time of the day in UTC 577 REAL(wp) :: solar_angle !< cosine of the solar zenith angle 576 578 ! 577 579 !-- Calculate solar declination and hour angle 578 declination = ASIN( decl_1 * SIN(decl_2 * REAL(day , KIND=wp) - decl_3) )579 hour_angle = 2.0_wp * pi * ( time_utc/ 86400.0_wp) + lon - pi580 declination = ASIN( decl_1 * SIN(decl_2 * REAL(day_of_year, KIND=wp) - decl_3) ) 581 hour_angle = 2.0_wp * pi * (second_of_day / 86400.0_wp) + lon - pi 580 582 581 583 ! … … 584 586 * COS(hour_angle) 585 587 586 587 588 END FUNCTION solar_angle 588 589 -
palm/trunk/SOURCE/urban_surface_mod.f90
r4214 r4227 28 28 ! ----------------- 29 29 ! $Id$ 30 ! implement new palm_date_time_mod 31 ! 32 ! 4214 2019-09-02 15:57:02Z suehring 30 33 ! Bugfix, missing initialization and clearing of soil-moisture tendency 31 34 ! (J.Resler) … … 222 225 ONLY: cpu_log, log_point, log_point_s 223 226 224 USE date_and_time_mod, &225 ONLY: time_utc_init226 227 227 USE grid_variables, & 228 228 ONLY: dx, dy, ddx, ddy, ddx2, ddy2 … … 236 236 USE kinds 237 237 238 USE palm_date_time_mod, & 239 ONLY: get_date_time, seconds_per_hour 240 238 241 USE pegrid 239 242 … … 8305 8308 !-- calculation of actual profile coefficient 8306 8309 !-- ??? check time_since_reference_point ??? 8307 dtime = mod(simulated_time + time_utc_init, 24.0_wp*3600.0_wp) 8308 dhour = INT(dtime/3600.0_wp) 8310 CALL get_date_time( time_since_reference_point, hour=dhour, second_of_day=dtime ) 8309 8311 8310 8312 !-- TO_DO: activate, if testcase is available … … 8319 8321 !-- given to anthropogenic heat aheat*acoef (W*m-2) 8320 8322 !-- linear interpolation of coeficient 8321 acoef = (REAL(dhour+1,wp)-dtime/ 3600.0_wp)*aheatprof(k,dhour) + &8322 (dtime/ 3600.0_wp-REAL(dhour,wp))*aheatprof(k,dhour+1)8323 acoef = (REAL(dhour+1,wp)-dtime/seconds_per_hour)*aheatprof(k,dhour) + & 8324 (dtime/seconds_per_hour-REAL(dhour,wp))*aheatprof(k,dhour+1) 8323 8325 IF ( aheat(k,j,i) > 0.0_wp ) THEN 8324 8326 ! -
palm/trunk/SOURCE/write_restart_data_mod.f90
r4182 r4227 25 25 ! ----------------- 26 26 ! $Id$ 27 ! implement new palm_date_time_mod and increased binary version 28 ! 29 ! 4146 2019-08-07 07:47:36Z gronemeier 27 30 ! Corrected "Former revisions" section 28 31 ! … … 67 70 USE control_parameters 68 71 69 USE date_and_time_mod, &70 ONLY: day_of_year_init, time_utc_init71 72 72 USE grid_variables, & 73 73 ONLY: dx, dy … … 147 147 148 148 149 binary_version_global = '4. 8'149 binary_version_global = '4.9' 150 150 151 151 CALL wrd_write_string( 'binary_version_global' ) … … 299 299 WRITE ( 14 ) damp_level_1d 300 300 301 CALL wrd_write_string( ' day_of_year_init' )302 WRITE ( 14 ) day_of_year_init301 CALL wrd_write_string( 'origin_date_time' ) 302 WRITE ( 14 ) origin_date_time 303 303 304 304 CALL wrd_write_string( 'dissipation_1d' ) … … 679 679 WRITE ( 14 ) time_since_reference_point 680 680 681 CALL wrd_write_string( 'time_utc_init' )682 WRITE ( 14 ) time_utc_init683 684 681 CALL wrd_write_string( 'time_virtual_measurement' ) 685 682 WRITE ( 14 ) time_virtual_measurement
Note: See TracChangeset
for help on using the changeset viewer.