Changeset 1724 for trunk/MESOSCALE/LMD_MM_MARS/SRC/LES
- Timestamp:
- Jul 21, 2017, 4:07:38 PM (8 years ago)
- Location:
- trunk/MESOSCALE/LMD_MM_MARS/SRC/LES/modif_mars
- Files:
-
- 5 edited
-
Registry.EM (modified) (1 diff)
-
Registry.EM.newphys (modified) (3 diffs)
-
module_big_step_utilities_em.F (modified) (2 diffs)
-
module_first_rk_step_part1.F (modified) (1 diff)
-
module_initialize_les.F (modified) (24 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/MESOSCALE/LMD_MM_MARS/SRC/LES/modif_mars/Registry.EM
r1236 r1724 99 99 state real RICE ikj misc 1 - rd "RICE" "ICE RADIUS" "m" #SAVEMARS3 rice 100 100 state real PDTZ ikj misc 1 - rd "PDT" "TEMP TENDENCY" "K s-1" #SAVEMARS3 pdt 101 state real HR_SW ikj misc 1 - - "HR_SW" "HEATING RATE SW" "K/s" 102 state real HR_LW ikj misc 1 - - "HR_LW" "HEATING RATE LW" "K/s" 103 state real HR_DYN ikj misc 1 - - "HR_DYN" "HEATING RATE DYN" "K/s" 104 state real DDT ikj misc 1 - - "DDT" "TEMPERATURE TENDENCY" "K/s" 105 state real DT_RAD ikj misc 1 - - "DT_RAD" "RADIATIVE TEMPERATURE TENDENCY" "K/s" 106 state real DT_VDF ikj misc 1 - - "DT_VDF" "PBL CLMAIN TEMPERATURE TENDENCY" "K/s" 107 state real DT_AJS ikj misc 1 - - "DT_AJS" "AJUSTEMENT SEC TEMPERATURE TENDENCY" "K/s" 101 108 #### 102 109 #### -
trunk/MESOSCALE/LMD_MM_MARS/SRC/LES/modif_mars/Registry.EM.newphys
r1586 r1724 82 82 state real HR_SW ikj misc 1 - - "HR_SW" "HEATING RATE SW" "K/s" 83 83 state real HR_LW ikj misc 1 - - "HR_LW" "HEATING RATE LW" "K/s" 84 state real HR_DYN ikj misc 1 - - "HR_DYN" "HEATING RATE DYN" "K/s" 85 state real DDT ikj misc 1 - - "DDT" "TEMPERATURE TENDENCY" "K/s" 86 state real DT_RAD ikj misc 1 - - "DT_RAD" "RADIATIVE TEMPERATURE TENDENCY" "K/s" 87 state real DT_VDF ikj misc 1 - - "DT_VDF" "PBL CLMAIN TEMPERATURE TENDENCY" "K/s" 88 state real DT_AJS ikj misc 1 - - "DT_AJS" "AJUSTEMENT SEC TEMPERATURE TENDENCY" "K/s" 89 84 90 state real SWDOWNZ ij misc 1 - - "SWDOWNZ" "DOWNWARD SW FLUX AT SURFACE" "W m-2" 85 91 #### DUST CYCLE … … 96 102 state real ZMAX ij misc 1 - - "ZMAX" "MAXIMUM LEVEL THERMALS" "m" 97 103 state real HFMAX ij misc 1 - - "HFMAX" "MAXIMUM PBL HEAT FLUX" "m.K/s" 104 98 105 #### 99 106 #### … … 303 310 state real t_save ikj dyn_em 1 - "t_save" 304 311 # 305 312 state real tz_init ikj dyn_em 1 - ir "tz_init" "initial potential temperature" "K" 306 313 307 314 # Mass -
trunk/MESOSCALE/LMD_MM_MARS/SRC/LES/modif_mars/module_big_step_utilities_em.F
r34 r1724 14 14 15 15 USE module_domain, ONLY : domain 16 USE module_configure 16 17 USE module_model_constants 17 18 USE module_state_description … … 4475 4476 p_phy(i,k,j) = p(i,k,j) + pb(i,k,j) 4476 4477 pi_phy(i,k,j) = (p_phy(i,k,j)/p1000mb)**rcp 4477 t_phy(i,k,j) = th_phy(i,k,j)*pi_phy(i,k,j) 4478 IF (planet.eq. "venus" ) THEN 4479 !call tpot2t(1,th_phy(i,k,j), t_phy(i,k,j), pi_phy(i,k,j)) 4480 t_phy(i,k,j)= (th_phy(i,k,j)**nu - nu*(TT00**nu)*log((p1000mb/p_phy(i,k,j))**rcp))**(1/nu) 4481 ELSE 4482 t_phy(i,k,j) = th_phy(i,k,j)*pi_phy(i,k,j) 4483 ENDIF 4478 4484 rho(i,k,j) = 1./alt(i,k,j)*(1.+moist(i,k,j,P_QV)) 4479 4485 mu_3d(i,k,j) = mu(i,j) -
trunk/MESOSCALE/LMD_MM_MARS/SRC/LES/modif_mars/module_first_rk_step_part1.F
r1590 r1724 650 650 & ,HR_SW=grid%HR_SW & 651 651 & ,HR_LW=grid%HR_LW & 652 & ,HR_DYN=grid%HR_DYN & 653 & ,DDT=grid%DDT & 654 & ,DT_RAD=grid%DT_RAD & 655 & ,DT_VDF=grid%DT_VDF & 656 & ,DT_AJS=grid%DT_AJS & 652 657 & ,SWDOWNZ=grid%SWDOWNZ & 653 658 & ,TAU_DUST=grid%TAU_DUST & -
trunk/MESOSCALE/LMD_MM_MARS/SRC/LES/modif_mars/module_initialize_les.F
r1608 r1724 86 86 87 87 INTEGER, PARAMETER :: nl_max = 1000 88 REAL, DIMENSION(nl_max) :: zk, p_in, theta, rho, u, v, qv, pd_in88 REAL, DIMENSION(nl_max) :: zk, p_in, theta, Tz, rho, u, v, qv, pd_in 89 89 INTEGER :: nl_in 90 90 … … 116 116 ! for mode 3 117 117 REAL, DIMENSION(nl_max) :: profdustq,profdustn 118 REAL, DIMENSION(nl_max) :: prescribed_sw,prescribed_lw 118 REAL, DIMENSION(nl_max) :: hrsw,hrlw,hrdyn 119 REAL, DIMENSION(nl_max) :: trac 120 REAL, DIMENSION(nl_max) :: prescribed_sw,prescribed_lw,prescribed_dyn 121 REAL, DIMENSION(nl_max) :: venus_hrdyn 122 REAL, DIMENSION(nl_max) :: altitude 119 123 !!MARS 120 124 … … 123 127 !INTEGER :: hypsometric_opt = 2 ! Wee et al. 2012 correction 124 128 125 character(len=10) :: planet126 129 127 130 #ifdef DM_PARALLEL 128 131 # include <data_calls.inc> 129 132 #endif 130 131 call init_planet_constants132 133 133 134 SELECT CASE ( model_data_order ) … … 172 173 173 174 174 !stretch_grid = .false.175 stretch_grid = .false. 175 176 ! FOR LES, set stretch to false 176 stretch_grid = .true.177 !stretch_grid = .true. 177 178 delt = 3. 178 179 ! z_scale = .50 179 180 ! z_scale = .10 180 181 ! z_scale = .25 181 ! z_scale = .1 5182 ! z_scale = .1 182 183 pi = 2.*asin(1.0) 183 184 write(6,*) ' pi is ',pi … … 302 303 grid%rdx = 1./config_flags%dx 303 304 grid%rdy = 1./config_flags%dy 304 305 305 ! get the sounding from the ascii sounding file, first get dry sounding and 306 306 ! calculate base state … … 310 310 write(6,*) ' getting dry sounding for base state ' 311 311 312 CALL get_sounding( zk, p_in, pd_in, theta, rho, u, v, qv, dry_sounding, nl_max, nl_in )312 CALL get_sounding( zk, p_in, pd_in, theta, Tz, rho, u, v, qv, dry_sounding, nl_max, nl_in ) 313 313 ENDIF 314 314 CALL wrf_dm_bcast_real( zk , nl_max ) … … 316 316 CALL wrf_dm_bcast_real( pd_in , nl_max ) 317 317 CALL wrf_dm_bcast_real( theta , nl_max ) 318 CALL wrf_dm_bcast_real( Tz , nl_max ) 318 319 CALL wrf_dm_bcast_real( rho , nl_max ) 319 320 CALL wrf_dm_bcast_real( u , nl_max ) … … 384 385 ENDDO 385 386 386 xs=ide/2 -3 387 xs=ids -3 388 xe=xs + 6 389 ys=jde/2 -3 390 ye=ys + 6 391 mtn_ht = 500 387 xs=ide/2 -25 388 !xs=ids -3 389 !xe=xs + 6 390 xe=xs + 25 391 !ys=jde/2 -3 392 ys=jde/2 -25 393 !ye=ys + 6 394 ye=ys + 25 395 mtn_ht = 1000 392 396 #ifdef MTN 393 397 DO j=max(ys,jds),min(ye,jde-1) 394 398 DO i=max(xs,ids),min(xe,ide-1) 395 grid%ht(i,j) = mtn_ht * 0.25 * &399 grid%ht(i,j) = alt_input + mtn_ht * 0.25 * & 396 400 ( 1. + COS ( 2*pi/(xe-xs) * ( i-xs ) + pi ) ) * & 397 401 ( 1. + COS ( 2*pi/(ye-ys) * ( j-ys ) + pi ) ) … … 434 438 p_level = grid%znu(k)*(p_surf - grid%p_top) + grid%p_top 435 439 grid%pb(i,k,j) = p_level 436 grid%t_init(i,k,j) = interp_0( theta, p_in, p_level, nl_in ) - t0 440 grid%t_init(i,k,j) = interp_0_log( theta, p_in, p_level, nl_in ) - t0 441 grid%tz_init(i,k,j) = interp_0_log( Tz, p_in, p_level, nl_in ) 437 442 grid%alb(i,k,j) = (r_d/p1000mb)*(grid%t_init(i,k,j)+t0)*(grid%pb(i,k,j)/p1000mb)**cvpm 438 443 ENDDO … … 458 463 ENDDO 459 464 ENDDO 460 461 465 IF ( wrf_dm_on_monitor() ) THEN 462 466 write(6,*) ' ptop is ',grid%p_top … … 468 472 write(6,*) ' getting moist sounding for full state ' 469 473 dry_sounding = .false. 470 CALL get_sounding( zk, p_in, pd_in, theta, rho, u, v, qv, dry_sounding, nl_max, nl_in )474 CALL get_sounding( zk, p_in, pd_in, theta, Tz, rho, u, v, qv, dry_sounding, nl_max, nl_in ) 471 475 472 476 DO J = jts, min(jde-1,jte) … … 491 495 p_level = grid%znu(k)*(pd_surf - grid%p_top) + grid%p_top 492 496 493 moist(i,k,j,P_QV) = interp_0 ( qv, pd_in, p_level, nl_in )494 grid%t_1(i,k,j) = interp_0 ( theta, pd_in, p_level, nl_in ) - t0497 moist(i,k,j,P_QV) = interp_0_log( qv, pd_in, p_level, nl_in ) 498 grid%t_1(i,k,j) = interp_0_log( theta, pd_in, p_level, nl_in ) - t0 495 499 grid%t_2(i,k,j) = grid%t_1(i,k,j) 496 500 … … 694 698 DO K = 1, kte-1 695 699 p_level = grid%znu(k)*(p_surf - grid%p_top) + grid%p_top 696 grid%v_1(i,k,j) = interp_0 ( v, p_in, p_level, nl_in )700 grid%v_1(i,k,j) = interp_0_log( v, p_in, p_level, nl_in ) 697 701 grid%v_2(i,k,j) = grid%v_1(i,k,j) 698 702 ENDDO … … 718 722 DO K = 1, kte-1 719 723 p_level = grid%znu(k)*(p_surf - grid%p_top) + grid%p_top 720 grid%u_1(i,k,j) = interp_0 ( u, p_in, p_level, nl_in )724 grid%u_1(i,k,j) = interp_0_log( u, p_in, p_level, nl_in ) 721 725 grid%u_2(i,k,j) = grid%u_1(i,k,j) 722 726 ENDDO … … 847 851 DO k=1,kte-1 848 852 p_level = grid%znu(k)*(pd_surf - grid%p_top) + grid%p_top 849 scalar(its:ite,k,jts:jte,2) = interp_0 ( qv, pd_in, p_level, nl_in )853 scalar(its:ite,k,jts:jte,2) = interp_0_log( qv, pd_in, p_level, nl_in ) 850 854 scalar(its:ite,k,jts:jte,3) = 0. 851 855 !! water ice is set to 0 (was put into water vapor when building prof from MCD) … … 862 866 DO k=1,kte-1 863 867 p_level = grid%znu(k)*(pd_surf - grid%p_top) + grid%p_top 864 scalar(its:ite,k,jts:jte,4) = interp_0 ( profdustq, pd_in, p_level, nl_in )865 scalar(its:ite,k,jts:jte,5) = interp_0 ( profdustn, pd_in, p_level, nl_in )868 scalar(its:ite,k,jts:jte,4) = interp_0_log( profdustq, pd_in, p_level, nl_in ) 869 scalar(its:ite,k,jts:jte,5) = interp_0_log( profdustn, pd_in, p_level, nl_in ) 866 870 ENDDO 867 871 print *, "DUST Q", scalar(its,:,jts,4) … … 882 886 DO i = its, ite 883 887 !!! we use Q2 as a vehicle for heating rates! sick! 884 grid%m_q2(i,k,j) = interp_0 ( profdustq, pd_in, p_level, nl_in ) &885 + interp_0 ( profdustn, pd_in, p_level, nl_in )888 grid%m_q2(i,k,j) = interp_0_log( profdustq, pd_in, p_level, nl_in ) & 889 + interp_0_log( profdustn, pd_in, p_level, nl_in ) 886 890 ENDDO 887 891 ENDDO … … 889 893 !print*,k,grid%m_q2(1,k,1) 890 894 ENDDO 891 print*,'planet',planet 895 892 896 IF (planet.eq."prescribed") Then 893 call read_hr( profdustq,profdustn,nl_in)897 call read_hr(hrsw,hrlw,hrdyn,nl_in) 894 898 open(unit=17,file="prescribed_sw.txt",action="write") 895 899 open(unit=18,file="prescribed_lw.txt",action="write") 900 open(unit=19,file="prescribed_dyn.txt",action="write") 896 901 DO k=1,kte!-1 897 902 p_level = grid%znu(k)*(pd_surf - grid%p_top) + grid%p_top 898 prescribed_sw(k) = interp_0( profdustq, pd_in, p_level, nl_in ) 899 prescribed_lw(k) = interp_0( profdustn, pd_in, p_level, nl_in ) 903 prescribed_sw(k) = interp_0_log( hrsw, pd_in, p_level, nl_in ) 904 prescribed_lw(k) = interp_0_log( hrlw, pd_in, p_level, nl_in ) 905 prescribed_dyn(k) = interp_0_log( hrdyn, pd_in, p_level, nl_in ) 900 906 write (17,*) prescribed_sw(k) 901 907 write (18,*) prescribed_lw(k) 908 write (19,*) prescribed_dyn(k) 902 909 ENDDO 910 close(unit=19) 911 close(unit=18) 903 912 close(unit=17) 904 close(unit=18)905 913 ENDIF 914 915 IF (planet.eq."venus") Then 916 call read_hr(hrsw,hrlw,hrdyn,nl_in) 917 open(unit=20,file="venus_hrdyn.txt",action="write") 918 DO k=1,kte!-1 919 p_level = grid%znu(k)*(pd_surf - grid%p_top) + grid%p_top 920 venus_hrdyn(k) = interp_0_log( hrdyn, pd_in, p_level, nl_in ) 921 write (20,*) venus_hrdyn(k) 922 ENDDO 923 close(unit=20) 924 ENDIF 925 926 open(unit=21,file="altitude.txt",action="write") 927 DO k=1,kte!-1 928 p_level = grid%znu(k)*(pd_surf - grid%p_top) + grid%p_top 929 altitude(k) = interp_0_log( zk, pd_in, p_level, nl_in ) 930 write (21,*) altitude(k) 931 ENDDO 932 close(unit=21) 906 933 907 934 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 941 968 !--------------------------------------------------------------------------- 942 969 943 subroutine get_sounding( zk, p, p_dry, theta, rho, &970 subroutine get_sounding( zk, p, p_dry, theta, Tz, rho, & 944 971 u, v, qv, dry, nl_max, nl_in ) 945 972 implicit none … … 947 974 integer nl_max, nl_in 948 975 real zk(nl_max), p(nl_max), theta(nl_max), rho(nl_max), & 949 u(nl_max), v(nl_max), qv(nl_max), p_dry(nl_max) 976 u(nl_max), v(nl_max), qv(nl_max), p_dry(nl_max),Tz(nl_max) 950 977 logical dry 951 978 … … 1112 1139 v(k) = v_input(k) 1113 1140 qv(k) = qv_input(k) 1141 Tz(k) = t_therm(k) 1114 1142 1115 1143 enddo … … 1198 1226 implicit none 1199 1227 integer n 1200 real pdustq(n ),pdustn(n)1228 real pdustq(n+1),pdustn(n+1) 1201 1229 logical end_of_file 1202 1230 … … 1223 1251 end subroutine read_dust 1224 1252 !!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 1225 subroutine read_hr(hr_sw,hr_lw, n)1253 subroutine read_hr(hr_sw,hr_lw,hr_dyn,n) 1226 1254 implicit none 1227 1255 integer n 1228 real hr_sw(n ),hr_lw(n)1256 real hr_sw(n+1),hr_lw(n+1),hr_dyn(n+1) 1229 1257 logical end_of_file 1230 1258 … … 1239 1267 do while (.not. end_of_file) 1240 1268 1241 read(11,*,end=103) hr_sw(k+1),hr_lw(k+1) 1242 write(*,*) k,hr_sw(k+1),hr_lw(k+1) 1269 read(11,*,end=103) hr_sw(k+1),hr_lw(k+1),hr_dyn(k+1) 1270 write(*,*) k,hr_sw(k+1),hr_lw(k+1),hr_dyn(k+1) 1243 1271 k = k+1 1244 go to 11 31272 go to 114 1245 1273 103 end_of_file = .true. 1246 1274 114 continue
Note: See TracChangeset
for help on using the changeset viewer.
