Changeset 55 for trunk/mesoscale/LMD_MM_MARS/SRC
- Timestamp:
- Feb 4, 2011, 1:46:39 AM (14 years ago)
- Location:
- trunk/mesoscale/LMD_MM_MARS/SRC
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/mesoscale/LMD_MM_MARS/SRC/PREP_MARS/readmeteo_newphys.F90
r31 r55 22 22 ! 02/2008 : include water vapor and ice ! 23 23 ! 01/2010 : possible use of diagsoil for new physics ! 24 ! 02/2011 : add dust tracers ! 24 25 ! ! 25 26 ! spiga@lmd.jussieu.fr ! … … 85 86 real, dimension(:,:,:,:), allocatable :: tsoilfile, dsoilfile, isoilfile 86 87 real, dimension(:,:,:,:), allocatable :: waterfile, watericefile 88 real, dimension(:,:,:,:), allocatable :: dustfile,dustnfile 87 89 88 90 !! Reading the parameter file … … 213 215 allocate(waterfile(lonlen,latlen,altlen,timelen)) 214 216 allocate(watericefile(lonlen,latlen,altlen,timelen)) 217 allocate(dustfile(lonlen,latlen,altlen,timelen)) 218 allocate(dustnfile(lonlen,latlen,altlen,timelen)) 215 219 allocate(psfile(lonlen,latlen,timelen)) 216 220 allocate(tsfile(lonlen,latlen,timelen)) … … 241 245 waterfile(:,:,:,:)=0 242 246 watericefile(:,:,:,:)=0 247 dustfile(:,:,:,:)=0 248 dustnfile(:,:,:,:)=0 243 249 psfile(:,:,:)=0 244 250 tsfile(:,:,:)=0 … … 568 574 !!------------------------ 569 575 576 !!------------------------ 577 !! special dust stuff 578 !!------------------------ 579 print *,'Dust mass' 580 ierr=NF_INQ_VARID(nid,"dustq",nvarid) 581 if (ierr.ne.NF_NOERR) then 582 write(*,*) "...No dustq - Dust mass set to 0" 583 dustfile(:,:,:,:)=0. 584 endif 585 ierr=NF_GET_VAR_REAL(nid,nvarid,dustfile) 586 587 print *,'Dust number' 588 ierr=NF_INQ_VARID(nid,"dustN",nvarid) 589 if (ierr.ne.NF_NOERR) then 590 write(*,*) "...No dustN - Dust number set to 0" 591 dustnfile(:,:,:,:)=0. 592 endif 593 ierr=NF_GET_VAR_REAL(nid,nvarid,dustnfile) 594 !!------------------------ 595 !! special dust stuff 596 !!------------------------ 597 570 598 571 599 !SELECT CASE(ident) … … 684 712 !! 1. Surface data 685 713 !!--------------------------------------------- 714 !! 715 !! a mettre pour tous sinon 716 !! WRF_DEBUG: Warning DIM 4 , NAME num_metgrid_levels REDIFINED by 717 !! var DUSTN 26 25 in wrf_io.F90 line 2349 718 !! 686 719 687 720 ! … … 1104 1137 !print *,'The field '//DESC//' was written to '//output 1105 1138 1139 !------------------------! 1140 ! >>> Write a variable ! 1141 ! ... Copy&Paste part ! 1142 !------------------------! 1143 FIELD='DUSTQ' 1144 UNITS='kg/kg' 1145 DESC='Dust mixing ratio' 1146 XLVL=200100. 1147 SLAB=dustfile(:,:,1,time_out(l)) 1148 ! And now put everything in the destination file 1149 ! ... Header 1150 write(1) IFV 1151 write(1) HDATE,XFCST,SOURCE,FIELD,UNITS,DESC,XLVL,NX,NY,IPROJ 1152 write(1) STARTLOC,STARTLAT,STARTLON,DELTALAT,DELTALON 1153 ! ... Data 1154 write(1) SLAB 1155 !print *,'The field '//DESC//' was written to '//output 1156 1157 !------------------------! 1158 ! >>> Write a variable ! 1159 ! ... Copy&Paste part ! 1160 !------------------------! 1161 FIELD='DUSTN' 1162 UNITS='part/kg' 1163 DESC='Dust number density' 1164 XLVL=200100. 1165 SLAB=dustnfile(:,:,1,time_out(l)) 1166 ! And now put everything in the destination file 1167 ! ... Header 1168 write(1) IFV 1169 write(1) HDATE,XFCST,SOURCE,FIELD,UNITS,DESC,XLVL,NX,NY,IPROJ 1170 write(1) STARTLOC,STARTLAT,STARTLON,DELTALAT,DELTALON 1171 ! ... Data 1172 write(1) SLAB 1173 !print *,'The field '//DESC//' was written to '//output 1174 1106 1175 1107 1176 !!---------------------------------------------------- … … 1328 1397 !print *,'The field '//DESC//' was written to '//output 1329 1398 1399 !------------------------! 1400 ! >>> Write a variable ! 1401 ! ... Copy&Paste part ! 1402 !------------------------! 1403 FIELD='DUSTQ' 1404 UNITS='kg/kg' 1405 DESC='Dust mixing ratio' 1406 DO k = 1,altlen 1407 XLVL=levels(k) 1408 SLAB=dustfile(:,:,k,time_out(l)) 1409 ! And now put everything in the destination file 1410 ! ... Header 1411 write(1) IFV 1412 write(1) HDATE,XFCST,SOURCE,FIELD,UNITS,DESC,XLVL,NX,NY,IPROJ 1413 write(1) STARTLOC,STARTLAT,STARTLON,DELTALAT,DELTALON 1414 ! ... Data 1415 write(1) SLAB 1416 END DO 1417 !print *,'The field '//DESC//' was written to '//output 1418 1419 !------------------------! 1420 ! >>> Write a variable ! 1421 ! ... Copy&Paste part ! 1422 !------------------------! 1423 FIELD='DUSTN' 1424 UNITS='part/kg' 1425 DESC='Dust number density' 1426 DO k = 1,altlen 1427 XLVL=levels(k) 1428 SLAB=dustnfile(:,:,k,time_out(l)) 1429 ! And now put everything in the destination file 1430 ! ... Header 1431 write(1) IFV 1432 write(1) HDATE,XFCST,SOURCE,FIELD,UNITS,DESC,XLVL,NX,NY,IPROJ 1433 write(1) STARTLOC,STARTLAT,STARTLON,DELTALAT,DELTALON 1434 ! ... Data 1435 write(1) SLAB 1436 END DO 1437 !print *,'The field '//DESC//' was written to '//output 1438 1330 1439 print *,'****done file '//output, int(100.*float(l)/float(FILES)), ' % ' 1331 1440 close(1) … … 1353 1462 deallocate(waterfile) 1354 1463 deallocate(watericefile) 1464 deallocate(dustfile) 1465 deallocate(dustnfile) 1355 1466 deallocate(psfile) 1356 1467 deallocate(tsfile) -
trunk/mesoscale/LMD_MM_MARS/SRC/WPS/wps_mars/metgrid/METGRID.TBL.ARW_MarsBase_newphys
r31 r55 561 561 missing_value=-9.99e+33 562 562 ======================================== 563 name=DUSTQ 564 # mandatory=yes # MUST HAVE THIS FIELD 565 # interp_option=sixteen_pt+four_pt+average_4pt 566 # interp_option=sixteen_pt+four_pt 567 interp_option=four_pt 568 # fill_lev=200100:const(0.) 569 fill_missing=-1.0e+30 570 missing_value=-9.99e+33 571 ======================================== 572 name=DUSTN 573 # mandatory=yes # MUST HAVE THIS FIELD 574 # interp_option=sixteen_pt+four_pt+average_4pt 575 # interp_option=sixteen_pt+four_pt 576 interp_option=four_pt 577 # fill_lev=200100:const(0.) 578 fill_missing=-1.0e+30 579 missing_value=-9.99e+33 580 ======================================== -
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/Registry/Registry.EM
r54 r55 106 106 #### 107 107 #### 108 #### TRACEURS: POUR L'INSTANT NE PAS CHANGER L'ORDRE (>> mais l'ordre n'est-il pas defini plus bas ? dans les options mars ?)108 #### TRACEURS: l'ordre dans SCALAR est defini plus bas dans les options mars) 109 109 #### - effacer le h si l'on veut eviter les sorties 110 110 #### … … 192 192 state real isoil_gc igj dyn_em 1 Z i1 "ISOIL" "soil thermal inertia" "tiu" 193 193 state real dsoil_gc igj dyn_em 1 Z i1 "DSOIL" "soil depths" "m" 194 state real dustq_gc igj dyn_em 1 Z i1 "DUSTQ" "dust mixing ratio" "kg/kg" 195 state real dustn_gc igj dyn_em 1 Z i1 "DUSTN" "dust number density" "kg/kg" 194 196 #### 195 197 #### variables dans wrf … … 1332 1334 package dust mars==2 - moist:qv;scalar:qdust 1333 1335 #package newwater mars==11 - scalar:qco2,qh2o,qh2o_ice 1334 package newwater mars==11 - scalar:qco2,qh2o,qh2o_ice,qdust,qdust_number 1336 #package newwater mars==11 - scalar:qco2,qh2o,qh2o_ice,qdust,qdust_number 1337 ### NOTE: toujours CO2 en dernier 1338 package newwater mars==11 - scalar:qh2o,qh2o_ice,qdust,qdust_number,qco2 1335 1339 ##### MARS OPTIONS 1336 1340 ##### MARS OPTIONS -
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/call_meso_physiq.inc
r28 r55 7 7 CALL meso_physiq (ngrid,nlayer,nq, & 8 8 firstcall,lastcall,wday_ini,pday,ptime,ptimestep, & 9 pplev,pplay,pphi,pu, pv, pt, pq, pw, 9 pplev,pplay,pphi,pu, pv, pt, pq, pw, & 10 10 pdu, pdv, pdt, pdq, pdpsrf, tracerdyn, & 11 11 wtsurf,wtsoil,wemis,wq2,wqsurf,wco2ice, & -
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/call_meso_physiq1.inc
r28 r55 8 8 firstcall,lastcall,wday_ini,pday,ptime,ptimestep, & 9 9 pplev,pplay,pphi,pu, pv, pt, pq, pw, & 10 #ifdef NEWPHYS 11 wtnom, & 12 #endif 10 13 pdu, pdv, pdt, pdq, pdpsrf, tracerdyn, & 11 14 wtsurf,wtsoil,wemis,wq2,wqsurf,wco2ice, & -
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/call_meso_physiq2.inc
r28 r55 11 11 firstcall,lastcall,wday_ini,pday,ptime,ptimestep, & 12 12 pplev,pplay,pphi,pu, pv, pt, pq, pw, & 13 #ifdef NEWPHYS 14 wtnom, & 15 #endif 13 16 pdu, pdv, pdt, pdq, pdpsrf, tracerdyn, & 14 17 wtsurf,wtsoil,wemis,wq2,wqsurf,wco2ice, & … … 23 26 firstcall,lastcall,wday_ini,pday,ptime,ptimestep, & 24 27 pplev,pplay,pphi,pu, pv, pt, pq, pw, & 28 #ifdef NEWPHYS 29 wtnom, & 30 #endif 25 31 pdu, pdv, pdt, pdq, pdpsrf, tracerdyn, & 26 32 wtsurf,wtsoil,wemis,wq2,wqsurf,wco2ice, & -
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/call_meso_physiq3.inc
r28 r55 11 11 firstcall,lastcall,wday_ini,pday,ptime,ptimestep, & 12 12 pplev,pplay,pphi,pu, pv, pt, pq, pw, & 13 #ifdef NEWPHYS 14 wtnom, & 15 #endif 13 16 pdu, pdv, pdt, pdq, pdpsrf, tracerdyn, & 14 17 wtsurf,wtsoil,wemis,wq2,wqsurf,wco2ice, & … … 23 26 firstcall,lastcall,wday_ini,pday,ptime,ptimestep, & 24 27 pplev,pplay,pphi,pu, pv, pt, pq, pw, & 28 #ifdef NEWPHYS 29 wtnom, & 30 #endif 25 31 pdu, pdv, pdt, pdq, pdpsrf, tracerdyn, & 26 32 wtsurf,wtsoil,wemis,wq2,wqsurf,wco2ice, & … … 35 41 firstcall,lastcall,wday_ini,pday,ptime,ptimestep, & 36 42 pplev,pplay,pphi,pu, pv, pt, pq, pw, & 43 #ifdef NEWPHYS 44 wtnom, & 45 #endif 37 46 pdu, pdv, pdt, pdq, pdpsrf, tracerdyn, & 38 47 wtsurf,wtsoil,wemis,wq2,wqsurf,wco2ice, & -
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/call_meso_physiq4.inc
r28 r55 11 11 firstcall,lastcall,wday_ini,pday,ptime,ptimestep, & 12 12 pplev,pplay,pphi,pu, pv, pt, pq, pw, & 13 #ifdef NEWPHYS 14 wtnom, & 15 #endif 13 16 pdu, pdv, pdt, pdq, pdpsrf, tracerdyn, & 14 17 wtsurf,wtsoil,wemis,wq2,wqsurf,wco2ice, & … … 23 26 firstcall,lastcall,wday_ini,pday,ptime,ptimestep, & 24 27 pplev,pplay,pphi,pu, pv, pt, pq, pw, & 28 #ifdef NEWPHYS 29 wtnom, & 30 #endif 25 31 pdu, pdv, pdt, pdq, pdpsrf, tracerdyn, & 26 32 wtsurf,wtsoil,wemis,wq2,wqsurf,wco2ice, & … … 35 41 firstcall,lastcall,wday_ini,pday,ptime,ptimestep, & 36 42 pplev,pplay,pphi,pu, pv, pt, pq, pw, & 43 #ifdef NEWPHYS 44 wtnom, & 45 #endif 37 46 pdu, pdv, pdt, pdq, pdpsrf, tracerdyn, & 38 47 wtsurf,wtsoil,wemis,wq2,wqsurf,wco2ice, & … … 47 56 firstcall,lastcall,wday_ini,pday,ptime,ptimestep, & 48 57 pplev,pplay,pphi,pu, pv, pt, pq, pw, & 58 #ifdef NEWPHYS 59 wtnom, & 60 #endif 49 61 pdu, pdv, pdt, pdq, pdpsrf, tracerdyn, & 50 62 wtsurf,wtsoil,wemis,wq2,wqsurf,wco2ice, & -
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/dyn_em/module_initialize_real.F
r54 r55 1262 1262 1263 1263 print *, '**** WATER CYCLE ON ****' 1264 !print *, size(scalar(0,0,0,:)), P_QH2O, P_QH2O_ICE1264 print *, size(scalar(0,0,0,:)), P_QH2O, P_QH2O_ICE 1265 1265 1266 1266 … … 1289 1289 !!****MARS: 1290 1290 1291 endif 1292 if (config_flags%mars == 11) then 1293 print *, '**** DUST var RADIUS ON ****' 1294 !print *, size(scalar(0,0,0,:)), P_QDUST, P_Qdust_number 1295 1296 CALL vert_interp_old ( grid%em_dustq_gc , grid%em_pd_gc , scalar(:,:,:,4) , grid%em_pb , & 1297 num_metgrid_levels , 'Q' , & 1298 interp_type , lagrange_order , lowest_lev_from_sfc , & 1299 zap_close_levels , force_sfc_in_vinterp , & 1300 ids , ide , jds , jde , kds , kde , & 1301 ims , ime , jms , jme , kms , kme , & 1302 its , ite , jts , jte , kts , kte ) 1303 1304 CALL vert_interp_old ( grid%em_dustn_gc , grid%em_pd_gc , scalar(:,:,:,5) , grid%em_pb , & 1305 num_metgrid_levels , 'Q' , & 1306 interp_type , lagrange_order , lowest_lev_from_sfc , & 1307 zap_close_levels , force_sfc_in_vinterp , & 1308 ids , ide , jds , jde , kds , kde , & 1309 ims , ime , jms , jme , kms , kme , & 1310 its , ite , jts , jte , kts , kte ) 1291 1311 endif 1292 1312 -
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/dyn_em/solve_em.F
r54 r55 2692 2692 2693 2693 !!!!****MARS: pass water vapor at boundaries (and all other tracers if nested domains) 2694 !!!!****MARS: mars=11 que faire ??? 2694 2695 IF ( ( (config_flags%mars .eq. 1) .AND. (is .EQ. 2) ) & 2695 2696 .OR. ( (config_flags%mars .eq. 11) .AND. (is .EQ. 2) ) & -
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/main/real_em.F
r54 r55 564 564 !!!***MARS INIT_ICE 565 565 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: q2bdy3dtemp1 566 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: q3bdy3dtemp1 567 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: q4bdy3dtemp1 566 568 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: mbdy2dtemp1 567 569 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: ubdy3dtemp2 , vbdy3dtemp2 , tbdy3dtemp2 , pbdy3dtemp2 , qbdy3dtemp2 568 570 !!!***MARS INIT_ICE 569 571 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: q2bdy3dtemp2 572 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: q3bdy3dtemp2 573 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: q4bdy3dtemp2 570 574 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: mbdy2dtemp2 571 575 real::t1,t2 … … 617 621 !!!***MARS INIT_ICE 618 622 IF ( ALLOCATED ( q2bdy3dtemp1 ) ) DEALLOCATE ( q2bdy3dtemp1 ) 623 IF ( ALLOCATED ( q3bdy3dtemp1 ) ) DEALLOCATE ( q3bdy3dtemp1 ) 624 IF ( ALLOCATED ( q4bdy3dtemp1 ) ) DEALLOCATE ( q4bdy3dtemp1 ) 619 625 IF ( ALLOCATED ( mbdy2dtemp1 ) ) DEALLOCATE ( mbdy2dtemp1 ) 620 626 IF ( ALLOCATED ( ubdy3dtemp2 ) ) DEALLOCATE ( ubdy3dtemp2 ) … … 625 631 !!!***MARS INIT_ICE 626 632 IF ( ALLOCATED ( q2bdy3dtemp2 ) ) DEALLOCATE ( q2bdy3dtemp2 ) 633 IF ( ALLOCATED ( q3bdy3dtemp2 ) ) DEALLOCATE ( q3bdy3dtemp2 ) 634 IF ( ALLOCATED ( q4bdy3dtemp2 ) ) DEALLOCATE ( q4bdy3dtemp2 ) 627 635 IF ( ALLOCATED ( mbdy2dtemp2 ) ) DEALLOCATE ( mbdy2dtemp2 ) 628 636 … … 634 642 !!!***MARS INIT_ICE 635 643 ALLOCATE ( q2bdy3dtemp1(ims:ime,kms:kme,jms:jme) ) 644 ALLOCATE ( q3bdy3dtemp1(ims:ime,kms:kme,jms:jme) ) 645 ALLOCATE ( q4bdy3dtemp1(ims:ime,kms:kme,jms:jme) ) 636 646 ALLOCATE ( mbdy2dtemp1(ims:ime,1:1, jms:jme) ) 637 647 ALLOCATE ( ubdy3dtemp2(ims:ime,kms:kme,jms:jme) ) … … 642 652 !!!***MARS INIT_ICE 643 653 ALLOCATE ( q2bdy3dtemp2(ims:ime,kms:kme,jms:jme) ) 654 ALLOCATE ( q3bdy3dtemp2(ims:ime,kms:kme,jms:jme) ) 655 ALLOCATE ( q4bdy3dtemp2(ims:ime,kms:kme,jms:jme) ) 644 656 ALLOCATE ( mbdy2dtemp2(ims:ime,1:1, jms:jme) ) 645 657 … … 679 691 ! ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, ips, ipe, jps, jpe, kps, kpe ) 680 692 !!!!MARS : pb a regler avec P_QH2O qui n est pas reconnu si QH2O n est pas dans active dans le registry 693 !!!!MARS ----> pourquoi on ne fait pas une boucle sur les traceurs ??? a cause q2bdy3dtemp1 681 694 IF ( (config_flags%mars .eq. 1) .OR. (config_flags%mars == 11) ) THEN 682 695 CALL couple ( grid%em_mu_2 , grid%em_mub , qbdy3dtemp1 , grid%scalar(:,:,:,2) , 't' , grid%msft , & … … 684 697 !!!INIT_ICE 685 698 CALL couple ( grid%em_mu_2 , grid%em_mub , q2bdy3dtemp1 , grid%scalar(:,:,:,3) , 't' , grid%msft , & 699 ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, ips, ipe, jps, jpe, kps, kpe ) 700 ENDIF 701 IF (config_flags%mars == 11) THEN 702 CALL couple ( grid%em_mu_2 , grid%em_mub , q3bdy3dtemp1 , grid%scalar(:,:,:,4) , 't' , grid%msft , & 703 ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, ips, ipe, jps, jpe, kps, kpe ) 704 CALL couple ( grid%em_mu_2 , grid%em_mub , q4bdy3dtemp1 , grid%scalar(:,:,:,5) , 't' , grid%msft , & 686 705 ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, ips, ipe, jps, jpe, kps, kpe ) 687 706 ENDIF … … 753 772 ips , ipe , jps, jpe , kps , kpe ) 754 773 ENDIF 774 IF (config_flags%mars == 11) THEN 775 CALL stuff_bdy ( q3bdy3dtemp1 , grid%scalar_b(:,:,:,:,4) , 'T' , ijds, ijde , spec_bdy_width , & 776 ids , ide , jds, jde , kds , kde , & 777 ims , ime , jms, jme , kms , kme , & 778 ips , ipe , jps, jpe , kps , kpe ) 779 CALL stuff_bdy ( q4bdy3dtemp1 , grid%scalar_b(:,:,:,:,5) , 'T' , ijds, ijde , spec_bdy_width , & 780 ids , ide , jds, jde , kds , kde , & 781 ims , ime , jms, jme , kms , kme , & 782 ips , ipe , jps, jpe , kps , kpe ) 783 ENDIF 755 784 !!!!MARS 756 785 … … 813 842 !!!INIT_ICE 814 843 CALL couple ( grid%em_mu_2 , grid%em_mub , q2bdy3dtemp2 , grid%scalar(:,:,:,3) , 't' , grid%msft , & 844 ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, ips, ipe, jps, jpe, kps, kpe ) 845 ENDIF 846 IF (config_flags%mars == 11) THEN 847 CALL couple ( grid%em_mu_2 , grid%em_mub , q3bdy3dtemp2 , grid%scalar(:,:,:,4) , 't' , grid%msft , & 848 ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, ips, ipe, jps, jpe, kps, kpe ) 849 CALL couple ( grid%em_mu_2 , grid%em_mub , q4bdy3dtemp2 , grid%scalar(:,:,:,5) , 't' , grid%msft , & 815 850 ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, ips, ipe, jps, jpe, kps, kpe ) 816 851 ENDIF … … 887 922 ips , ipe , jps , jpe , kps , kpe ) 888 923 ENDIF 924 IF (config_flags%mars == 11) THEN 925 CALL stuff_bdytend ( q3bdy3dtemp2 , q3bdy3dtemp1 , REAL(interval_seconds) , grid%scalar_bt(:,:,:,:,4) , 'T' , & 926 ijds , ijde , spec_bdy_width , & 927 ids , ide , jds , jde , kds , kde , & 928 ims , ime , jms , jme , kms , kme , & 929 ips , ipe , jps , jpe , kps , kpe ) 930 CALL stuff_bdytend ( q4bdy3dtemp2 , q4bdy3dtemp1 , REAL(interval_seconds) ,grid%scalar_bt(:,:,:,:,5) , 'T' , & 931 ijds , ijde , spec_bdy_width , & 932 ids , ide , jds , jde , kds , kde , & 933 ims , ime , jms , jme , kms , kme , & 934 ips , ipe , jps , jpe , kps , kpe ) 935 ENDIF 889 936 !!!!MARS 890 937 … … 973 1020 !!!INIT_ICE 974 1021 q2bdy3dtemp1(i,k,j) = q2bdy3dtemp2(i,k,j) 1022 q3bdy3dtemp1(i,k,j) = q3bdy3dtemp2(i,k,j) 1023 q4bdy3dtemp1(i,k,j) = q4bdy3dtemp2(i,k,j) 975 1024 END DO 976 1025 END DO … … 1040 1089 ips , ipe , jps , jpe , kps , kpe ) 1041 1090 ENDIF 1091 IF (config_flags%mars == 11) THEN 1092 CALL stuff_bdy ( q3bdy3dtemp1 , grid%scalar_b(:,:,:,:,4) , 'T', ijds , ijde , spec_bdy_width , & 1093 ids , ide , jds , jde , kds , kde , & 1094 ims , ime , jms , jme , kms , kme , & 1095 ips , ipe , jps , jpe , kps , kpe ) 1096 CALL stuff_bdy ( q4bdy3dtemp1 , grid%scalar_b(:,:,:,:,5) , 'T', ijds , ijde , spec_bdy_width , & 1097 ids , ide , jds , jde , kds , kde , & 1098 ims , ime , jms , jme , kms , kme , & 1099 ips , ipe , jps , jpe , kps , kpe ) 1100 ENDIF 1042 1101 !!!!MARS 1043 1102 -
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/phys/module_lmd_driver.F
r54 r55 176 176 #ifdef NEWPHYS 177 177 REAL,DIMENSION(:,:),ALLOCATABLE :: wisoil,wdsoil 178 CHARACTER*20,DIMENSION(:),ALLOCATABLE :: wtnom 178 179 #endif 179 180 ! ---------- … … 189 190 REAL, DIMENSION(:), ALLOCATABLE :: & 190 191 dz8w_prof,p8w_prof,p_prof,t_prof,t8w_prof, & 191 u_prof,v_prof,z_prof, & 192 u_prof,v_prof,z_prof 193 !! pi_prof, rho_prof, th_prof, & 194 #ifdef NEWPHYS 195 REAL, DIMENSION(:,:), ALLOCATABLE :: q_prof 196 #else 197 REAL, DIMENSION(:), ALLOCATABLE :: & 192 198 water_vapor_prof, water_ice_prof 193 !! pi_prof, rho_prof, th_prof, & 199 #endif 200 194 201 195 202 ! Additional control variables … … 553 560 !ALLOCATE(rho_prof(nlayer)) 554 561 !ALLOCATE(pi_prof(nlayer)) 562 #ifdef NEWPHYS 563 ALLOCATE(q_prof(nlayer,nq)) 564 ALLOCATE(wtnom(nq)) 565 #else 555 566 ALLOCATE(water_vapor_prof(nlayer)) 556 567 ALLOCATE(water_ice_prof(nlayer)) 557 568 #endif 558 569 559 570 !!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 562 573 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 563 574 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 564 575 #ifdef NEWPHYS 576 !!! name of tracers -- see Registry.EM for order and traceur.def for names 577 SELECT CASE (MARS_MODE) 578 CASE(0) !! NO TRACERS (mars=0) 579 wtnom(nq) = 'co2' 580 CASE(11) !! newwater mars==11 scalar:qh2o,qh2o_ice,qdust,qdust_number,qco2 581 wtnom(nq) = 'co2' 582 wtnom(1) = 'h2o_vap' 583 wtnom(2) = 'h2o_ice' 584 wtnom(3) = 'dust_mass' 585 wtnom(4) = 'dust_number' 586 END SELECT 587 #endif 565 588 566 589 DO j = jps,jpe … … 595 618 ! specific treatment for tracers ! 596 619 !--------------------------------! 620 #ifdef NEWPHYS 621 q_prof(:,1:nq) = SCALAR(i,kps:kpe,j,2:nq+1) !! the names were set above !! one dummy tracer in WRF 622 q_prof(:,nq) = 0.95 !! cas du CO2 !! TEMPORAIRE 623 #else 597 624 SELECT CASE (MARS_MODE) 598 625 CASE(0) !! NO TRACERS (mars=0) … … 606 633 water_ice_prof(:) = 0. 607 634 END SELECT 635 #endif 608 636 609 637 !!**********************************************************!! … … 764 792 PRINT *,'isoil ',isoil_val 765 793 PRINT *,'dsoil ',dsoil_val 794 PRINT *,'q_prof ',q_prof 766 795 #endif 767 796 ENDIF … … 833 862 834 863 !---------! 835 ! Tracers ! 864 ! Tracers ! 836 865 !---------! 866 #ifdef NEWPHYS 867 pq(subs,:,:) = q_prof(:,:) !! traceurs generiques, seuls noms sont specifiques 868 #else 837 869 SELECT CASE (MARS_MODE) 838 870 CASE(0) !! NO TRACERS (mars=0) … … 844 876 pq(subs,:,nq) = water_vapor_prof(:) !! NB: which is 0, actually (see above) 845 877 END SELECT 846 878 #endif 847 879 ENDDO 848 880 ENDDO … … 865 897 DEALLOCATE(u_prof) 866 898 DEALLOCATE(v_prof) 899 #ifdef NEWPHYS 900 DEALLOCATE(q_prof) 901 #else 867 902 DEALLOCATE(water_vapor_prof) 868 903 DEALLOCATE(water_ice_prof) 904 #endif 869 905 !!! no use 870 906 !DEALLOCATE(pi_prof) … … 944 980 DEALLOCATE(wisoil) 945 981 DEALLOCATE(wdsoil) 982 DEALLOCATE(wtnom) 946 983 #endif 947 984 … … 1019 1056 1020 1057 !---------! 1021 ! Tracers ! 1058 ! Tracers ! 1022 1059 !---------! 1060 #ifdef NEWPHYS 1061 SCALAR(i,kps:kpe,j,1)=0. 1062 SCALAR(i,kps:kpe,j,2:nq+1)=SCALAR(i,kps:kpe,j,2:nq+1)+pdq(subs,kps:kpe,1:nq) 1063 #else 1023 1064 SELECT CASE (MARS_MODE) 1024 1065 CASE(0) … … 1032 1073 !!! Dust 1033 1074 SCALAR(i,kps:kpe,j,2)=SCALAR(i,kps:kpe,j,2)+pdq(subs,kps:kpe,nq) 1075 !!CASE(11) !!! 1034 1076 END SELECT 1035 1077 #endif 1036 1078 !!TODO: check if adding the whole tendency once, and set the 1037 1079 !!TODO: following tendencies to 0 until physics is called again -
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/share/module_model_constants.F
r28 r55 18 18 REAL , PARAMETER :: g = 3.72 ! acceleration due to gravity (m {s}^-2) 19 19 20 #if ( NMM_CORE == 1 ) 21 REAL , PARAMETER :: r_d = 192. ! gas constant m2 s-2 K-1 22 REAL , PARAMETER :: cp = 844.6 ! r= 8.314511E+0 *1000.E+0/mugaz 23 #else 24 REAL , PARAMETER :: r_d = 192. 25 REAL , PARAMETER :: cp = 844.6 26 #endif 20 !#if ( NMM_CORE == 1 ) 21 ! REAL , PARAMETER :: r_d = 192. ! gas constant m2 s-2 K-1 22 ! REAL , PARAMETER :: cp = 844.6 ! r= 8.314511E+0 *1000.E+0/mugaz 23 !#else 24 ! REAL , PARAMETER :: r_d = 192. 25 ! REAL , PARAMETER :: cp = 844.6 26 !#endif 27 28 REAL , PARAMETER :: r_d = 191. 29 REAL , PARAMETER :: cp = 744.5 27 30 28 31 REAL , PARAMETER :: r_v = 461.6 ! gas constant for water vapor 29 32 REAL , PARAMETER :: cv = cp-r_d 30 REAL , PARAMETER :: cpv = 4.4*r_v ! cp / R = 4.4 ?? ! rcp = r/cp ~0.256793 33 ! REAL , PARAMETER :: cpv = 4.4*r_v ! cp / R = 4.4 ?? ! rcp = r/cp ~0.256793 34 REAL , PARAMETER :: cpv = 3.9*r_v 31 35 REAL , PARAMETER :: cvv = cpv-r_v 32 36 REAL , PARAMETER :: cvpm = -cv/cp
Note: See TracChangeset
for help on using the changeset viewer.