Changeset 1746 for trunk/MESOSCALE/LMD_MM_MARS
- Timestamp:
- Jul 24, 2017, 5:06:29 PM (8 years ago)
- Location:
- trunk/MESOSCALE/LMD_MM_MARS
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/MESOSCALE/LMD_MM_MARS/SIMU/RUN/vert_level_python/levspe.py
r1606 r1746 14 14 #psurf=92.e5 # Venus 15 15 psurf=1.212862e6 16 17 hache = 10. 18 psurf = 610. 19 20 16 21 print hache, psurf 17 22 #read paramlevspe 23 24 25 26 18 27 param=np.loadtxt('paramlevspe') 19 28 nlev=param[0] … … 52 61 #print ptop 53 62 etas=(pressions-ptop)/(psurf-ptop) 54 etas[ nlev-1]=0.63 etas[int(nlev)-1]=0. 55 64 #print etas 56 65 press=etas*(psurf-ptop)+ptop … … 68 77 np.savetxt('levels',etas) 69 78 70 plt.figure(figsize=(1 5, 15))79 plt.figure(figsize=(12, 6)) 71 80 plt.subplot(221) 72 plt.plot(x, etas )81 plt.plot(x, etas, 'b.') 73 82 plt.xlabel('levels') 74 83 plt.ylabel('etas') … … 76 85 #plt.title('a) NINO3 Sea Surface Temperature (seasonal)') 77 86 #plt.hold(False) 87 axes = plt.gca() 88 axes.set_ylim([0,1]) 78 89 79 90 plt.subplot(222) 80 plt.plot(x, pseudo )91 plt.plot(x, pseudo, 'b.') 81 92 plt.xlabel('levels') 82 93 plt.grid() 83 94 plt.ylabel('pseudo-altitude (km)') 95 plt.semilogy() 96 axes = plt.gca() 97 axes.set_ylim([0,60]) 98 84 99 85 100 plt3 = plt.subplot(223) 86 plt.semilogy(x, press )101 plt.semilogy(x, press, 'b.') 87 102 plt.xlabel('levels') 88 103 plt.grid() 89 plt.ylabel('press ion(Pa)')104 plt.ylabel('pressure (Pa)') 90 105 91 106 plt4 = plt.subplot(224) 92 plt.plot(x, res )107 plt.plot(x, res, 'b.') 93 108 plt.xlabel('levels') 94 109 plt.grid() -
trunk/MESOSCALE/LMD_MM_MARS/SIMU/RUN/vert_level_python/paramlevspe
r1606 r1746 3 3 #epsilon augmentation totale en pourcentage de l'ecart max (modifie inflexion). epsilon = 0 : point d'inflexion parfaitement plat. epsilon = 100 : pas de point d'inflexion 4 4 #elong_cos plus petit rapproche l'inflexion du sol ;; 2/3 parfait pour un nlev divisible par 3 5 2016 280.7 08 0.000000044 5 61 6 60. 7 100 8 1.75 -
trunk/MESOSCALE/LMD_MM_MARS/SIMU/namelist.input_full
r1044 r1746 88 88 h_sca_adv_order = 5, !! (*d) Horizontal scalar advection order 89 89 v_sca_adv_order = 3, !! (*d) Vertical scalar advection order 90 khdif = 10., !! ** direct diffusion for tests (km_opt=1). horizontal diffusion constant (m^2/s) 91 kvdif = 10., !! ** direct diffusion for tests (km_opt=1). vertical diffusion constant (m^2/s) 90 92 / 91 93 -
trunk/MESOSCALE/LMD_MM_MARS/SRC/LES/modif_mars/module_initialize_les.F
r1724 r1746 86 86 87 87 INTEGER, PARAMETER :: nl_max = 1000 88 REAL, DIMENSION(nl_max) :: zk, p_in, theta, Tz,rho, u, v, qv, pd_in88 REAL, DIMENSION(nl_max) :: zk, p_in, theta, 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) :: 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 118 REAL, DIMENSION(nl_max) :: prescribed_sw,prescribed_lw 123 119 !!MARS 124 120 … … 127 123 !INTEGER :: hypsometric_opt = 2 ! Wee et al. 2012 correction 128 124 125 character(len=10) :: planet 129 126 130 127 #ifdef DM_PARALLEL 131 128 # include <data_calls.inc> 132 129 #endif 130 131 call init_planet_constants 133 132 134 133 SELECT CASE ( model_data_order ) … … 173 172 174 173 175 stretch_grid = .false.174 !stretch_grid = .false. 176 175 ! FOR LES, set stretch to false 177 !stretch_grid = .true.176 stretch_grid = .true. 178 177 delt = 3. 179 178 ! z_scale = .50 180 179 ! z_scale = .10 181 180 ! z_scale = .25 182 ! z_scale = .1 181 ! z_scale = .15 183 182 pi = 2.*asin(1.0) 184 183 write(6,*) ' pi is ',pi … … 303 302 grid%rdx = 1./config_flags%dx 304 303 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, Tz,rho, u, v, qv, dry_sounding, nl_max, nl_in )312 CALL get_sounding( zk, p_in, pd_in, theta, 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 )319 318 CALL wrf_dm_bcast_real( rho , nl_max ) 320 319 CALL wrf_dm_bcast_real( u , nl_max ) … … 385 384 ENDDO 386 385 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 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 396 392 #ifdef MTN 397 393 DO j=max(ys,jds),min(ye,jde-1) 398 394 DO i=max(xs,ids),min(xe,ide-1) 399 grid%ht(i,j) = alt_input +mtn_ht * 0.25 * &395 grid%ht(i,j) = mtn_ht * 0.25 * & 400 396 ( 1. + COS ( 2*pi/(xe-xs) * ( i-xs ) + pi ) ) * & 401 397 ( 1. + COS ( 2*pi/(ye-ys) * ( j-ys ) + pi ) ) … … 438 434 p_level = grid%znu(k)*(p_surf - grid%p_top) + grid%p_top 439 435 grid%pb(i,k,j) = p_level 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 ) 436 grid%t_init(i,k,j) = interp_0( theta, p_in, p_level, nl_in ) - t0 442 437 grid%alb(i,k,j) = (r_d/p1000mb)*(grid%t_init(i,k,j)+t0)*(grid%pb(i,k,j)/p1000mb)**cvpm 443 438 ENDDO … … 463 458 ENDDO 464 459 ENDDO 460 465 461 IF ( wrf_dm_on_monitor() ) THEN 466 462 write(6,*) ' ptop is ',grid%p_top … … 472 468 write(6,*) ' getting moist sounding for full state ' 473 469 dry_sounding = .false. 474 CALL get_sounding( zk, p_in, pd_in, theta, Tz,rho, u, v, qv, dry_sounding, nl_max, nl_in )470 CALL get_sounding( zk, p_in, pd_in, theta, rho, u, v, qv, dry_sounding, nl_max, nl_in ) 475 471 476 472 DO J = jts, min(jde-1,jte) … … 495 491 p_level = grid%znu(k)*(pd_surf - grid%p_top) + grid%p_top 496 492 497 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 ) - t0493 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 ) - t0 499 495 grid%t_2(i,k,j) = grid%t_1(i,k,j) 500 496 … … 698 694 DO K = 1, kte-1 699 695 p_level = grid%znu(k)*(p_surf - grid%p_top) + grid%p_top 700 grid%v_1(i,k,j) = interp_0 _log( v, p_in, p_level, nl_in )696 grid%v_1(i,k,j) = interp_0( v, p_in, p_level, nl_in ) 701 697 grid%v_2(i,k,j) = grid%v_1(i,k,j) 702 698 ENDDO … … 722 718 DO K = 1, kte-1 723 719 p_level = grid%znu(k)*(p_surf - grid%p_top) + grid%p_top 724 grid%u_1(i,k,j) = interp_0 _log( u, p_in, p_level, nl_in )720 grid%u_1(i,k,j) = interp_0( u, p_in, p_level, nl_in ) 725 721 grid%u_2(i,k,j) = grid%u_1(i,k,j) 726 722 ENDDO … … 851 847 DO k=1,kte-1 852 848 p_level = grid%znu(k)*(pd_surf - grid%p_top) + grid%p_top 853 scalar(its:ite,k,jts:jte,2) = interp_0 _log( qv, pd_in, p_level, nl_in )849 scalar(its:ite,k,jts:jte,2) = interp_0( qv, pd_in, p_level, nl_in ) 854 850 scalar(its:ite,k,jts:jte,3) = 0. 855 851 !! water ice is set to 0 (was put into water vapor when building prof from MCD) … … 866 862 DO k=1,kte-1 867 863 p_level = grid%znu(k)*(pd_surf - grid%p_top) + grid%p_top 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 )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 ) 870 866 ENDDO 871 867 print *, "DUST Q", scalar(its,:,jts,4) … … 886 882 DO i = its, ite 887 883 !!! we use Q2 as a vehicle for heating rates! sick! 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 )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 ) 890 886 ENDDO 891 887 ENDDO … … 893 889 !print*,k,grid%m_q2(1,k,1) 894 890 ENDDO 895 891 print*,'planet',planet 896 892 IF (planet.eq."prescribed") Then 897 call read_hr( hrsw,hrlw,hrdyn,nl_in)893 call read_hr(profdustq,profdustn,nl_in) 898 894 open(unit=17,file="prescribed_sw.txt",action="write") 899 895 open(unit=18,file="prescribed_lw.txt",action="write") 900 open(unit=19,file="prescribed_dyn.txt",action="write")901 896 DO k=1,kte!-1 902 897 p_level = grid%znu(k)*(pd_surf - grid%p_top) + grid%p_top 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 ) 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 ) 906 900 write (17,*) prescribed_sw(k) 907 901 write (18,*) prescribed_lw(k) 908 write (19,*) prescribed_dyn(k)909 902 ENDDO 910 close(unit=1 9)903 close(unit=17) 911 904 close(unit=18) 912 close(unit=17)913 905 ENDIF 914 915 IF (planet.eq."venus") Then916 call read_hr(hrsw,hrlw,hrdyn,nl_in)917 open(unit=20,file="venus_hrdyn.txt",action="write")918 DO k=1,kte!-1919 p_level = grid%znu(k)*(pd_surf - grid%p_top) + grid%p_top920 venus_hrdyn(k) = interp_0_log( hrdyn, pd_in, p_level, nl_in )921 write (20,*) venus_hrdyn(k)922 ENDDO923 close(unit=20)924 ENDIF925 926 open(unit=21,file="altitude.txt",action="write")927 DO k=1,kte!-1928 p_level = grid%znu(k)*(pd_surf - grid%p_top) + grid%p_top929 altitude(k) = interp_0_log( zk, pd_in, p_level, nl_in )930 write (21,*) altitude(k)931 ENDDO932 close(unit=21)933 906 934 907 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! … … 968 941 !--------------------------------------------------------------------------- 969 942 970 subroutine get_sounding( zk, p, p_dry, theta, Tz,rho, &943 subroutine get_sounding( zk, p, p_dry, theta, rho, & 971 944 u, v, qv, dry, nl_max, nl_in ) 972 945 implicit none … … 974 947 integer nl_max, nl_in 975 948 real zk(nl_max), p(nl_max), theta(nl_max), rho(nl_max), & 976 u(nl_max), v(nl_max), qv(nl_max), p_dry(nl_max) ,Tz(nl_max)949 u(nl_max), v(nl_max), qv(nl_max), p_dry(nl_max) 977 950 logical dry 978 951 … … 1139 1112 v(k) = v_input(k) 1140 1113 qv(k) = qv_input(k) 1141 Tz(k) = t_therm(k)1142 1114 1143 1115 enddo … … 1226 1198 implicit none 1227 1199 integer n 1228 real pdustq(n +1),pdustn(n+1)1200 real pdustq(n),pdustn(n) 1229 1201 logical end_of_file 1230 1202 … … 1251 1223 end subroutine read_dust 1252 1224 !!cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc 1253 subroutine read_hr(hr_sw,hr_lw, hr_dyn,n)1225 subroutine read_hr(hr_sw,hr_lw,n) 1254 1226 implicit none 1255 1227 integer n 1256 real hr_sw(n +1),hr_lw(n+1),hr_dyn(n+1)1228 real hr_sw(n),hr_lw(n) 1257 1229 logical end_of_file 1258 1230 … … 1267 1239 do while (.not. end_of_file) 1268 1240 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)1241 read(11,*,end=103) hr_sw(k+1),hr_lw(k+1) 1242 write(*,*) k,hr_sw(k+1),hr_lw(k+1) 1271 1243 k = k+1 1272 go to 11 41244 go to 113 1273 1245 103 end_of_file = .true. 1274 1246 114 continue -
trunk/MESOSCALE/LMD_MM_MARS/SRC/WRFV2/dyn_em/module_initialize_real.F
r1724 r1746 21 21 USE module_soil_pre 22 22 USE module_date_time 23 use module_init_utilities24 23 #ifdef DM_PARALLEL 25 24 USE module_dm … … 119 118 REAL :: max_dz 120 119 121 INTEGER , PARAMETER :: nl_max = 1000 122 INTEGER :: nl_in 120 ! INTEGER , PARAMETER :: nl_max = 1000 123 121 ! REAL , DIMENSION(nl_max) :: grid%em_dn 124 REAL, DIMENSION(nl_max) :: pd_in 125 REAL, DIMENSION(nl_max) :: profdustq,profdustn 122 126 123 integer::oops1,oops2 127 124 … … 152 149 !LOGICAL :: interp_theta = .false. ! Wee et al. 2012 correction 153 150 REAL :: pfu, pfd, phm 154 REAL :: tpot 151 155 152 156 153 #ifdef DM_PARALLEL … … 1083 1080 !!END DO 1084 1081 1085 IF ( planet == "mars" ) then 1082 1086 1083 !--get vertical size of the GCM input array and allocate new stuff 1087 1088 1089 1090 1091 1092 1093 1084 sizegcm=SIZE(grid%em_rh_gc(1,:,1)) 1085 ALLOCATE(sig(MIN(ite,ide-1)-its+1,sizegcm, MIN(jte,jde-1)-jts+1)) 1086 !ALLOCATE(ap(MIN(ite,ide-1)-its+1,sizegcm, MIN(jte,jde-1)-jts+1)) 1087 ALLOCATE(bp(MIN(ite,ide-1)-its+1,sizegcm, MIN(jte,jde-1)-jts+1)) 1088 1089 DO j = jts , MIN ( jde-1 , jte ) 1090 DO i = its , MIN (ide-1 , ite ) 1094 1091 1095 1092 !!! Define old sigma levels for each column 1096 1093 sig(i,:,j)=grid%em_p_gc(i,:,j)/grid%em_psfc_gc(i,j) 1097 1094 1098 1095 !!! Compute new sigma levels from old sigma levels with GCM (low-res) and WRF (hi-res) surface pressure 1099 1096 !!! (dimlevs,sigma_gcm, ps_gcm, ps_hr, sigma_hr) 1100 1097 CALL build_sigma_hr(sizegcm,sig(i,:,j),grid%em_psfc_gc(i,j),grid%psfc(i,j),bp(i,:,j)) 1101 1098 1102 1099 !!! Calculate new pressure levels 1103 1104 1105 1106 1107 1108 1109 1100 grid%em_pd_gc(i,:,j)=bp(i,:,j)*grid%psfc(i,j) 1101 1102 END DO 1103 END DO 1104 1105 DEALLOCATE(sig) 1106 DEALLOCATE(bp) 1110 1107 1111 1108 !!****MARS who knows... 1112 1109 grid%em_rh_gc(:,:,:)=0. 1113 1110 1114 1111 … … 1116 1113 !grid%em_pd_gc=grid%em_p_gc 1117 1114 !!****MARS 1118 ELSE ! VENUS 1115 1119 1116 1120 1117 … … 1123 1120 !! dry top pressure (constant). 1124 1121 ! 1125 CALL p_dts ( grid%em_mu0 , grid%em_intq_gc , grid%psfc , grid%p_top , & 1126 ids , ide , jds , jde , 1 , num_metgrid_levels , & 1127 ims , ime , jms , jme , 1 , num_metgrid_levels , & 1128 its , ite , jts , jte , 1 , num_metgrid_levels ) 1129 ENDIF 1130 IF ( planet == "mars" ) then 1122 !CALL p_dts ( grid%em_mu0 , grid%em_intq_gc , grid%psfc , grid%p_top , & 1123 ! ids , ide , jds , jde , 1 , num_metgrid_levels , & 1124 ! ims , ime , jms , jme , 1 , num_metgrid_levels , & 1125 ! its , ite , jts , jte , 1 , num_metgrid_levels ) 1126 1131 1127 !!****MARS 1132 1133 1134 1135 1136 1137 1138 1128 DO j = jts , MIN ( jde-1 , jte ) 1129 DO i = its , MIN (ide-1 , ite ) 1130 1131 grid%em_mu0(i,j) = grid%psfc(i,j) - grid%p_top 1132 1133 END DO 1134 END DO 1139 1135 !!****MARS 1140 ELSE ! VENUS 1136 1141 1137 1142 1138 !! Compute the dry, hydrostatic surface pressure. 1143 1139 ! 1144 CALL p_dhs ( grid%em_pdhs , grid%ht , p00 , t00 , a , & 1145 ids , ide , jds , jde , kds , kde , & 1146 ims , ime , jms , jme , kms , kme , & 1147 its , ite , jts , jte , kts , kte ) 1148 ENDIF 1140 !CALL p_dhs ( grid%em_pdhs , grid%ht , p00 , t00 , a , & 1141 ! ids , ide , jds , jde , kds , kde , & 1142 ! ims , ime , jms , jme , kms , kme , & 1143 ! its , ite , jts , jte , kts , kte ) 1149 1144 !!****MARS: voir remarques dans la routine 1150 1145 !!****MARS: dry hydrostatic pressure comes from the GCM ... … … 2299 2294 IF (( i .EQ. its ) .AND. ( j .EQ. jts )) print *, temp, k 2300 2295 !!! MODIF WRFV3.1 - parameter tiso 2301 IF (planet .eq. "mars" ) THEN 2302 grid%em_t_init(i,k,j) = temp*(p00/grid%em_pb(i,k,j))**(r_d/cp) - t0 2303 ELSE 2304 grid%em_t_init(i,k,j) = (temp**nu + nu*(TT00**nu)*log((p00/grid%em_pb(i,k,j))**rcp))**(1/nu) -t0 2305 ENDIF 2296 grid%em_t_init(i,k,j) = temp*(p00/grid%em_pb(i,k,j))**(r_d/cp) - t0 2306 2297 grid%em_alb(i,k,j) = (r_d/p1000mb)*(grid%em_t_init(i,k,j)+t0)*(grid%em_pb(i,k,j)/p1000mb)**cvpm 2307 2298 END DO … … 2610 2601 !!NB: q2 is used for other purpose ... 2611 2602 2603 2612 2604 ! END IF 2613 2605 … … 2788 2780 temp1 = MAX(tiso,t00+A*LOG(grid%em_pb(i,k,j)/p00)) 2789 2781 temp2 = MAX(tiso,t00+A*LOG( pb_int/p00)) 2790 IF (planet .eq. "mars" ) THEN 2791 grid%em_t_init(i,k,j) = temp1*(p00/grid%em_pb(i,k,j))**(r_d/cp) - t0 2792 t_init_int(i,k,j) = temp2*(p00/pb_int )**(r_d/cp) - t0 2793 ELSE 2794 ENDIF 2782 grid%em_t_init(i,k,j) = temp1*(p00/grid%em_pb(i,k,j))**(r_d/cp) - t0 2783 t_init_int(i,k,j) = temp2*(p00/pb_int )**(r_d/cp) - t0 2795 2784 grid%em_alb(i,k,j) = (r_d/p1000mb)*(grid%em_t_init(i,k,j)+t0)*(grid%em_pb(i,k,j)/p1000mb)**cvpm 2796 2785 END DO … … 4980 4969 ! temp = t00 + A*LOG(pb/p00) 4981 4970 temp = MAX ( tiso, t00 + A*LOG(pb/p00) ) 4982 IF (planet .eq. "mars" ) THEN 4983 t_init = temp*(p00/pb)**(r_d/cp) - t0 4984 ELSE 4985 t_init = (temp**nu + nu*(TT00**nu)*log((p00/pb)**(rcp)))**(1/nu) - t0 4986 ENDIF 4971 t_init = temp*(p00/pb)**(r_d/cp) - t0 4987 4972 alb(k) = (r_d/p1000mb)*(t_init+t0)*(pb/p1000mb)**cvpm 4988 4973 END DO … … 5020 5005 ! temp = t00 + A*LOG(pb/p00) 5021 5006 temp = MAX ( tiso, t00 + A*LOG(pb/p00) ) 5022 IF (planet .eq. "mars" ) THEN 5023 t_init = temp*(p00/pb)**(r_d/cp) - t0 5024 ELSE 5025 t_init = (temp**nu + nu*(TT00**nu)*log((p00/pb)**(rcp)))**(1/nu) -t0 5026 ENDIF 5007 t_init = temp*(p00/pb)**(r_d/cp) - t0 5027 5008 alb(k) = (r_d/p1000mb)*(t_init+t0)*(pb/p1000mb)**cvpm 5028 5009 znw(k+1) = znw(k) - dz*g / ( mub*alb(k) ) … … 5044 5025 ! temp = t00 + A*LOG(pb/p00) 5045 5026 temp = MAX ( tiso, t00 + A*LOG(pb/p00) ) 5046 IF (planet .eq. "mars" ) THEN 5047 t_init = temp*(p00/pb)**(r_d/cp) - t0 5048 ELSE 5049 t_init = (temp**nu + nu*(TT00**nu)*log((p00/pb)**(rcp)))**(1/nu) -t0 5050 ENDIF 5027 t_init = temp*(p00/pb)**(r_d/cp) - t0 5051 5028 alb(k) = (r_d/p1000mb)*(t_init+t0)*(pb/p1000mb)**cvpm 5052 5029 znw(k+1) = znw(k) - dz*g / ( mub*alb(k) ) … … 5075 5052 ! temp = t00 + A*LOG(pb/p00) 5076 5053 temp = MAX ( tiso, t00 + A*LOG(pb/p00) ) 5077 IF (planet .eq. "mars" ) THEN 5078 t_init = temp*(p00/pb)**(r_d/cp) - t0 5079 ELSE 5080 t_init = (temp**nu + nu*(TT00**nu)*log((p00/pb)**(rcp)))**(1/nu) -t0 5081 ENDIF 5054 t_init = temp*(p00/pb)**(r_d/cp) - t0 5082 5055 alb(k) = (r_d/p1000mb)*(t_init+t0)*(pb/p1000mb)**cvpm 5083 5056 END DO … … 5747 5720 end subroutine build_sigma_hr 5748 5721 5722 5723 5724 5725 5749 5726 END MODULE module_initialize 5750 5727 -
trunk/MESOSCALE/LMD_MM_MARS/makemeso
r1724 r1746 74 74 # makemeso -p mars_lmd_new ## choose physics 75 75 # venus_lmd_new 76 # generic_lmd_new77 # titan_lmd_new78 76 # 79 77 # makemeso -f ## fresh start [clean -a] … … 244 242 cd .. 245 243 246 # remove files adapted to parallel GCM and useless for mesoscale 247 #cd mars_lmd 248 #cd libf/phymars 249 #\rm tabfi* soil_settings* phyetat0* phyredem* iostart* writediagfi* mkstat* writediagsoil* eofdump* wstats* inistats* mod_* 250 #\rm iniphysiq* init_phys_lmdz* comgeomphy* planetwide_mod* 251 #mv ../dyn3d/control_mod.F90 . 252 #cd ../.. 253 #cd .. 254 255 else 256 if [[ "${config}" == "les" ]] 257 then 258 #### NB: With physics: LES folder // Without physics : LESnophys_ folder 259 #### ---- because differences in 'modif' folder ---- 260 #sed s+"PWD/SRC/"+"PWD/SRC/LES$phys/"+g SRC/SCRIPTS/copy_model > copy_model_tmp 261 sed s+"PWD/SRC/"+"PWD/SRC/LES/"+g SRC/SCRIPTS/copy_model > copy_model_tmp 262 else 263 cp SRC/SCRIPTS/copy_model copy_model_tmp 264 fi 265 chmod 755 copy_model_tmp 266 ./copy_model_tmp 267 \rm copy_model_tmp 268 mv zeWRFV2 ${conf_wrf}/WRFV2 269 cd ${conf_wrf}/WRFV2 270 cd Registry ; ./Registry.bash ; cd .. 244 else 245 cd ${conf_wrf}/WRFV2 246 cd Registry ; ./Registry.bash ; cd .. 271 247 fi 272 248 #### sparadrap consequent a l'utilisation de copy_model pour les liens … … 414 390 then 415 391 sed s+"-lnetcdf"+"-lnetcdf -L../$phys/libo -llmd $NETCDF/lib/libnetcdf.a"+g configure.wrf > yeah ; mv -f yeah configure.wrf 416 #sed s+"O3"+"O3"+g configure.wrf > yeah ; mv -f yeah configure.wrf417 392 else 418 393 sed s+"-lnetcdf"+"-lnetcdf $NETCDF/lib/libnetcdf.a"+g configure.wrf > yeah ; mv -f yeah configure.wrf … … 481 456 mv -f yeah configure.wrf ;; 482 457 mpifort_64) # MPI+IFORT, 64 bits, no nesting / nesting 483 echo 9 | ./configure > log_compile 2> log_error458 echo 9 | configure > log_compile 2> log_error 484 459 sed -f physics.sed configure.wrf > yeah ; mv -f yeah configure.wrf 485 460 sed s+"-f90=ifort"+" "+g configure.wrf > yeah ; mv -f yeah configure.wrf … … 492 467 then 493 468 echo 'DEBUG DEBUG DEBUG DEBUG' 494 sed s+"# -g"+" -g -no-ftz -traceback -ftrapuv -fp-stack-check -check"+g configure.wrf > yeah469 sed s+"# -g"+" -g -no-ftz -traceback -ftrapuv -fp-stack-check -check"+g configure.wrf > yeah 495 470 mv -f yeah configure.wrf 496 471 fi … … 512 487 sed s+"mpicc"+"mpicc -DMPI2_SUPPORT"+g configure.wrf > yeah ; mv -f yeah configure.wrf 513 488 ## !!! NETCDF must be defined 514 if [[ "${phys}" != *"void"* ]] 515 sed s+"-L../$phys/libo -llmd"+"-L../$phys/libo -llmd $NETCDF/lib/libnetcdf.a $NETCDF/lib/libnetcdff.a"+g configure.wrf > yeah 516 else 517 sed s+"-lesmf_time"+"-lesmf_time $NETCDF/lib/libnetcdf.a $NETCDFF/lib/libnetcdff.a"+g configure.wrf > yeah 518 fi 489 sed s+"-L../$phys/libo -llmd"+"-L../$phys/libo -llmd $NETCDF/lib/libnetcdf.a"+g configure.wrf > yeah 519 490 mv -f yeah configure.wrf 520 491 #### POUR LE TRAITEMENT PARTICULIERS des NESTS sur iDATAPLEX [cf. module_lmd_driver] … … 614 585 sed s+"LIB_BUNDLED = "+"LIB_BUNDLED = /usr/lib64/liblapack.so \ "+g configure.wrf > yeah ; mv -f yeah configure.wrf 615 586 #sed s+"RWORDSIZE = "+"RWORDSIZE = 8 # "+g configure.wrf > yeah ; mv -f yeah configure.wrf 616 #sed s+"PROMOTION = -i4"+'PROMOTION = -real-size "expr 8 \* $(RWORDSIZE)" -i4'+g configure.wrf > yeah ; mv -f yeah configure.wrf617 #sed s+"PROMOTION = -i4"+"PROMOTION = -real_size 64 -i4"+g configure.wrf > yeah ; mv -f yeah configure.wrf618 587 #sed s+"-DLWORDSIZE=4 "+"-DLWORDSIZE=8 "+g configure.wrf > yeah ; mv -f yeah configure.wrf 619 588 #sed s+"-DIWORDSIZE=4 "+"-DIWORDSIZE=8 "+g configure.wrf > yeah ; mv -f yeah configure.wrf … … 704 673 then 705 674 cd libf/phyvenus 706 elif [[ "${phys}" == *"generic"* ]]707 then708 cd libf/phystd709 elif [[ "${phys}" == *"titan"* ]]710 then711 cd libf/phytitan712 675 fi 713 676 \rm dimphys.h 2> /dev/null 714 #if [[ "${phys}" == "newphys_" ]]715 #then716 #ln -sf ../../meso_dimphys.h_ref . ## ne sert plus !!717 #else718 if [[ "${phys}" != "newphys_" ]]677 # if [[ "${phys}" == "newphys_" ]] 678 # then 679 # ln -sf ../../meso_dimphys.h_ref . ## ne sert plus !! 680 # else 681 if [[ "${phys}" == "mars_lmd" ]] 719 682 then 720 683 physize=$(expr ${physx} \* ${physy}) … … 722 685 head -15 dimphys.h 723 686 fi 724 ### TEST new new phys687 #### TEST new new phys 725 688 #if [[ "${phys}" == "newphys_" ]] 726 689 #then 727 690 # touch gr_fi_dyn.F.lien 728 691 # ln -sf ../dyn3d/gr_fi_dyn.F . ## dommage, a corriger 729 ############################### 730 ############################### 731 ############################### 692 ################################ 693 ################################ 694 ################################ 732 695 #fi 733 ### 734 ### 696 #### 697 #### 735 698 cd ../.. 736 699 … … 748 711 echo compilation info in: 749 712 echo $PWD/libo/log_compile_phys 750 713 751 714 if [ ${debug} -ne 0 ] 752 715 then … … 754 717 then 755 718 echo 'DEBUG DEBUG DEBUG DEBUG' 756 nohup makegcm_${compilo} debug-t ${tra} -p mars -d ${physz} testphys1d | tee libo/log_compile_phys | grep 'warnings' >> libo/log_compile_phys719 nohup makegcm_${compilo} -debug -full -t ${tra} -p mars -d ${physz} testphys1d | tee libo/log_compile_phys | grep 'warnings' >> libo/log_compile_phys 757 720 elif [[ "${phys}" == *"venus"* ]] 758 721 then 759 722 echo 'DEBUG DEBUG DEBUG DEBUG' 760 nohup ./makelmdz -debug -full -p venus -d 181 rcm1d -arch X64_MESU -cpp MESOSCALE | tee libo/log_compile_phys | grep 'warnings' >> libo/log_compile_phys 761 elif [[ "${phys}" == *"generic"* ]] 762 then 763 echo 'DEBUG DEBUG DEBUG DEBUG' 764 nohup ./makegcm_ifort -debug -t ${tra} -p std -b 36x32 -d 25 rcm1d | tee libo/log_compile_phys | grep 'warnings' >> libo/log_compile_phys 765 #nohup ./makegcm_ifort -t ${tra} -p std -b 36x32 -d 25 rcm1d | tee libo/log_compile_phys | grep 'warnings' >> libo/log_compile_phys 723 nohup makelmdz -debug -full -p venus -d 181 rcm1d -arch linux-ifort -cpp MESOSCALE | tee libo/log_compile_phys | grep 'warnings' >> libo/log_compile_phys 766 724 fi 767 725 else 768 726 if [[ "${phys}" == *"mars"* ]] 769 727 then 770 728 nohup makegcm_${compilo} -t ${tra} -p mars -d ${physz} testphys1d | tee libo/log_compile_phys | grep 'warnings' >> libo/log_compile_phys 771 729 elif [[ "${phys}" == *"venus"* ]] 772 730 then 773 nohup ./makelmdz -full -p venus -d 51 rcm1d -arch linux-ifort_meso -cpp MESOSCALE | tee libo/log_compile_phys | grep 'warnings' >> libo/log_compile_phys # on /u/ and /planeto/ 774 nohup ./makelmdz -p venus -d 51 rcm1d -arch linux-ifort_meso -cpp MESOSCALE | tee libo/log_compile_phys | grep 'warnings' >> libo/log_compile_phys 775 #nohup ./makelmdz -full -p venus -d 51 rcm1d -arch CICLADifort -cpp MESOSCALE | tee libo/log_compile_phys | grep 'warnings' >> libo/log_compile_phys # on CICLAD 776 #nohup ./makelmdz -p venus -d 51 rcm1d -arch CICLADifort -cpp MESOSCALE | tee libo/log_compile_phys | grep 'warnings' >> libo/log_compile_phys 777 #nohup ./makelmdz -full -p venus -d 51 rcm1d -arch X64_MESU -cpp MESOSCALE | tee libo/log_compile_phys | grep 'warnings' >> libo/log_compile_phys #on MESU 778 #nohup ./makelmdz -p venus -d 51 rcm1d -arch X64_MESU -cpp MESOSCALE | tee libo/log_compile_phys | grep 'warnings' >> libo/log_compile_phys 779 #nohup makelmdz -full -p venus -d 51 rcm1d -arch X64_OCCIGEN -cpp MESOSCALE | tee libo/log_compile_phys | grep 'warnings' >> libo/log_compile_phys #on OCCIGEN 780 #nohup makelmdz -p venus -d 51 rcm1d -arch X64_OCCIGEN -cpp MESOSCALE | tee libo/log_compile_phys | grep 'warnings' >> libo/log_compile_phys 731 nohup makelmdz -full -p venus -d 51 rcm1d -arch linux-ifort -cpp MESOSCALE | tee libo/log_compile_phys | grep 'warnings' >> libo/log_compile_phys 781 732 fi 782 733 fi … … 791 742 cd libo 792 743 mkdir temp 793 if [[ ("${phys}" == *"venus"*) ]] 794 then 795 cp -f linux*/*.a temp/ # on /u/ and /planeto/ 796 #cp -f /home/mlefevre/modipsl/lib/libioipsl.a temp/ #on CICLAD 797 #cp -f X64*/*.a temp #on MESU and OCCIGEN 744 if [[ "${phys}" == *"venus"* ]] 745 then 746 cp -f linux*/*.a temp/ 798 747 cp -f ../ioipsl/libioipsl.a temp/ 799 748 else … … 806 755 ar x libphymars.a 807 756 ar x libaeronomars.a 808 elif [[ "${phys}" == *"venus"* ]] 809 then 757 else 810 758 ar x libphyvenus.a 811 759 ar x libmisc.a … … 821 769 # finish merge 822 770 cd .. 823 echo ${phys}824 771 if [[ "${phys}" == *"new"* ]] 825 772 then … … 828 775 # include modules for interfacing 829 776 mv *.mod ../inc/ 830 elif [[ ("${phys}" == *"venus"*)]] 831 then 832 mv ./libo/linux*/*.mod ../inc/ # on /u/ and /planeto/ 833 #mv ./libo/CICLAD*/*.mod ../inc/ # on CICLAD 834 #mv ./libo/X64*/*.mod ../inc/ # on MESU and OCCIGEN 777 else # [[ "${phys}" == *"venus"* ]] 778 mv ./libo/linux*/*.mod ../inc/ 835 779 cp -f ./ioipsl/*.mod ../inc/ 780 836 781 fi 837 782 fi
Note: See TracChangeset
for help on using the changeset viewer.