Changeset 4029 for palm/trunk/SOURCE/time_integration.f90
- Timestamp:
- Jun 14, 2019 2:04:35 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
palm/trunk/SOURCE/time_integration.f90
r4022 r4029 25 25 ! ----------------- 26 26 ! $Id$ 27 ! exchange of ghost points and boundary conditions separated for chemical species and SALSA module, 28 ! bugfix: decycling of chemistry species after nesting data transfer 29 ! 30 ! 4022 2019-06-12 11:52:39Z suehring 27 31 ! Call synthetic turbulence generator at last RK3 substep right after boundary 28 32 ! conditions are updated in offline nesting in order to assure that … … 1068 1072 DO lsp = 1, nvar 1069 1073 CALL exchange_horiz( chem_species(lsp)%conc_p, nbgp ) 1070 ! 1071 !-- kanani: Push chem_boundary_conds after CALL boundary_conds 1074 ENDDO 1075 ENDIF 1076 1077 IF ( salsa .AND. time_since_reference_point >= skip_time_do_salsa ) THEN 1078 DO ib = 1, nbins_aerosol 1079 CALL exchange_horiz( aerosol_number(ib)%conc_p, nbgp ) 1080 DO ic = 1, ncomponents_mass 1081 icc = ( ic - 1 ) * nbins_aerosol + ib 1082 CALL exchange_horiz( aerosol_mass(icc)%conc_p, nbgp ) 1083 ENDDO 1084 ENDDO 1085 IF ( .NOT. salsa_gases_from_chem ) THEN 1086 DO ig = 1, ngases_salsa 1087 CALL exchange_horiz( salsa_gas(ig)%conc_p, nbgp ) 1088 ENDDO 1089 ENDIF 1090 ENDIF 1091 CALL cpu_log( log_point(26), 'exchange-horiz-progn', 'stop' ) 1092 1093 ! 1094 !-- Boundary conditions for the prognostic quantities (except of the 1095 !-- velocities at the outflow in case of a non-cyclic lateral wall) 1096 CALL boundary_conds 1097 1098 ! 1099 !-- Boundary conditions for prognostic quantitites of other modules: 1100 !-- Here, only decycling is carried out 1101 IF ( air_chemistry ) THEN 1102 1103 DO lsp = 1, nvar 1072 1104 lsp_usr = 1 1073 1105 DO WHILE ( TRIM( cs_name( lsp_usr ) ) /= 'novalue' ) 1074 IF ( TRIM( chem_species(lsp)%name) == TRIM(cs_name(lsp_usr)) ) THEN1106 IF ( TRIM( chem_species(lsp)%name ) == TRIM( cs_name(lsp_usr) ) ) THEN 1075 1107 CALL chem_boundary_conds( chem_species(lsp)%conc_p, & 1076 1108 chem_species(lsp)%conc_pr_init ) … … 1079 1111 ENDDO 1080 1112 ENDDO 1113 1081 1114 ENDIF 1082 1115 1083 1116 IF ( salsa .AND. time_since_reference_point >= skip_time_do_salsa ) THEN 1084 ! 1085 !-- Exchange ghost points and decycle boundary concentrations if needed 1117 1086 1118 DO ib = 1, nbins_aerosol 1087 CALL exchange_horiz( aerosol_number(ib)%conc_p, nbgp )1088 1119 CALL salsa_boundary_conds( aerosol_number(ib)%conc_p, aerosol_number(ib)%init ) 1089 1120 DO ic = 1, ncomponents_mass 1090 1121 icc = ( ic - 1 ) * nbins_aerosol + ib 1091 CALL exchange_horiz( aerosol_mass(icc)%conc_p, nbgp )1092 1122 CALL salsa_boundary_conds( aerosol_mass(icc)%conc_p, aerosol_mass(icc)%init ) 1093 1123 ENDDO … … 1095 1125 IF ( .NOT. salsa_gases_from_chem ) THEN 1096 1126 DO ig = 1, ngases_salsa 1097 CALL exchange_horiz( salsa_gas(ig)%conc_p, nbgp )1098 1127 CALL salsa_boundary_conds( salsa_gas(ig)%conc_p, salsa_gas(ig)%init ) 1099 1128 ENDDO 1100 1129 ENDIF 1101 ENDIF 1102 CALL cpu_log( log_point(26), 'exchange-horiz-progn', 'stop' ) 1103 1104 ! 1105 !-- Boundary conditions for the prognostic quantities (except of the 1106 !-- velocities at the outflow in case of a non-cyclic lateral wall) 1107 CALL boundary_conds 1130 1131 ENDIF 1132 1108 1133 ! 1109 1134 !-- Swap the time levels in preparation for the next time step. … … 1130 1155 1131 1156 IF ( TRIM( nesting_mode ) == 'two-way' .OR. nesting_mode == 'vertical' ) THEN 1157 1158 CALL cpu_log( log_point_s(92), 'exchange-horiz-nest', 'start' ) 1132 1159 ! 1133 1160 !-- Exchange_horiz is needed for all parent-domains after the … … 1170 1197 DO ib = 1, nbins_aerosol 1171 1198 CALL exchange_horiz( aerosol_number(ib)%conc, nbgp ) 1172 CALL salsa_boundary_conds( aerosol_number(ib)%conc, aerosol_number(ib)%init )1173 1199 DO ic = 1, ncomponents_mass 1174 1200 icc = ( ic - 1 ) * nbins_aerosol + ib 1175 1201 CALL exchange_horiz( aerosol_mass(icc)%conc, nbgp ) 1176 CALL salsa_boundary_conds( aerosol_mass(icc)%conc, aerosol_mass(icc)%init )1177 1202 ENDDO 1178 1203 ENDDO … … 1180 1205 DO ig = 1, ngases_salsa 1181 1206 CALL exchange_horiz( salsa_gas(ig)%conc, nbgp ) 1182 CALL salsa_boundary_conds( salsa_gas(ig)%conc, salsa_gas(ig)%init )1183 1207 ENDDO 1184 1208 ENDIF 1185 1209 ENDIF 1186 CALL cpu_log( log_point(26), 'exchange-horiz-progn', 'stop' ) 1187 1188 ENDIF 1210 CALL cpu_log( log_point_s(92), 'exchange-horiz-nest', 'stop' ) 1211 1212 ENDIF 1213 1189 1214 ! 1190 1215 !-- Set boundary conditions again after interpolation and anterpolation. 1191 1216 CALL pmci_boundary_conds 1217 1218 ! 1219 !-- Set chemistry boundary conditions (decycling) 1220 IF ( air_chemistry ) THEN 1221 DO lsp = 1, nvar 1222 lsp_usr = 1 1223 DO WHILE ( TRIM( cs_name( lsp_usr ) ) /= 'novalue' ) 1224 IF ( TRIM( chem_species(lsp)%name ) == TRIM( cs_name(lsp_usr) ) ) THEN 1225 CALL chem_boundary_conds( chem_species(lsp)%conc, & 1226 chem_species(lsp)%conc_pr_init ) 1227 ENDIF 1228 lsp_usr = lsp_usr + 1 1229 ENDDO 1230 ENDDO 1231 ENDIF 1232 1233 ! 1234 !-- Set SALSA boundary conditions (decycling) 1235 IF ( salsa .AND. time_since_reference_point >= skip_time_do_salsa ) THEN 1236 DO ib = 1, nbins_aerosol 1237 CALL salsa_boundary_conds( aerosol_number(ib)%conc, aerosol_number(ib)%init ) 1238 DO ic = 1, ncomponents_mass 1239 icc = ( ic - 1 ) * nbins_aerosol + ib 1240 CALL salsa_boundary_conds( aerosol_mass(icc)%conc, aerosol_mass(icc)%init ) 1241 ENDDO 1242 ENDDO 1243 IF ( .NOT. salsa_gases_from_chem ) THEN 1244 DO ig = 1, ngases_salsa 1245 CALL salsa_boundary_conds( salsa_gas(ig)%conc, salsa_gas(ig)%init ) 1246 ENDDO 1247 ENDIF 1248 ENDIF 1192 1249 1193 1250 CALL cpu_log( log_point(60), 'nesting', 'stop' )
Note: See TracChangeset
for help on using the changeset viewer.