Changeset 75 for trunk/mesoscale/LMD_MM_MARS
- Timestamp:
- Feb 20, 2011, 5:52:19 PM (14 years ago)
- Location:
- trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/dyn_em/module_initialize_real.F
r72 r75 1258 1258 ims , ime , jms , jme , kms , kme , & 1259 1259 its , ite , jts , jte , kts , kte ) 1260 1261 1262 if ( config_flags%mars == 2 ) then 1263 print *, '**** ONE DUST BIN ****' 1264 print *, '**** I assume this is dustq in met_em ****' 1265 CALL vert_interp_old ( grid%em_dustq_gc , grid%em_pd_gc , scalar(:,:,:,2) , grid%em_pb , & 1266 num_metgrid_levels , 'Q' , & 1267 interp_type , lagrange_order , lowest_lev_from_sfc , & 1268 zap_close_levels , force_sfc_in_vinterp , & 1269 ids , ide , jds , jde , kds , kde , & 1270 ims , ime , jms , jme , kms , kme , & 1271 its , ite , jts , jte , kts , kte ) 1272 endif 1260 1273 1261 1274 if ( (config_flags%mars == 1) .OR. (config_flags%mars == 11) ) then -
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/dyn_em/solve_em.F
r72 r75 2692 2692 IF ( ( config_flags%specified .or. config_flags%nested ) .and. rk_step == 1) THEN 2693 2693 2694 !!!!****MARS : pass water vapor at boundaries (and all other tracers if nested domains)2695 !!!!****MARS: mars=11 que faire ??? 2696 IF ( ( (config_flags%mars .eq. 1) .AND. (is .EQ. 2) ) & 2697 .OR. ( (config_flags%mars .eq. 11) .AND. (is .EQ. 2) ) & 2698 .OR. config_flags%nested ) THEN 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 2696 .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 2698 .OR. config_flags%nested ) THEN !! * pass all tracers if nested 2699 2699 CALL relax_bdy_scalar ( scalar_tend(ims,kms,jms,is), & 2700 2700 scalar(ims,kms,jms,is), grid%em_mut, & … … 2754 2754 !!!!****MARS: if parent domain and any other tracer than water vapor, no bdy and simple zero flux bdy condition 2755 2755 IF ( config_flags%specified ) THEN 2756 IF ( (config_flags%mars .ne. 1) & 2757 .OR. ((config_flags%mars .eq. 11) .and. (is .ne. 2)) & 2758 .OR. ((config_flags%mars .eq. 1 ) .and. (is .ne. 2)) ) THEN 2759 CALL flow_dep_bdy ( scalar(ims,kms,jms,is), & 2756 IF ( ((config_flags%mars .eq. 1 ) .and. (is .ne. 2)) & 2757 .OR. ((config_flags%mars .eq. 11) .and. (is .ne. 2)) ) THEN 2758 2759 !!! YOU HAVE TO ADD A CONDITION HERE IF YOU ADD A mars OPTION in REGISTRY !!! 2760 !!! (this is OK if you are using LES with periodic boundary conditions) 2761 2762 CALL flow_dep_bdy ( scalar(ims,kms,jms,is), & 2760 2763 grid%em_ru_m, grid%em_rv_m, config_flags, & 2761 2764 grid%spec_zone, & … … 2766 2769 grid%j_start(ij), grid%j_end(ij), & 2767 2770 k_start, k_end ) 2771 2768 2772 ENDIF 2769 2773 ENDIF -
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/main/real_em.F
r55 r75 562 562 563 563 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: ubdy3dtemp1 , vbdy3dtemp1 , tbdy3dtemp1 , pbdy3dtemp1 , qbdy3dtemp1 564 !!! ***MARS INIT_ICE564 !!!!***MARS >> 565 565 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: q2bdy3dtemp1 566 566 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: q3bdy3dtemp1 567 567 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: q4bdy3dtemp1 568 !!!!***MARS << 568 569 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: mbdy2dtemp1 569 570 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: ubdy3dtemp2 , vbdy3dtemp2 , tbdy3dtemp2 , pbdy3dtemp2 , qbdy3dtemp2 570 !!! ***MARS INIT_ICE571 !!!!***MARS >> 571 572 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: q2bdy3dtemp2 572 573 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: q3bdy3dtemp2 573 574 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: q4bdy3dtemp2 575 !!!!***MARS << 574 576 REAL , DIMENSION(:,:,:) , ALLOCATABLE , SAVE :: mbdy2dtemp2 575 577 real::t1,t2 … … 619 621 IF ( ALLOCATED ( pbdy3dtemp1 ) ) DEALLOCATE ( pbdy3dtemp1 ) 620 622 IF ( ALLOCATED ( qbdy3dtemp1 ) ) DEALLOCATE ( qbdy3dtemp1 ) 621 !!! ***MARS INIT_ICE623 !!!!***MARS >> 622 624 IF ( ALLOCATED ( q2bdy3dtemp1 ) ) DEALLOCATE ( q2bdy3dtemp1 ) 623 625 IF ( ALLOCATED ( q3bdy3dtemp1 ) ) DEALLOCATE ( q3bdy3dtemp1 ) 624 626 IF ( ALLOCATED ( q4bdy3dtemp1 ) ) DEALLOCATE ( q4bdy3dtemp1 ) 627 !!!!***MARS << 625 628 IF ( ALLOCATED ( mbdy2dtemp1 ) ) DEALLOCATE ( mbdy2dtemp1 ) 626 629 IF ( ALLOCATED ( ubdy3dtemp2 ) ) DEALLOCATE ( ubdy3dtemp2 ) … … 629 632 IF ( ALLOCATED ( pbdy3dtemp2 ) ) DEALLOCATE ( pbdy3dtemp2 ) 630 633 IF ( ALLOCATED ( qbdy3dtemp2 ) ) DEALLOCATE ( qbdy3dtemp2 ) 631 !!! ***MARS INIT_ICE634 !!!!***MARS >> 632 635 IF ( ALLOCATED ( q2bdy3dtemp2 ) ) DEALLOCATE ( q2bdy3dtemp2 ) 633 636 IF ( ALLOCATED ( q3bdy3dtemp2 ) ) DEALLOCATE ( q3bdy3dtemp2 ) 634 637 IF ( ALLOCATED ( q4bdy3dtemp2 ) ) DEALLOCATE ( q4bdy3dtemp2 ) 638 !!!!***MARS << 635 639 IF ( ALLOCATED ( mbdy2dtemp2 ) ) DEALLOCATE ( mbdy2dtemp2 ) 636 640 … … 640 644 ALLOCATE ( pbdy3dtemp1(ims:ime,kms:kme,jms:jme) ) 641 645 ALLOCATE ( qbdy3dtemp1(ims:ime,kms:kme,jms:jme) ) 642 !!! ***MARS INIT_ICE646 !!!!***MARS >> 643 647 ALLOCATE ( q2bdy3dtemp1(ims:ime,kms:kme,jms:jme) ) 644 648 ALLOCATE ( q3bdy3dtemp1(ims:ime,kms:kme,jms:jme) ) 645 649 ALLOCATE ( q4bdy3dtemp1(ims:ime,kms:kme,jms:jme) ) 650 !!!!***MARS << 646 651 ALLOCATE ( mbdy2dtemp1(ims:ime,1:1, jms:jme) ) 647 652 ALLOCATE ( ubdy3dtemp2(ims:ime,kms:kme,jms:jme) ) … … 650 655 ALLOCATE ( pbdy3dtemp2(ims:ime,kms:kme,jms:jme) ) 651 656 ALLOCATE ( qbdy3dtemp2(ims:ime,kms:kme,jms:jme) ) 652 !!! ***MARS INIT_ICE657 !!!!***MARS >> 653 658 ALLOCATE ( q2bdy3dtemp2(ims:ime,kms:kme,jms:jme) ) 654 659 ALLOCATE ( q3bdy3dtemp2(ims:ime,kms:kme,jms:jme) ) 655 660 ALLOCATE ( q4bdy3dtemp2(ims:ime,kms:kme,jms:jme) ) 661 !!!!***MARS << 656 662 ALLOCATE ( mbdy2dtemp2(ims:ime,1:1, jms:jme) ) 657 663 … … 690 696 ! CALL couple ( grid%em_mu_2 , grid%em_mub , qbdy3dtemp1 , grid%moist(:,:,:,P_QV) , 't' , grid%msft , & 691 697 ! ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, ips, ipe, jps, jpe, kps, kpe ) 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 694 IF ( (config_flags%mars .eq. 1) .OR. (config_flags%mars == 11) ) THEN 698 699 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 700 !!!!!MARS: si config_flags%mars != 0 il y a au moins un autre traceur (indice 2 a cause du dummy tracer) 701 !!!!!MARS: -- il faut donc definir ses conditions aux bornes 702 !!!!!MARS: -- cas generique ici, les choix de flux ou non-flux sont dans solve_em 703 !!!!!MARS: ensuite faire au cas par cas (ou un jour une boucle sur le nombre de traceurs ???) !!!q2bdy3dtemp1 704 !!!!!MARS: NB NB: si on ne veut pas passer un traceur aux bornes, tout ce qui suit n'est pas utile 705 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 706 IF (config_flags%mars .gt. 0) THEN 695 707 CALL couple ( grid%em_mu_2 , grid%em_mub , qbdy3dtemp1 , grid%scalar(:,:,:,2) , 't' , grid%msft , & 696 708 ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, ips, ipe, jps, jpe, kps, kpe ) 697 !!!INIT_ICE 709 ENDIF 710 !!!!!MARS: autres possibilites. pour le moment seuls 4 traceurs aux bornes sont supportes. 711 !!!!!MARS: ... mais il est facile d'en ajouter... ajouter simplement des tableaux type q2bdy3dtemp1 712 IF ( (config_flags%mars .eq. 1) .OR. & 713 (config_flags%mars .eq. 11) ) THEN 698 714 CALL couple ( grid%em_mu_2 , grid%em_mub , q2bdy3dtemp1 , grid%scalar(:,:,:,3) , 't' , grid%msft , & 699 715 ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, ips, ipe, jps, jpe, kps, kpe ) 700 716 ENDIF 701 IF (config_flags%mars ==11) THEN717 IF (config_flags%mars .eq. 11) THEN 702 718 CALL couple ( grid%em_mu_2 , grid%em_mub , q3bdy3dtemp1 , grid%scalar(:,:,:,4) , 't' , grid%msft , & 703 719 ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, ips, ipe, jps, jpe, kps, kpe ) … … 705 721 ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, ips, ipe, jps, jpe, kps, kpe ) 706 722 ENDIF 707 !!!! MARS723 !!!!!MARS!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 708 724 709 725 … … 760 776 ! ims , ime , jms , jme , kms , kme , & 761 777 ! ips , ipe , jps , jpe , kps , kpe ) 762 !!!! MARS763 IF ( (config_flags%mars .eq. 1) .OR. (config_flags%mars == 11)) THEN778 !!!!!MARS >> 779 IF (config_flags%mars .gt. 0) THEN 764 780 CALL stuff_bdy ( qbdy3dtemp1 , grid%scalar_b(:,:,:,:,2) , 'T' , ijds , ijde , spec_bdy_width , & 765 781 ids , ide , jds , jde , kds , kde , & 766 782 ims , ime , jms , jme , kms , kme , & 767 783 ips , ipe , jps , jpe , kps , kpe ) 768 !!!INIT_ICE 769 CALL stuff_bdy ( q2bdy3dtemp1 , grid%scalar_b(:,:,:,:,3) , 'T' , ijds, ijde , spec_bdy_width , & 770 ids , ide , jds, jde , kds , kde , & 771 ims , ime , jms, jme , kms , kme , & 772 ips , ipe , jps, jpe , kps , kpe ) 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 784 !!!!MARS 784 ENDIF 785 IF ( (config_flags%mars .eq. 1) .OR. & 786 (config_flags%mars .eq. 11) ) THEN 787 CALL stuff_bdy ( q2bdy3dtemp1 , grid%scalar_b(:,:,:,:,3) , 'T' , ijds , ijde , spec_bdy_width , & 788 ids , ide , jds , jde , kds , kde , & 789 ims , ime , jms , jme , kms , kme , & 790 ips , ipe , jps , jpe , kps , kpe ) 791 ENDIF 792 IF (config_flags%mars .eq. 11) THEN 793 CALL stuff_bdy ( q3bdy3dtemp1 , grid%scalar_b(:,:,:,:,4) , 'T' , ijds , ijde , spec_bdy_width , & 794 ids , ide , jds , jde , kds , kde , & 795 ims , ime , jms , jme , kms , kme , & 796 ips , ipe , jps , jpe , kps , kpe ) 797 CALL stuff_bdy ( q4bdy3dtemp1 , grid%scalar_b(:,:,:,:,5) , 'T' , ijds , ijde , spec_bdy_width , & 798 ids , ide , jds , jde , kds , kde , & 799 ims , ime , jms , jme , kms , kme , & 800 ips , ipe , jps , jpe , kps , kpe ) 801 ENDIF 802 !!!!MARS << 785 803 786 804 CALL stuff_bdy ( mbdy2dtemp1 , grid%em_mu_b , 'M' , ijds , ijde , spec_bdy_width , & … … 836 854 ! CALL couple ( grid%em_mu_2 , grid%em_mub , qbdy3dtemp2 , grid%moist(:,:,:,P_QV) , 't' , grid%msft , & 837 855 ! ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, ips, ipe, jps, jpe, kps, kpe ) 838 !!!! MARS839 IF ( (config_flags%mars .eq. 1) .OR. (config_flags%mars == 11)) THEN856 !!!!!MARS >> 857 IF (config_flags%mars .gt. 0) THEN 840 858 CALL couple ( grid%em_mu_2 , grid%em_mub , qbdy3dtemp2 , grid%scalar(:,:,:,2) , 't' , grid%msft , & 841 859 ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, ips, ipe, jps, jpe, kps, kpe ) 842 !!!INIT_ICE 860 ENDIF 861 IF ( (config_flags%mars .eq. 1) .OR. & 862 (config_flags%mars .eq. 11) ) THEN 843 863 CALL couple ( grid%em_mu_2 , grid%em_mub , q2bdy3dtemp2 , grid%scalar(:,:,:,3) , 't' , grid%msft , & 844 864 ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, ips, ipe, jps, jpe, kps, kpe ) 845 865 ENDIF 846 IF (config_flags%mars ==11) THEN866 IF (config_flags%mars .eq. 11) THEN 847 867 CALL couple ( grid%em_mu_2 , grid%em_mub , q3bdy3dtemp2 , grid%scalar(:,:,:,4) , 't' , grid%msft , & 848 868 ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, ips, ipe, jps, jpe, kps, kpe ) … … 850 870 ids, ide, jds, jde, kds, kde, ims, ime, jms, jme, kms, kme, ips, ipe, jps, jpe, kps, kpe ) 851 871 ENDIF 852 !!!! MARS872 !!!!!MARS << 853 873 854 874 DO j = jps , jpe … … 908 928 ! ims , ime , jms , jme , kms , kme , & 909 929 ! ips , ipe , jps , jpe , kps , kpe ) 910 !!!! MARS911 IF ( (config_flags%mars .eq. 1) .OR. (config_flags%mars == 11)) THEN930 !!!!!MARS >> 931 IF (config_flags%mars .gt. 0) THEN 912 932 CALL stuff_bdytend ( qbdy3dtemp2 , qbdy3dtemp1 , REAL(interval_seconds) , grid%scalar_bt(:,:,:,:,2) , 'T' , & 913 933 ijds , ijde , spec_bdy_width , & … … 915 935 ims , ime , jms , jme , kms , kme , & 916 936 ips , ipe , jps , jpe , kps , kpe ) 917 !!!INIT_ICE 937 ENDIF 938 IF ( (config_flags%mars .eq. 1) .OR. & 939 (config_flags%mars .eq. 11) ) THEN 918 940 CALL stuff_bdytend ( q2bdy3dtemp2 , q2bdy3dtemp1 , REAL(interval_seconds) ,grid%scalar_bt(:,:,:,:,3) , 'T' , & 919 941 ijds , ijde , spec_bdy_width , & … … 922 944 ips , ipe , jps , jpe , kps , kpe ) 923 945 ENDIF 924 IF (config_flags%mars ==11) THEN946 IF (config_flags%mars .eq. 11) THEN 925 947 CALL stuff_bdytend ( q3bdy3dtemp2 , q3bdy3dtemp1 , REAL(interval_seconds) , grid%scalar_bt(:,:,:,:,4) , 'T' , & 926 948 ijds , ijde , spec_bdy_width , & … … 934 956 ips , ipe , jps , jpe , kps , kpe ) 935 957 ENDIF 936 !!!! MARS958 !!!!!MARS << 937 959 938 960 CALL stuff_bdytend ( mbdy2dtemp2 , mbdy2dtemp1 , REAL(interval_seconds) , grid%em_mu_bt , 'M' , & … … 1018 1040 pbdy3dtemp1(i,k,j) = pbdy3dtemp2(i,k,j) 1019 1041 qbdy3dtemp1(i,k,j) = qbdy3dtemp2(i,k,j) 1020 !!! INIT_ICE1042 !!!!MARS >> 1021 1043 q2bdy3dtemp1(i,k,j) = q2bdy3dtemp2(i,k,j) 1022 1044 q3bdy3dtemp1(i,k,j) = q3bdy3dtemp2(i,k,j) 1023 1045 q4bdy3dtemp1(i,k,j) = q4bdy3dtemp2(i,k,j) 1046 !!!!MARS << 1024 1047 END DO 1025 1048 END DO … … 1076 1099 ! ims , ime , jms , jme , kms , kme , & 1077 1100 ! ips , ipe , jps , jpe , kps , kpe ) 1078 !!!! MARS1079 IF ( (config_flags%mars .eq. 1) .OR. (config_flags%mars == 11)) THEN1101 !!!!!MARS >> 1102 IF (config_flags%mars .gt. 0) THEN 1080 1103 CALL stuff_bdy ( qbdy3dtemp1 , grid%scalar_b(:,:,:,:,2) , 'T', ijds , ijde , spec_bdy_width , & 1081 1104 ids , ide , jds , jde , kds , kde , & 1082 1105 ims , ime , jms , jme , kms , kme , & 1083 1106 ips , ipe , jps , jpe , kps , kpe ) 1084 1085 !!!INIT_ICE 1107 ENDIF 1108 IF ( (config_flags%mars .eq. 1) .OR. & 1109 (config_flags%mars .eq. 11) ) THEN 1086 1110 CALL stuff_bdy ( q2bdy3dtemp1 , grid%scalar_b(:,:,:,:,3) , 'T', ijds , ijde , spec_bdy_width , & 1087 1111 ids , ide , jds , jde , kds , kde , & … … 1089 1113 ips , ipe , jps , jpe , kps , kpe ) 1090 1114 ENDIF 1091 IF (config_flags%mars ==11) THEN1115 IF (config_flags%mars .eq. 11) THEN 1092 1116 CALL stuff_bdy ( q3bdy3dtemp1 , grid%scalar_b(:,:,:,:,4) , 'T', ijds , ijde , spec_bdy_width , & 1093 1117 ids , ide , jds , jde , kds , kde , & … … 1099 1123 ips , ipe , jps , jpe , kps , kpe ) 1100 1124 ENDIF 1101 !!!!MARS 1102 1125 !!!!MARS << 1103 1126 CALL stuff_bdy ( mbdy2dtemp1 , grid%em_mu_b , 'M' , ijds , ijde , spec_bdy_width , & 1104 1127 ids , ide , jds , jde , 1 , 1 , & -
trunk/mesoscale/LMD_MM_MARS/SRC/WRFV2/phys/module_lmd_driver.F
r73 r75 627 627 wtnom(2) = 'h2o_ice' 628 628 CASE(2) 629 wtnom(1) = 'dust '629 wtnom(1) = 'dust01' 630 630 CASE(11) !! newwater mars==11 scalar:qh2o,qh2o_ice,qdust,qdust_number,qco2 631 wtnom(nq) = 'co2'632 631 wtnom(1) = 'h2o_vap' 633 632 wtnom(2) = 'h2o_ice' 634 633 wtnom(3) = 'dust_mass' 635 634 wtnom(4) = 'dust_number' 635 wtnom(nq) = 'co2' 636 636 END SELECT 637 637 #endif … … 810 810 #endif 811 811 CASE(2) !! DUST CYCLE (mars=2) 812 qsurf_val( :)=0.812 qsurf_val(1)=10000. !! infinite amount, basically 813 813 #ifdef NEWPHYS 814 814 CASE(11)
Note: See TracChangeset
for help on using the changeset viewer.