- Timestamp:
- Jun 21, 2011, 11:16:18 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/phys/module_lmd_driver.F
r156 r170 162 162 ! LOCAL VARIABLES 163 163 !------------------------------------------- 164 INTEGER :: i,j,k,its,ite,jts,jte,ij 164 INTEGER :: i,j,k,its,ite,jts,jte,ij,kk 165 165 INTEGER :: subs,iii 166 REAL :: tau_decay 166 167 ! *** for Mars Mode 20 and 21 *** 168 REAL :: tau_decay, lct, zilctmin 169 INTEGER, SAVE :: zipbl(500) !index of zi in file input_zipbl 170 REAL, SAVE :: zilct(500) !corresponding local time in input_zipbl 171 INTEGER :: lctindex,ziindex 172 LOGICAL :: end_of_file 173 ! *** ----------------------- *** 167 174 168 175 ! *** for LMD physics … … 629 636 630 637 SELECT CASE (MARS_MODE) !! ONLY ALLOW FOR MODES DEFINED IN Registry.EM 631 CASE(4-10,12-19,2 1:) !! -- CHANGE THIS if YOU ADDED CASES in REGISTRY.EM638 CASE(4-10,12-19,22:) !! -- CHANGE THIS if YOU ADDED CASES in REGISTRY.EM 632 639 PRINT *, 'NOT SUPPORTED, to be done' 633 640 STOP … … 640 647 !package newwater mars==11 - scalar:qh2o,qh2o_ice,qdust,qdustn 641 648 !package radioac mars==20 - scalar:qtrac1 649 !package radioac2 mars==21 - scalar:upward,downward 642 650 !!!!!!!!!!!!!!!!!!! FOR REFERENCE 643 651 … … 664 672 CASE(20) 665 673 wtnom(1) = 'qtrac1' 674 CASE(21) 675 wtnom(1) = 'upward' 676 wtnom(2) = 'downward' 666 677 END SELECT 667 678 #endif 668 669 679 670 680 !!*******************************************!! … … 705 715 q_prof(:,1:nq) = SCALAR(i,kps:kpe,j,2:nq+1) !! the names were set above !! one dummy tracer in WRF 706 716 !!! CAS DU CO2 707 DO iii=1,nq 708 IF ( wtnom(iii) .eq. 'co2' ) q_prof(:,iii) = 0.95 709 ENDDO 710 711 !! Mars mode 20 : add a passive tracer with radioactive-like decay 712 !! INIT HERE 713 IF (firstcall .EQV. .true.) THEN 714 IF (MARS_MODE .EQ. 20) THEN 717 DO iii=1,nq 718 IF ( wtnom(iii) .eq. 'co2' ) q_prof(:,iii) = 0.95 719 ENDDO 720 721 IF ((MARS_MODE .EQ. 20) .OR. (MARS_MODE .EQ. 21)) THEN 722 IF (firstcall .EQV. .true.) THEN 715 723 q_prof(:,:) = 0.95 716 717 724 ENDIF 725 ENDIF 718 726 719 727 #else … … 863 871 CASE(20) 864 872 qsurf_val(:)=0. 873 CASE(21) 874 qsurf_val(:)=0. 865 875 #else 866 876 CASE(3:) … … 1197 1207 ! --is the one calculated during the last call to physics ! 1198 1208 !------------------------------------------------------------------! 1209 1210 ! PBL top index reading for MARS_MODE 21 : 1211 IF (MARS_MODE .EQ. 21) THEN 1212 IF (firstcall .EQV. .true.) THEN 1213 open(unit=15,file='input_zipbl',form='formatted',status='old') 1214 rewind(15) 1215 end_of_file = .false. 1216 kk = 0 1217 do while (.not. end_of_file) 1218 read(15,*,end=101) zipbl(kk+1),zilct(kk+1) 1219 write(*,*) kk, zipbl(kk+1),zilct(kk+1) 1220 kk = kk+1 1221 go to 112 1222 101 end_of_file = .true. 1223 112 continue 1224 enddo 1225 close(unit=15,status = 'keep') 1226 ENDIF 1227 lct=lct_input + elaps/3700. 1228 zilctmin=MINVAL(ABS(zilct(:)-lct)) 1229 lctindex=0 1230 DO kk=1,500 1231 IF(ABS(zilct(kk)-lct) .eq. zilctmin) lctindex=kk 1232 ENDDO 1233 IF(lctindex .eq. 0) print*, 'probleme index' 1234 ziindex=zipbl(lctindex) 1235 ENDIF 1236 1199 1237 DO j = jps,jpe 1200 1238 DO i = ips,ipe … … 1228 1266 #ifdef NEWPHYS 1229 1267 SCALAR(i,kps:kpe,j,1)=0. 1230 !! Mars mode 20 : add a passive tracer with radioactive-like decay 1231 IF (MARS_MODE .EQ. 20) THEN 1268 1269 SELECT CASE (MARS_MODE) 1270 CASE(20) 1271 !! Mars mode 20 : add a passive tracer with radioactive-like decay 1232 1272 IF ( (i == ips) .AND. (j == jps) ) print *, 'RADIOACTIVE-LIKE TRACER WITH SOURCE AT SURFACE LAYER.' 1233 1273 tau_decay=60.*10. !! why not make it a namelist argument? 1234 1274 SCALAR(i,kps:kpe,j,2) = SCALAR(i,kps:kpe,j,2)*exp(-dt/tau_decay) 1235 1275 SCALAR(i,1,j,2) = SCALAR(i,1,j,2) + 1. !! this tracer is emitted in the surface layer 1236 ELSE 1276 CASE(21) 1277 !! Mars mode 21 : add a passive tracer with radioactive-like decay at surface and pbl top 1278 IF ( (i == ips) .AND. (j == jps) ) print *, 'RADIOACTIVE-LIKE TRACER WITH SOURCE AT SURFACE LAYER AND PBL TOP.' 1279 tau_decay=60.*10. !! why not make it a namelist argument? 1280 SCALAR(i,kps:kpe,j,2) = SCALAR(i,kps:kpe,j,2)*exp(-dt/tau_decay) 1281 SCALAR(i,kps:kpe,j,3) = SCALAR(i,kps:kpe,j,3)*exp(-dt/tau_decay) 1282 SCALAR(i,1,j,2) = SCALAR(i,1,j,2) + 1. !! this tracer is emitted in the surface layer 1283 IF ( (i == ips) .AND. (j == jps) ) print *, 'index of pbl emission: ',ziindex 1284 IF (ziindex .NE. 0) THEN 1285 SCALAR(i,ziindex,j,3) = SCALAR(i,ziindex,j,3) + 1. !! this tracer is emitted at pbl top 1286 ENDIF 1287 CASE DEFAULT 1237 1288 SCALAR(i,kps:kpe,j,2:nq+1)=SCALAR(i,kps:kpe,j,2:nq+1)+pdq(subs,kps:kpe,1:nq)*dt !!! here dt is needed 1238 END IF1289 END SELECT 1239 1290 #else 1240 1291 SELECT CASE (MARS_MODE)
Note: See TracChangeset
for help on using the changeset viewer.