Changeset 169 for trunk/MESOSCALE/LMD_MM_MARS/SRC
- Timestamp:
- Jun 20, 2011, 6:35:32 PM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/mars_lmd_new_storm/libf/phymars/meso_physiq.F
r160 r169 50 50 c 5. Convective adjustment 51 51 c 6. Condensation and sublimation of carbon dioxide. 52 53 52 c 7. TRACERS : 54 53 c 7a. water and water ice … … 58 57 c 8. Contribution to tendencies due to thermosphere 59 58 c 9. Surface and sub-surface temperature calculations 60 c 10. dust bomb propagative perturbation 61 c 11. Write outputs : 59 c 10. Write outputs : 62 60 c - "startfi", "histfi" (if it's time) 63 61 c - Saving statistics (if "callstats = .true.") 64 62 c - Dumping eof (if "calleofdump = .true.") 65 63 c - Output any needed variables in "diagfi" 66 c 1 2. Diagnostic: mass conservation of tracers64 c 11. Diagnostic: mass conservation of tracers 67 65 c 68 66 c author: … … 202 200 LOGICAL flag_LES !! pour LES avec isfflx!=0 203 201 REAL qsurfice(ngridmx) !! pour diagnostics 204 REAL qsurfice_dust(ngridmx) !! pour diagnostics de poussi ère202 REAL qsurfice_dust(ngridmx) !! pour diagnostics de poussiere 205 203 real alpha,lay1 ! coefficients for building layers 206 204 integer iloop … … 252 250 c Albedo of deposited surface ice 253 251 !!REAL, PARAMETER :: alb_surfice = 0.4 ! 0.45 254 REAL, PARAMETER :: alb_surfice = 0.45 !!TESTS_JB 252 REAL, PARAMETER :: alb_surfice = 0.45 !!TESTS_JB 255 253 256 254 SAVE day_ini, icount … … 349 347 REAL ccn(ngridmx,nlayermx) ! Cloud condensation nuclei 350 348 ! (particules kg-1) 351 SAVE ccn !! in case iradia != 1 349 SAVE ccn !! in case iradia != 1 352 350 real rdust(ngridmx,nlayermx) ! dust geometric mean radius (m) 353 351 real qtot1,qtot2 ! total aerosol mass … … 372 370 REAL time_phys 373 371 372 c Variables from thermal 373 374 REAL lmax_th_out(ngrid) 375 REAL pdu_th(ngrid,nlayer),pdv_th(ngrid,nlayer) 376 REAL pdt_th(ngrid,nlayer),pdq_th(ngrid,nlayer,nq) 377 INTEGER lmax_th(ngrid) 378 REAL dtke_th(ngrid,nlayer+1) 379 REAL dummycol(ngrid) 374 380 c======================================================================= 375 381 #ifdef MESOSCALE … … 459 465 c ****WRF 460 466 ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 461 462 467 463 468 … … 593 598 ENDIF ! (end of "if firstcall") 594 599 595 596 600 c --------------------------------------------------- 597 601 c 1.2 Initializations done at every physical timestep: … … 678 682 679 683 680 IF (callrad) THEN 684 IF (callrad) THEN 681 685 zdqnorm(:,:,:) = 0. 682 686 IF( MOD(icount-1,iradia).EQ.0) THEN … … 1009 1013 DO l=1,nlayer 1010 1014 DO ig=1,ngrid 1011 pdq(ig,l,iq)=pdq(ig,l,iq)+ zdqdif(ig,l,iq) 1012 ENDDO1015 pdq(ig,l,iq)=pdq(ig,l,iq)+ zdqdif(ig,l,iq) 1016 ENDDO 1013 1017 ENDDO 1014 1018 ENDDO 1015 1016 1019 DO iq=1, nq 1017 1020 DO ig=1,ngrid … … 1019 1022 ENDDO 1020 1023 ENDDO 1021 !truc ajout é pour vérifier la conservation.1024 !truc ajoute pour verifier la conservation. 1022 1025 DO ig=1,ngrid 1023 1026 zdqsdif_diag(ig)=zdqsdif(ig,igcm_dust_mass)*3.6e9 … … 1028 1031 DO ig=1,ngrid 1029 1032 zdtsurf(ig)=zdtsurf(ig)+ 1030 &(fluxrad(ig)+fluxgrd(ig))/capcal(ig)1033 s (fluxrad(ig)+fluxgrd(ig))/capcal(ig) 1031 1034 ENDDO 1032 1035 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 1039 1042 ENDIF ! of IF (calldifv) 1040 1043 1044 c----------------------------------------------------------------------- 1045 c TEST. Thermals : 1046 c HIGHLY EXPERIMENTAL, BEWARE !! 1047 c ----------------------------- 1048 1049 if(calltherm) then 1050 1051 call calltherm_interface(ngrid,nlayer,firstcall, 1052 $ long,lati,zzlev,zzlay, 1053 $ ptimestep,pu,pv,pt,pq,pdu,pdv,pdt,pdq,q2, 1054 $ pplay,pplev,pphi,nq,zpopsk, 1055 $ pdu_th,pdv_th,pdt_th,pdq_th,lmax_th,dtke_th) 1056 1057 DO l=1,nlayer 1058 DO ig=1,ngrid 1059 pdu(ig,l)=pdu(ig,l)+pdu_th(ig,l) 1060 pdv(ig,l)=pdv(ig,l)+pdv_th(ig,l) 1061 pdt(ig,l)=pdt(ig,l)+pdt_th(ig,l) 1062 q2(ig,l)=q2(ig,l)+dtke_th(ig,l)*ptimestep 1063 ENDDO 1064 ENDDO 1065 1066 DO ig=1,ngrid 1067 q2(ig,nlayer+1)=q2(ig,nlayer+1)+dtke_th(ig,nlayer+1)*ptimestep 1068 ENDDO 1069 1070 if (tracer) then 1071 DO iq=1,nq 1072 DO l=1,nlayer 1073 DO ig=1,ngrid 1074 pdq(ig,l,iq)=pdq(ig,l,iq)+pdq_th(ig,l,iq) 1075 ENDDO 1076 ENDDO 1077 ENDDO 1078 endif 1079 1080 else !of if calltherm 1081 lmax_th(:)=0 1082 end if 1041 1083 1042 1084 c----------------------------------------------------------------------- … … 1056 1098 1057 1099 CALL convadj(ngrid,nlayer,nq,ptimestep, 1058 $ pplay,pplev,zpopsk, 1100 $ pplay,pplev,zpopsk,lmax_th, 1059 1101 $ pu,pv,zh,pq, 1060 1102 $ pdu,pdv,zdh,pdq, 1061 1103 $ zduadj,zdvadj,zdhadj, 1062 1104 $ zdqadj) 1105 1063 1106 1064 1107 DO l=1,nlayer … … 1104 1147 DO ig=1,ngrid 1105 1148 zdtsurf(ig) = zdtsurf(ig) + zdtsurfc(ig) 1106 !!!**WRF: newphys: ici la pression n'est plus mise a jour ds le GCM1107 !!!**WRF: mais il faut retablir ca dans le cas du mesoscale ?1108 !!!**WRF: ...non probablement OK1109 ! ps(ig)=pplev(ig,1) + pdpsrf(ig)*ptimestep1110 1149 ENDDO 1111 1150 … … 1135 1174 c ---------------------------------------- 1136 1175 IF (water) THEN 1137 1138 c **WRF: new arguments here rnuclei,rice,nuice1139 c plus no more iqmin +igcm_h2o_vap replaces iq, what are the consequences?1140 c checks needed when tracers simulations1141 1176 1142 1177 call watercloud(ngrid,nlayer,ptimestep, … … 1260 1295 zdqssed(1:ngrid,1:nq)=0 1261 1296 1262 c1263 c **WRF: new arguments rnuclei, rice, need checks1264 c1265 1297 call callsedim(ngrid,nlayer, ptimestep, 1266 1298 & pplev,zzlev, pt, rdust, rice, 1267 1299 & pq, pdq, zdqsed, zdqssed,nq) 1300 1268 1301 DO iq=1, nq 1269 1302 DO l=1,nlayer … … 1283 1316 END IF ! of IF (sedimentation) 1284 1317 1285 1286 1318 c 7d. Updates 1287 1319 c --------- … … 1340 1372 ENDDO 1341 1373 1342 ccc1343 ccc **WRF very specific to GCM1344 ccc1345 1374 c Prescribe a cold trap at south pole (except at high obliquity !!) 1346 1375 c Temperature at the surface is set there to be the temperature … … 1372 1401 c ALWAYS PLACE these lines after newcondens !!! 1373 1402 c ------------------------------------------------------------- 1374 c1375 1403 c **WRF : OK avec le mesoscale, pas d'indices bizarres au pole 1376 c1377 1404 do ig=1,ngrid 1378 1405 if ((co2ice(ig).eq.0).and. … … 1392 1419 ENDIF 1393 1420 c----------------------------------------------------------- 1394 c 10. Ajout tache de poussi ère ou 'dust bomb propagative perturbation'1421 c 10. Ajout tache de poussiere ou 'dust bomb propagative perturbation' 1395 1422 c------------------------------------------------------------ 1396 1423 DO l=1,nlayer … … 1421 1448 1422 1449 c----------------------------------------------------------------------- 1423 c 1 1. Write output files1450 c 10. Write output files 1424 1451 c ---------------------- 1425 1452 … … 1563 1590 if (water) then 1564 1591 1565 !!1566 !!***WRF: ok, des nouveaux trucs cools de la nouvelle physique1567 !!1568 1592 call zerophys(ngrid,mtot) 1569 1593 call zerophys(ngrid,icetot) … … 1606 1630 c which can later be used to make the statistic files of the run: 1607 1631 c "stats") only possible in 3D runs ! 1608 1609 1632 1610 1633 IF (callstats) THEN … … 1723 1746 ! 1724 1747 !enddo 1725 TAU_lay(:)=tau(:,1)!!c'est le tau qui évolue1726 1748 TAU_lay(:)=tau(:,1)!!c'est le tau qui evolue 1749 wtsurf(1:ngrid) = tsurf(1:ngrid) !! surface temperature 1727 1750 wco2ice(1:ngrid) = co2ice(1:ngrid) !! co2 ice 1728 1751 mtot(1:ngrid) = mtot(1:ngrid) * 1.e6 / rho_ice 1729 c**********pour avoir qte poussi ère en surface****************1752 c**********pour avoir qte poussiere en surface**************** 1730 1753 IF (igcm_dust_mass .ne. 0) THEN 1731 1754 qsurfice_dust(1:ngrid) = qsurf(1:ngrid,igcm_dust_mass)
Note: See TracChangeset
for help on using the changeset viewer.