Changeset 76 for trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2
- Timestamp:
- Feb 21, 2011, 2:58:25 AM (14 years ago)
- Location:
- trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/Registry/Registry.EM
r72 r76 111 111 #### 112 112 state real - ikjftb scalar 1 - - - 113 state real QH2O ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "QH2O" "Water vapor mixing ratio" "kg kg-1" 114 state real QH2O_ICE ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "QH2O_ICE" "Water ice mixing ratio" "kg kg-1" 115 state real QDUST ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "QDUST" "Dust mixing ratio" "kg kg-1" 116 #### 117 state real Qco2 ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "Qco2" "CO2 mixing ratio" "kg kg-1" 118 #state real Qdust_mass ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "Qdust_mass" "dust_mass mixing ratio" "kg kg-1" 119 state real Qdust_number ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "Qdust_number" "dust_number mixing ratio" "kg kg-1" 120 #state real Qh2o_vap ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "Qh2o_vap" "h2o_vap mixing ratio" "kg kg-1" 121 #state real Qh2o_ice ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "Qh2o_ice" "h2o_ice mixing ratio" "kg kg-1" 113 state real qh2o ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "QH2O" "Water vapor mixing ratio" "kg kg-1" 114 state real qh2o_ice ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "QH2O_ICE" "Water ice mixing ratio" "kg kg-1" 115 state real qdust ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "QDUST" "Dust mixing ratio" "kg kg-1" 116 state real qdustn ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "QDUSTN" "Dust_number mixing ratio" "kg kg-1" 117 state real qco2 ikjftb scalar 1 - i01rhusdf=(bdy_interp:dt) "QCO2" "CO2 mixing ratio" "kg kg-1" 122 118 #### 123 119 #### … … 1322 1318 ##### MARS OPTIONS 1323 1319 ## 1324 ## CHANGING THE OPTION CHANGE THE NUMBER OF TRACERS WITHOUT ANY NEED TO RECOMPILE ENTIRELY WRF 1325 ## HOWEVER, YOU STILL NEED TO RECOMPILE THE PHYSICS BEFORE CHANGING THE OPTION 1326 ## JUST USE THE COMPILE_ALL SCRIPT FOR A FAST RECOMPILATION 1327 ## ------- 1328 ## ONE REMAINING PROBLEM IS THE FACT THAT YOU NEED TO RECOMPILE 1329 ## ENTIRELY IF YOU DO NOT WANT TO OUTPUT THE TRACERS 1330 ## (FOR EXAMPLE, IF THEY ARE TURNED OFF ...) 1331 ## ------- 1320 ## CHANGING THE OPTION CHANGES TRACER REFERENCES WITHOUT ANY NEED TO RECOMPILE ENTIRELY LMD_MM 1321 ## --> EVEN IF FIELDS ARE SCHEDULED FOR OUTPUTS ABOVE [WITH h], THESE ARE NOT IN wrfout* FILES 1322 ## UNLESS THE CORRESPONDING mars OPTION IS SELECTED 1323 ## --> HOWEVER, YOU STILL NEED TO RECOMPILE THE PHYSICS BEFORE CHANGING THE OPTION 1324 ## AND PROBABLY YOU'LL ALSO HAVE TO CHANGE callphys.def 1325 ## --> IF mars IS CHANGED IN THE NAMELIST, YOU HAVE TO RE-RUN real.exe 1332 1326 ## 1327 ## IF YOU ADD A mars REFERENCE BELOW, YOU HAVE TO RECOMPILE ENTIRELY THE MODEL 1333 1328 ## 1334 package nowater mars==0 - moist:qv 1335 package water mars==1 - moist:qv;scalar:qh2o,qh2o_ice 1336 package d ust mars==2 - moist:qv;scalar:qdust1337 #package newwater mars==11 - scalar:qco2,qh2o,qh2o_ice1338 #package newwater mars==11 - scalar:qco2,qh2o,qh2o_ice,qdust,qdust_number 1339 ### NOTE: toujours CO2 en dernier 1340 package newwater mars==11 - scalar:qh2o,qh2o_ice,qdust,qdust _number,qco21329 ## THE ORDER of TRACERS IN EACH OPTION IS VERY IMPORTANT 1330 ## 1331 package default mars==0 - - 1332 package water mars==1 - scalar:qh2o,qh2o_ice 1333 package dust1 mars==2 - scalar:qdust 1334 package dust2eq mars==3 - scalar:qdust,qdustn 1335 package newwater mars==11 - scalar:qh2o,qh2o_ice,qdust,qdustn 1341 1336 ##### MARS OPTIONS 1342 1337 ##### MARS OPTIONS … … 1352 1347 package ncepcloud3 mp_physics==98 - moist:qv,qc,qr 1353 1348 package ncepcloud5 mp_physics==99 - moist:qv,qc,qr,qi,qs 1354 package thompson mp_physics==8- moist:qv,qc,qr,qi,qs,qg;scalar:qni1349 package thompson mp_physics==8 - moist:qv,qc,qr,qi,qs,qg;scalar:qni 1355 1350 1356 1351 package rrtmscheme ra_lw_physics==1 - - -
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/dyn_em/module_initialize_real.F
r75 r76 1259 1259 its , ite , jts , jte , kts , kte ) 1260 1260 1261 1262 if ( config_flags%mars == 2 ) then 1263 print *, '**** ONE DUST BIN ****' 1264 print *, '**** I assume this is dustq in met_em ****' 1261 1262 !!!!!!****MARS****!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1263 !!!!!! ****MARS MARS MARS for order in rank for each option, check in REGISTRY.EM 1264 !!!!!! [a little bit too hardcoded here unfortunately... but e.g. P_QH2O must be known] 1265 !!!!!! [there is a more flexible option with flags in metgrid.tbl, TBD?] 1266 !!!!!! NB: real_em.F must also be modified 1267 !!!!!! NB2: qvapor is not used to avoid collision with earth-related calculations 1268 if ( ( config_flags%mars == 2 ) .OR. ( config_flags%mars == 3 ) ) then 1269 print *, '**** INTERPOLATE DUSTQ **** RANK 2 in SCALAR' 1265 1270 CALL vert_interp_old ( grid%em_dustq_gc , grid%em_pd_gc , scalar(:,:,:,2) , grid%em_pb , & 1266 1271 num_metgrid_levels , 'Q' , & … … 1271 1276 its , ite , jts , jte , kts , kte ) 1272 1277 endif 1273 1274 if ( (config_flags%mars == 1) .OR. (config_flags%mars == 11) ) then 1275 !if (size(scalar(0,0,0,:)) > 2) then 1276 !! autre possibilite: activer les flags dans metgrid.tbl 1277 !! 1278 !! pour l'instant les indices sont indiqués en dur en attendant plus souple 1279 !! 1280 !! 1281 1282 print *, '**** WATER CYCLE ON ****' 1283 print *, size(scalar(0,0,0,:)), P_QH2O, P_QH2O_ICE 1284 1285 1286 !!****MARS: initialization for water cycle 1287 !!****MARS: 1288 !!****MARS: -- note that -real.F was modified to include GCM QH2O boundary conditions 1289 !!****MARS: -qvapor was not used to avoid any terrestrial calculations in WRF unsuitable for Mars 1290 !!****MARS: -any change and/or modification of variables has to be recorded in the Registry 1291 !!****MARS: 1292 !CALL vert_interp_old ( grid%em_hv_gc , grid%em_pd_gc , scalar(:,:,:,P_QH2O) , grid%em_pb , & 1293 CALL vert_interp_old ( grid%em_hv_gc , grid%em_pd_gc , scalar(:,:,:,2) , grid%em_pb , & 1278 if ( ( config_flags%mars == 3 ) ) then 1279 print *, '**** INTERPOLATE DUSTN **** RANK 3 in SCALAR' 1280 CALL vert_interp_old ( grid%em_dustn_gc , grid%em_pd_gc , scalar(:,:,:,3) , grid%em_pb , & 1294 1281 num_metgrid_levels , 'Q' , & 1295 1282 interp_type , lagrange_order , lowest_lev_from_sfc , & … … 1298 1285 ims , ime , jms , jme , kms , kme , & 1299 1286 its , ite , jts , jte , kts , kte ) 1300 !CALL vert_interp_old ( grid%em_hi_gc , grid%em_pd_gc , scalar(:,:,:,P_QH2O_ICE) , grid%em_pb , & 1301 CALL vert_interp_old ( grid%em_hi_gc , grid%em_pd_gc , scalar(:,:,:,3) , grid%em_pb , & 1287 endif 1288 if ( ( config_flags%mars == 1 ) .OR. ( config_flags%mars == 11 ) ) then 1289 print *, '**** INTERPOLATE HV **** RANK 2 in SCALAR' 1290 !print *, size(scalar(0,0,0,:)), P_QH2O, P_QH2O_ICE 1291 CALL vert_interp_old ( grid%em_hv_gc , grid%em_pd_gc , scalar(:,:,:,2) , grid%em_pb , & 1302 1292 num_metgrid_levels , 'Q' , & 1303 1293 interp_type , lagrange_order , lowest_lev_from_sfc , & … … 1306 1296 ims , ime , jms , jme , kms , kme , & 1307 1297 its , ite , jts , jte , kts , kte ) 1308 !!****MARS: 1309 1298 print *, '**** INTERPOLATE HI **** RANK 3 in SCALAR' 1299 CALL vert_interp_old ( grid%em_hi_gc , grid%em_pd_gc , scalar(:,:,:,3) , grid%em_pb , & 1300 num_metgrid_levels , 'Q' , & 1301 interp_type , lagrange_order , lowest_lev_from_sfc , & 1302 zap_close_levels , force_sfc_in_vinterp , & 1303 ids , ide , jds , jde , kds , kde , & 1304 ims , ime , jms , jme , kms , kme , & 1305 its , ite , jts , jte , kts , kte ) 1310 1306 endif 1311 1307 #ifdef NEWPHYS 1312 if (config_flags%mars == 11) then 1313 print *, '**** DUST var RADIUS ON ****' 1314 !print *, size(scalar(0,0,0,:)), P_QDUST, P_Qdust_number 1315 1308 if ( config_flags%mars == 11 ) then 1309 print *, '**** INTERPOLATE DUSTQ **** RANK 4 in SCALAR' 1316 1310 CALL vert_interp_old ( grid%em_dustq_gc , grid%em_pd_gc , scalar(:,:,:,4) , grid%em_pb , & 1317 1311 num_metgrid_levels , 'Q' , & … … 1321 1315 ims , ime , jms , jme , kms , kme , & 1322 1316 its , ite , jts , jte , kts , kte ) 1323 1317 print *, '**** INTERPOLATE DUSTQ **** RANK 5 in SCALAR' 1324 1318 CALL vert_interp_old ( grid%em_dustn_gc , grid%em_pd_gc , scalar(:,:,:,5) , grid%em_pb , & 1325 1319 num_metgrid_levels , 'Q' , & … … 1331 1325 endif 1332 1326 #endif 1327 !!!!!!****MARS****!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 1333 1328 1334 1329 #if 0 -
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/dyn_em/solve_em.F
r75 r76 2692 2692 IF ( ( config_flags%specified .or. config_flags%nested ) .and. rk_step == 1) THEN 2693 2693 2694 !!!!****MARS MARS MARS: what to do with tracers at the boundaries ??? 2695 IF ( ( (config_flags%mars .eq. 1) .AND. (is .EQ. 2) ) & !! 1 pass only water vapor 2694 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2695 !!!!****MARS MARS MARS: what to do with tracers at the boundaries ??? !!!!! 2696 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2697 !IF ( ( (config_flags%mars .eq. 1) .AND. (is .EQ. 2) ) & !! 1 pass only water vapor 2698 IF ( ( config_flags%mars .eq. 1 ) & !! 1 pass water vapor AND ice 2696 2699 .OR. ( config_flags%mars .eq. 2 ) & !! 2 pass the dust tracer 2697 .OR. ( (config_flags%mars .eq. 11) .AND. (is .EQ. 2) ) & !! 11 pass only water vapor 2700 .OR. ( config_flags%mars .eq. 3 ) & !! 3 pass dust Q and N 2701 ! .OR. ( (config_flags%mars .eq. 11) .AND. (is .EQ. 2) ) & !! 11 pass only water vapor 2702 .OR. ( config_flags%mars .eq. 11 ) & !! 11 pass EVERYTHING 2698 2703 .OR. config_flags%nested ) THEN !! * pass all tracers if nested 2699 2704 CALL relax_bdy_scalar ( scalar_tend(ims,kms,jms,is), & … … 2752 2757 k_start , k_end ) 2753 2758 2754 !!!!****MARS: if parent domain and any other tracer than water vapor, no bdy and simple zero flux bdy condition 2755 IF ( config_flags%specified ) THEN 2756 IF ( ((config_flags%mars .eq. 1 ) .and. (is .ne. 2)) & 2757 .OR. ((config_flags%mars .eq. 11) .and. (is .ne. 2)) ) THEN 2759 !!!!!****MARS: if parent domain and any other tracer than water vapor, no bdy and simple zero flux bdy condition 2760 IF ( config_flags%specified ) THEN 2761 !IF ( ((config_flags%mars .eq. 1 ) .and. (is .ne. 2)) & 2762 ! .OR. ((config_flags%mars .eq. 11) .and. (is .ne. 2)) ) THEN 2763 IF ( config_flags%mars .gt. 50 ) THEN 2758 2764 2759 2765 !!! YOU HAVE TO ADD A CONDITION HERE IF YOU ADD A mars OPTION in REGISTRY !!! -
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/main/real_em.F
r75 r76 711 711 !!!!!MARS: ... mais il est facile d'en ajouter... ajouter simplement des tableaux type q2bdy3dtemp1 712 712 IF ( (config_flags%mars .eq. 1) .OR. & 713 (config_flags%mars .eq. 3) .OR. & 713 714 (config_flags%mars .eq. 11) ) THEN 714 715 CALL couple ( grid%em_mu_2 , grid%em_mub , q2bdy3dtemp1 , grid%scalar(:,:,:,3) , 't' , grid%msft , & … … 784 785 ENDIF 785 786 IF ( (config_flags%mars .eq. 1) .OR. & 787 (config_flags%mars .eq. 3) .OR. & 786 788 (config_flags%mars .eq. 11) ) THEN 787 789 CALL stuff_bdy ( q2bdy3dtemp1 , grid%scalar_b(:,:,:,:,3) , 'T' , ijds , ijde , spec_bdy_width , & … … 860 862 ENDIF 861 863 IF ( (config_flags%mars .eq. 1) .OR. & 864 (config_flags%mars .eq. 3) .OR. & 862 865 (config_flags%mars .eq. 11) ) THEN 863 866 CALL couple ( grid%em_mu_2 , grid%em_mub , q2bdy3dtemp2 , grid%scalar(:,:,:,3) , 't' , grid%msft , & … … 937 940 ENDIF 938 941 IF ( (config_flags%mars .eq. 1) .OR. & 942 (config_flags%mars .eq. 3) .OR. & 939 943 (config_flags%mars .eq. 11) ) THEN 940 944 CALL stuff_bdytend ( q2bdy3dtemp2 , q2bdy3dtemp1 , REAL(interval_seconds) ,grid%scalar_bt(:,:,:,:,3) , 'T' , & … … 1107 1111 ENDIF 1108 1112 IF ( (config_flags%mars .eq. 1) .OR. & 1113 (config_flags%mars .eq. 3) .OR. & 1109 1114 (config_flags%mars .eq. 11) ) THEN 1110 1115 CALL stuff_bdy ( q2bdy3dtemp1 , grid%scalar_b(:,:,:,:,3) , 'T', ijds , ijde , spec_bdy_width , & -
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/phys/module_lmd_driver.F
r75 r76 618 618 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 619 619 !!!!!!!!!!!!!!!!!!!!!!!!!!!! 620 #ifdef NEWPHYS 621 !!! name of tracers -- see Registry.EM for order and traceur.def for names 620 621 SELECT CASE (MARS_MODE) !! ONLY ALLOW FOR MODES DEFINED IN Registry.EM 622 CASE(4-10,12:) !! -- CHANGE THIS if YOU ADDED CASES in REGISTRY.EM 623 PRINT *, 'NOT SUPPORTED, to be done' 624 STOP 625 END SELECT 626 !!!!!!!!!!!!!!!!!!! FOR REFERENCE ; FROM REGISTRY.EM 627 !package default mars==0 - - 628 !package water mars==1 - scalar:qh2o,qh2o_ice 629 !package dust1 mars==2 - scalar:qdust 630 !package dust2eq mars==3 - scalar:qdust,qdustn 631 !package newwater mars==11 - scalar:qh2o,qh2o_ice,qdust,qdustn 632 !!!!!!!!!!!!!!!!!!! FOR REFERENCE 633 634 #ifdef NEWPHYS 635 !!! name of tracers to mimic entries in tracer.def 636 !!! ----> IT IS IMPORTANT TO KEEP SAME ORDERING AS IN THE REGISTRY !!!! 637 !!! SAME NAMING AS IN THE LMD PHYSICS !!!! 622 638 SELECT CASE (MARS_MODE) 623 CASE(0) !! NO TRACERS (mars=0)639 CASE(0) 624 640 wtnom(nq) = 'co2' 625 641 CASE(1) 626 wtnom(1) = 'h2o_vap'627 wtnom(2) = 'h2o_ice'642 wtnom(1) = 'h2o_vap' 643 wtnom(2) = 'h2o_ice' 628 644 CASE(2) 629 wtnom(1) = 'dust01' 630 CASE(11) !! newwater mars==11 scalar:qh2o,qh2o_ice,qdust,qdust_number,qco2 631 wtnom(1) = 'h2o_vap' 632 wtnom(2) = 'h2o_ice' 633 wtnom(3) = 'dust_mass' 634 wtnom(4) = 'dust_number' 635 wtnom(nq) = 'co2' 645 wtnom(1) = 'dust01' 646 CASE(3) 647 wtnom(1) = 'dust_mass' 648 wtnom(2) = 'dust_number' 649 CASE(11) 650 wtnom(1) = 'h2o_vap' 651 wtnom(2) = 'h2o_ice' 652 wtnom(3) = 'dust_mass' 653 wtnom(4) = 'dust_number' 636 654 END SELECT 637 655 #endif 656 657 658 !!*******************************************!! 659 !!*******************************************!! 638 660 639 661 DO j = jps,jpe … … 685 707 water_vapor_prof(:) = 0. 686 708 water_ice_prof(:) = 0. 709 CASE(3:) 710 print *, 'OOOPS... not ready yet.' 711 STOP 687 712 END SELECT 688 713 #endif … … 799 824 !-------------------! 800 825 SELECT CASE (MARS_MODE) 801 CASE(0) !! NO TRACERS (mars=0)826 CASE(0) 802 827 qsurf_val(:)=0. 803 CASE(1) !! WATER CYCLE (mars=1)804 #ifdef NEWPHYS828 CASE(1) 829 qsurf_val(1)=0. 805 830 qsurf_val(2)=MARS_WICE(i,j) !! logique avec wtnom(2) = 'h2o_ice' defini ci-dessus 831 !! ----- retrocompatible ancienne physique 832 !! ----- [H2O ice is tracer nqmx in qsurf in LMD physics] 833 CASE(2) 834 qsurf_val(1)=10000. !! infinite amount of dust, basically 835 #ifdef NEWPHYS 836 CASE(3) 837 qsurf_val(:)=0. !!! temporaire, a definir 838 CASE(11) 806 839 qsurf_val(1)=0. 840 qsurf_val(2)=MARS_WICE(i,j) !! logique avec wtnom(2) = 'h2o_ice' defini ci-dessus 841 !!!! petit probleme... alors QSURF sorti dans wrfout n'est pas h2o_ice ! 842 qsurf_val(3)=10000. !! infinite amount of dust, basically 807 843 #else 808 qsurf_val(2)=MARS_WICE(i,j) !! attention... H2O ice is tracer nqmx in qsurf in LMD physics 809 qsurf_val(1)=0. 810 #endif 811 CASE(2) !! DUST CYCLE (mars=2) 812 qsurf_val(1)=10000. !! infinite amount, basically 813 #ifdef NEWPHYS 814 CASE(11) 815 qsurf_val(:)=0. !! provisoire 816 #endif 844 CASE(3:) 845 print *, 'OOOPS... not ready yet.' 846 STOP 847 #endif 848 817 849 END SELECT 818 850 … … 950 982 CASE(2) !! DUST CYCLE (mars=2) 951 983 pq(subs,:,nq) = water_vapor_prof(:) !! NB: which is 0, actually (see above) 984 CASE(3:) 985 print *, 'OOOPS... not ready yet.' 986 STOP 952 987 END SELECT 953 988 #endif … … 1158 1193 !!! Dust 1159 1194 SCALAR(i,kps:kpe,j,2)=SCALAR(i,kps:kpe,j,2)+pdq(subs,kps:kpe,nq) 1160 !!CASE(11) !!! 1195 CASE(3:) 1196 print *, 'OOOPS... not ready yet.' 1197 STOP 1161 1198 END SELECT 1162 1199 #endif
Note: See TracChangeset
for help on using the changeset viewer.