Changeset 1212 for trunk/LMDZ.MARS/libf/phymars
- Timestamp:
- Mar 24, 2014, 9:46:50 AM (11 years ago)
- Location:
- trunk/LMDZ.MARS/libf/phymars
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.MARS/libf/phymars/aeroptproperties.F
r1047 r1212 1247 1247 ENDDO ! ig 1248 1248 ENDDO ! lg 1249 #ifndef MESOSCALE 1249 1250 write(out_str(1:1),'(i1.1)') out_nchannel 1250 1251 call WRITEDIAGFI(ngrid,'qextvis'//out_str,"Ext.efficiency","", … … 1254 1255 call WRITEDIAGFI(ngrid,'gvis'//out_str,"Asym.Factor","", 1255 1256 & out_ndim,out_g) 1257 #endif 1256 1258 c ------------------------------------------------------------- 1257 1259 ENDDO ! out_nchannel … … 1268 1270 ENDDO ! ig 1269 1271 ENDDO ! lg 1272 #ifndef MESOSCALE 1270 1273 write(out_str(1:1),'(i1.1)') out_nchannel 1271 1274 call WRITEDIAGFI(ngrid,'qextir'//out_str,"Ext.efficiency","", … … 1275 1278 call WRITEDIAGFI(ngrid,'gir'//out_str,"Asym.Factor","", 1276 1279 & out_ndim,out_g) 1280 #endif 1277 1281 c ------------------------------------------------------------- 1278 1282 ENDDO ! out_nchannel 1283 #ifndef MESOSCALE 1279 1284 call WRITEDIAGFI(ngrid,"omegvisref","Sing.Scat.Alb.","", 1280 1285 & out_ndim,omegaREFvis3d(1,1,out_iaer)) 1281 1286 call WRITEDIAGFI(ngrid,"omegirref","Sing.Scat.Alb.","", 1282 1287 & out_ndim,omegaREFir3d(1,1,out_iaer)) 1288 #endif 1283 1289 ENDIF ! out_qwg 1284 1290 c================================================================== -
trunk/LMDZ.MARS/libf/phymars/calltherm_interface.F90
r1036 r1212 133 133 REAL zzw2(ngrid,nlayer+1) 134 134 REAL zmax(ngrid) 135 INTEGER ndt, zlmax135 INTEGER ndt,limz 136 136 137 137 !-------------------------------------------------------- … … 231 231 & ,zu,zv,zt,pq_therm,q2_therm & 232 232 & ,d_t_the,d_q_the & 233 & ,zfm_therm,zentr_therm,zdetr_therm,lmax,zmax &233 & ,zfm_therm,zentr_therm,zdetr_therm,lmax,zmax,limz & 234 234 & ,zzw2,fraca,zpopsk & 235 235 & ,zheatFlux,zheatFlux_down & … … 279 279 !**************************************************************** 280 280 281 ! Do we have thermals that are too high ?282 283 lmax(:)=nint(lmax_real(:))284 zlmax=MAXVAL(lmax(:))+2285 if (zlmax .ge. nlayer) then286 print*,'thermals have reached last layer of the model'287 print*,'this is not good !'288 endif289 290 291 281 ! Now that we have computed total entrainment and detrainment, we can 292 282 ! advect u, v, and q in thermals. (potential temperature and co2 MMR … … 304 294 ! this ensure mass flux conservation 305 295 detrmod(:,:)=0. 306 do l=1, zlmax296 do l=1,limz 307 297 do ig=1,ngrid 308 298 detrmod(ig,l)=fm_therm(ig,l)-fm_therm(ig,l+1) & … … 320 310 call thermcell_dqup(ngrid,nlayer,ptimestep & 321 311 & ,fm_therm,entr_therm,detrmod, & 322 & masse,zu,d_u_ajs,ndt, zlmax)312 & masse,zu,d_u_ajs,ndt,limz) 323 313 324 314 ! v component of wind velocity advection in thermals … … 326 316 call thermcell_dqup(ngrid,nlayer,ptimestep & 327 317 & ,fm_therm,entr_therm,detrmod, & 328 & masse,zv,d_v_ajs,ndt, zlmax)318 & masse,zv,d_v_ajs,ndt,limz) 329 319 330 320 ! non co2 tracers advection in thermals … … 336 326 call thermcell_dqup(ngrid,nlayer,ptimestep & 337 327 & ,fm_therm,entr_therm,detrmod, & 338 & masse,pq_therm(:,:,iq),d_q_ajs(:,:,iq),ndt, zlmax)328 & masse,pq_therm(:,:,iq),d_q_ajs(:,:,iq),ndt,limz) 339 329 endif 340 330 ENDDO … … 346 336 call thermcell_dqup(ngrid,nlayer,ptimestep & 347 337 & ,fm_therm,entr_therm,detrmod, & 348 & masse,q2_therm,dq2_therm,ndt, zlmax)338 & masse,q2_therm,dq2_therm,ndt,limz) 349 339 endif 350 340 … … 367 357 ! ********************************************************************** 368 358 369 do l=1, zlmax359 do l=1,limz 370 360 pdu_th(:,l)=d_u_ajs(:,l) 371 361 pdv_th(:,l)=d_v_ajs(:,l) … … 377 367 do iq=1,nq 378 368 if (iq .ne. igcm_co2) then 379 do l=1, zlmax369 do l=1,limz 380 370 pdq_th(:,l,iq)=d_q_ajs(:,l,iq) !non-co2 tracers d_q_ajs are dq/dt (kg/kg/s) 381 371 enddo 382 372 else 383 do l=1, zlmax373 do l=1,limz 384 374 pdq_th(:,l,iq)=d_q_ajs(:,l,iq)/ptimestep !co2 tracer d_q_ajs is dq (kg/kg) 385 375 enddo … … 400 390 401 391 ! update output variable for temperature. d_t_ajs is delta T in (K), pdt_th is dT/dt in (K/s) 402 do l=1, zlmax392 do l=1,limz 403 393 pdt_th(:,l)=d_t_ajs(:,l)/ptimestep 404 394 enddo -
trunk/LMDZ.MARS/libf/phymars/improvedclouds.F
r1047 r1212 476 476 & countcells*100/(nlay*ngrid), '% for microphys computation' 477 477 478 #ifndef MESOSCALE 478 479 ! IF (ngrid.ne.1) THEN ! 3D 479 480 ! call WRITEDIAGFI(ngrid,"satu","ratio saturation","",3, … … 531 532 ! & rhocloud) 532 533 ! ENDIF 534 #endif 533 535 534 536 ENDIF ! endif test_flag -
trunk/LMDZ.MARS/libf/phymars/inifis.F
r1130 r1212 116 116 ! h2o = .false. 117 117 118 119 !!! 1. ALLOCATIONS 120 !!! -------------- 121 122 ! allocate "slope_mod" arrays 123 call ini_slope_mod(ngrid) 124 125 ! allocate "comsaison_h" arrays 126 call ini_comsaison_h(ngrid) 127 128 ! allocate "surfdat_h" arrays 129 call ini_surfdat_h(ngrid) 130 131 ! allocate "comgeomfi_h" arrays 132 allocate(lati(ngrid)) 133 allocate(long(ngrid)) 134 allocate(area(ngrid)) 135 136 ! fill "comgeomfi_h" data 137 CALL SCOPY(ngrid,plon,1,long,1) 138 CALL SCOPY(ngrid,plat,1,lati,1) 139 CALL SCOPY(ngrid,parea,1,area,1) 140 totarea=SSUM(ngrid,area,1) 141 142 ! allocate "comdiurn_h" data 143 allocate(sinlat(ngrid)) 144 allocate(coslat(ngrid)) 145 allocate(sinlon(ngrid)) 146 allocate(coslon(ngrid)) 147 148 ! fill "comdiurn_h" data 149 DO ig=1,ngrid 150 sinlat(ig)=sin(plat(ig)) 151 coslat(ig)=cos(plat(ig)) 152 sinlon(ig)=sin(plon(ig)) 153 coslon(ig)=cos(plon(ig)) 154 ENDDO 155 156 pi=2.*asin(1.) ! NB: pi is a common in comcstfi.h 157 158 ! allocate "comsoil_h" arrays 159 call ini_comsoil_h(ngrid) 160 161 ! set some variables in "dimradmars_mod" 162 call ini_dimradmars_mod(ngrid,nlayer) 163 164 ! allocate arrays in "yomaer_h" 165 call ini_yomaer_h 166 167 ! allocate arrays in "yomlw_h" 168 call ini_yomlw_h(ngrid) 169 170 ! allocate arrays in "conc_mod" 171 call ini_conc_mod(ngrid,nlayer) 172 173 174 !!! 2. SETTINGS and CONSTANTS 175 !!! ------------------------- 176 118 177 rad=prad 119 178 cpp=pcpp … … 125 184 126 185 nqmx=nq 186 187 !! MESOSCALE INITIALIZATIONS 188 #ifdef MESOSCALE 189 #include "meso_inc/meso_inc_inifisini.F" 190 #endif 127 191 128 192 ! -------------------------------------------------------- … … 797 861 CLOSE(99) 798 862 799 !-----------------------------------------------------------------------800 ! Some more initialization:801 ! ------------------------802 803 ! allocate "slope_mod" arrays804 call ini_slope_mod(ngrid)805 806 ! allocate "comsaison_h" arrays807 call ini_comsaison_h(ngrid)808 809 ! allocate "surfdat_h" arrays810 call ini_surfdat_h(ngrid)811 812 ! allocate "comgeomfi_h" arrays813 allocate(lati(ngrid))814 allocate(long(ngrid))815 allocate(area(ngrid))816 817 ! fill "comgeomfi_h" data818 CALL SCOPY(ngrid,plon,1,long,1)819 CALL SCOPY(ngrid,plat,1,lati,1)820 CALL SCOPY(ngrid,parea,1,area,1)821 totarea=SSUM(ngrid,area,1)822 823 ! allocate "comdiurn_h" data824 allocate(sinlat(ngrid))825 allocate(coslat(ngrid))826 allocate(sinlon(ngrid))827 allocate(coslon(ngrid))828 829 ! fill "comdiurn_h" data830 DO ig=1,ngrid831 sinlat(ig)=sin(plat(ig))832 coslat(ig)=cos(plat(ig))833 sinlon(ig)=sin(plon(ig))834 coslon(ig)=cos(plon(ig))835 ENDDO836 837 pi=2.*asin(1.) ! NB: pi is a common in comcstfi.h838 839 ! allocate "comsoil_h" arrays840 call ini_comsoil_h(ngrid)841 842 ! set some variables in "dimradmars_mod"843 call ini_dimradmars_mod(ngrid,nlayer)844 845 ! allocate arrays in "yomaer_h"846 call ini_yomaer_h847 848 ! allocate arrays in "yomlw_h"849 call ini_yomlw_h(ngrid)850 851 ! allocate arrays in "conc_mod"852 call ini_conc_mod(ngrid,nlayer)853 854 !! MESOSCALE INITIALIZATIONS855 #ifdef MESOSCALE856 #include "meso_inc/meso_inc_inifisini.F"857 #endif858 859 863 END -
trunk/LMDZ.MARS/libf/phymars/pbl_parameters.F
r662 r1212 472 472 ENDIF ! of if calltherm 473 473 474 #ifndef MESOSCALE 474 475 call WRITEDIAGFI(ngrid,'rib_pbl', 475 476 & 'Richardson in pbl parameter','m/s',2,rib) … … 491 492 & 'flottabilité','ms',2,pz0tcomp) 492 493 call WRITEDIAGFI(ngrid,'zz1','flottabilité','m',2,zzlay(:,1)) 494 #endif 493 495 494 496 RETURN -
trunk/LMDZ.MARS/libf/phymars/physiq.F
r1208 r1212 19 19 use comsoil_h, only: inertiedat, ! soil thermal inertia 20 20 & nsoilmx ! number of subsurface layers 21 use eofdump_mod, only: eofdump22 21 use comgeomfi_h, only: long, lati, area 23 22 use comdiurn_h, only: sinlon, coslon, sinlat, coslat … … 29 28 use conc_mod, only: rnew, cpnew, mmean 30 29 use control_mod, only: iphysiq, day_step, ecritstart 31 use phyredem, only: physdem0, physdem132 33 30 #ifdef MESOSCALE 34 31 use comsoil_h, only: mlayer,layer 35 32 use surfdat_h, only: z0_default 33 #else 34 use phyredem, only: physdem0, physdem1 35 use eofdump_mod, only: eofdump 36 36 #endif 37 37 … … 1690 1690 endif ! of if (tracer) 1691 1691 1692 #ifndef MESOSCALE 1692 1693 c ----------------------------------------------------------------- 1693 1694 c WSTATS: Saving statistics … … 1903 1904 CALL eofdump(ngrid, nlayer, zu, zv, zt, rho, ps) 1904 1905 ENDIF 1906 #endif 1907 !endif of ifndef MESOSCALE 1908 1905 1909 1906 1910 … … 2278 2282 c ========================================================== 2279 2283 #endif 2284 ! of ifdef MESOSCALE 2280 2285 2281 2286 ELSE ! if(ngrid.eq.1) 2282 2287 2288 #ifndef MESOSCALE 2283 2289 write(*,'("Ls =",f11.6," tauref(",f4.0," Pa) =",f9.6)') 2284 2290 & zls*180./pi,odpref,tauref … … 2508 2514 & log(zplay(1,nlayer)/zplay(1,nlayer-1))* 2509 2515 & rnew(1,nlayer)*tmean/g 2516 #endif 2510 2517 2511 2518 END IF ! if(ngrid.ne.1) -
trunk/LMDZ.MARS/libf/phymars/surfini.F
r1207 r1212 8 8 & albedo_h2o_ice, inert_h2o_ice, albedodat, 9 9 & albedice 10 #ifndef MESOSCALE 10 11 use mod_grid_phy_lmdz, only : klon_glo ! # of physics point on full grid 11 12 use mod_phys_lmdz_para, only : is_master, gather, scatter 13 #endif 12 14 IMPLICIT NONE 13 15 c======================================================================= … … 55 57 REAL zelat,zelon 56 58 59 #ifndef MESOSCALE 57 60 INTEGER nb_ice(klon_glo,2) ! number of counts | detected ice for GCM grid 61 #endif 58 62 INTEGER latice(jjm,2),lonice (iim,2) ! number of counts | detected ice along lat & lon axis 59 63 … … 67 71 character (len=100) :: zedatafile 68 72 69 ! to handle parallel cases70 #if CPP_PARA71 logical watercaptag_glo(klon_glo)72 real dryness_glo(klon_glo)73 real lati_glo(klon_glo)74 real long_glo(klon_glo)75 #else76 logical watercaptag_glo(ngrid)77 real dryness_glo(ngrid)78 real lati_glo(ngrid)79 real long_glo(ngrid)80 #endif81 82 c83 c=======================================================================84 ! Initialize watercaptag (default is false)85 watercaptag_glo(:)=.false.86 87 c water ice outliers88 c ------------------------------------------89 90 IF ((water) .and. (caps)) THEN91 92 c Perennial H20 north cap defined by watercaptag=true (allows surface to be93 c hollowed by sublimation in vdifc).94 95 c We might not want albedodat to be modified because it is used to write96 c restart files. Instead, albedo is directly modified when needed (i.e.97 c if we have watercaptag and no co2 ice), below and in albedocaps.F9098 99 c "Dryness coefficient" controlling the evaporation and100 c sublimation from the ground water ice (close to 1)101 c HERE, the goal is to correct for the fact102 c that the simulated permanent water ice polar caps103 c is larger than the actual cap and the atmospheric104 c opacity not always realistic.105 106 alternate = 0107 108 if (ngrid .ne. 1) then109 watercaptag(:) = .false.110 longwatercaptag(:) = .false.111 endif112 113 write(*,*) "surfini: Ice dryness ?"114 icedryness=1. ! default value115 call getin("icedryness",icedryness)116 write(*,*) "surfini: icedryness = ",icedryness117 dryness (:) = icedryness118 119 120 73 #ifdef MESOSCALE 121 74 … … 138 91 watercaptag(ig) = .false. 139 92 dryness(ig) = 1. 140 endif 93 endif 94 95 enddo 96 #endif 97 ! problem with nested precompiling flags 98 99 #ifndef MESOSCALE 100 ! to handle parallel cases 101 #if CPP_PARA 102 logical watercaptag_glo(klon_glo) 103 real dryness_glo(klon_glo) 104 real lati_glo(klon_glo) 105 real long_glo(klon_glo) 106 #else 107 logical watercaptag_glo(ngrid) 108 real dryness_glo(ngrid) 109 real lati_glo(ngrid) 110 real long_glo(ngrid) 111 #endif 112 #endif 113 114 #ifndef MESOSCALE 115 116 c 117 c======================================================================= 118 ! Initialize watercaptag (default is false) 119 watercaptag_glo(:)=.false. 120 121 c water ice outliers 122 c ------------------------------------------ 123 124 IF ((water) .and. (caps)) THEN 125 126 c Perennial H20 north cap defined by watercaptag=true (allows surface to be 127 c hollowed by sublimation in vdifc). 128 129 c We might not want albedodat to be modified because it is used to write 130 c restart files. Instead, albedo is directly modified when needed (i.e. 131 c if we have watercaptag and no co2 ice), below and in albedocaps.F90 132 133 c "Dryness coefficient" controlling the evaporation and 134 c sublimation from the ground water ice (close to 1) 135 c HERE, the goal is to correct for the fact 136 c that the simulated permanent water ice polar caps 137 c is larger than the actual cap and the atmospheric 138 c opacity not always realistic. 139 140 alternate = 0 141 141 142 enddo 143 #else 144 142 if (ngrid .ne. 1) then 143 watercaptag(:) = .false. 144 longwatercaptag(:) = .false. 145 endif 146 147 write(*,*) "surfini: Ice dryness ?" 148 icedryness=1. ! default value 149 call getin("icedryness",icedryness) 150 write(*,*) "surfini: icedryness = ",icedryness 151 dryness (:) = icedryness 152 145 153 ! To be able to run in parallel, we work on the full grid 146 154 ! and dispatch results afterwards … … 453 461 call scatter(watercaptag_glo,watercaptag) 454 462 455 #endif456 463 ! end of #else of #ifdef MESOSCALE 457 464 ENDIF ! (caps & water) 458 465 #endif 459 466 460 467 c =============================================================== -
trunk/LMDZ.MARS/libf/phymars/thermcell_dqup.F90
r1033 r1212 25 25 26 26 subroutine thermcell_dqup(ngrid,nlayer,ptimestep,fm,entr,detr, & 27 & masse0,q_therm,dq_therm,ndt, zlmax)27 & masse0,q_therm,dq_therm,ndt,limz) 28 28 implicit none 29 29 … … 38 38 REAL, INTENT(IN) :: masse0(ngrid,nlayer) ! mass of cells 39 39 INTEGER, INTENT(IN) :: ndt ! number of subtimesteps 40 INTEGER, INTENT(IN) :: zlmax! index of maximum layer40 INTEGER, INTENT(IN) :: limz ! index of maximum layer 41 41 42 42 ! ============================ OUTPUTS =========================== … … 70 70 enddo 71 71 72 do k=2, zlmax72 do k=2,limz 73 73 do ig=1,ngrid 74 74 if ((fm(ig,k+1)+detr(ig,k))*ptimestep.gt. & … … 82 82 enddo 83 83 84 do k=1, zlmax84 do k=1,limz 85 85 q(:,k)=q(:,k)+ & 86 86 & (detr(:,k)*qa(:,k)-entr(:,k)*q(:,k) & … … 93 93 ! ====== Derivative ============================================== 94 94 95 do k=1, zlmax95 do k=1,limz 96 96 dq_therm(:,k)=(q(:,k)-q_therm(:,k))/ptimestep 97 97 enddo -
trunk/LMDZ.MARS/libf/phymars/thermcell_main_mars.F90
r1130 r1212 37 37 & ,pu,pv,pt,pq,pq2 & 38 38 & ,pdtadj,pdqadj & 39 & ,fm,entr,detr,lmax,zmax &39 & ,fm,entr,detr,lmax,zmax,limz & 40 40 & ,zw2,fraca & 41 41 & ,zpopsk,heatFlux,heatFlux_down & … … 43 43 44 44 USE comtherm_h 45 #ifndef MESOSCALE 45 46 use planetwide_mod, only: planetwide_maxval 47 #endif 46 48 47 49 IMPLICIT NONE … … 85 87 REAL, INTENT(OUT) :: heatFlux_down(ngrid,nlayer) ! interface heat flux from downdraft 86 88 89 INTEGER, INTENT(OUT) :: limz ! limit vertical index for integration 90 87 91 ! ============== LOCAL ================ 88 92 REAL :: pdqadj(ngrid,nlayer,nq) !tracer change from thermals dq/dt, only for CO2 (the rest can be advected outside of the loop) … … 153 157 REAL denom(ngrid) 154 158 REAL zlevinter(ngrid) 155 INTEGER zlmax156 159 157 160 ! ========================================= … … 765 768 ! =========================================================================== 766 769 767 !zlmax=MAXVAL(lmax(:))+2 ! OK, but in serial mode only; use planet 768 call planetwide_maxval(lmax,zlmax) 769 zlmax=zlmax+2 770 #ifdef MESOSCALE 771 limz= nlayer-5 ! the most important is limz > max(PBLheight)+2 772 ! nlayer-5 is more than enough! 773 #else 774 call planetwide_maxval(lmax,limz) 775 limz=limz+2 776 #endif 770 777 771 if ( zlmax.ge. nlayer) then778 if (limz .ge. nlayer) then 772 779 print*,'thermals have reached last layer of the model' 773 780 print*,'this is not good !' 774 zlmax=nlayer781 limz=nlayer 775 782 endif 776 783 ! alim_star_clos is the source profile used for closure. It consists of the … … 794 801 795 802 ! llmax is the index of the heighest thermal in the simulation domain 796 !llmax=1 797 !do ig=1,ngrid 798 ! if (lalim(ig)>llmax) llmax=lalim(ig) 799 !enddo 803 #ifdef MESOSCALE 804 !! AS: THIS IS PARALLEL SENSITIVE!!!!! to be corrected? 805 llmax=1 806 do ig=1,ngrid 807 if (lalim(ig)>llmax) llmax=lalim(ig) 808 enddo 809 #else 800 810 call planetwide_maxval(lalim,llmax) 811 #endif 801 812 802 813 ! Integral of a**2/(rho* Delta z), see equation 13 of appendix 4.2 in paper … … 856 867 !------------------------------------------------------------------------- 857 868 858 do l=1, zlmax869 do l=1,limz 859 870 entr(:,l)=f(:)*(entr_star(:,l)+alim_star(:,l)) 860 871 detr(:,l)=f(:)*detr_star(:,l) … … 863 874 ! Reconstruct the updraft mass flux everywhere 864 875 865 do l=1, zlmax876 do l=1,limz 866 877 do ig=1,ngrid 867 878 if (l.lt.lmax(ig)) then … … 890 901 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 891 902 892 do l=1, zlmax!loop on the levels903 do l=1,limz !loop on the levels 893 904 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 894 905 … … 992 1003 !----------------------------------------------------------------------- 993 1004 994 do l=1, zlmax1005 do l=1,limz 995 1006 do ig=1,ngrid 996 1007 eee0=entr(ig,l) … … 1140 1151 !------------------------------------------------------------------ 1141 1152 fraca(:,:)=0. 1142 do l=2, zlmax1153 do l=2,limz 1143 1154 do ig=1,ngrid 1144 1155 if (zw2(ig,l).gt.1.e-10) then … … 1161 1172 if (igcm_co2.ne.0) then 1162 1173 detrmod(:,:)=0. 1163 do k=1, zlmax1174 do k=1,limz 1164 1175 do ig=1,ngrid 1165 1176 detrmod(ig,k)=fm(ig,k)-fm(ig,k+1) & … … 1174 1185 call thermcell_dqup(ngrid,nlayer,ptimestep & 1175 1186 & ,fm,entr,detrmod, & 1176 & masse,pq(:,:,igcm_co2),pdqadj(:,:,igcm_co2),ndt, zlmax)1187 & masse,pq(:,:,igcm_co2),pdqadj(:,:,igcm_co2),ndt,limz) 1177 1188 1178 1189 ! Compute the ratio between theta and theta_m 1179 1190 1180 do l=1, zlmax1191 do l=1,limz 1181 1192 do ig=1,ngrid 1182 1193 ratiom(ig,l)=1./(A*(pq(ig,l,igcm_co2)+pdqadj(ig,l,igcm_co2)*ptimestep)+B) … … 1191 1202 1192 1203 pdtadj(:,:)=0. 1193 do l=1, zlmax1204 do l=1,limz 1194 1205 do ig=1,ngrid 1195 1206 pdtadj(ig,l)=(zdthladj(ig,l)+zdthladj_down(ig,l))*zpopsk(ig,l)*ratiom(ig,l) … … 1225 1236 buoyancyEst(:,:)=0. 1226 1237 heatFlux_down(:,:)=0. 1227 do l=1, zlmax1238 do l=1,limz 1228 1239 do ig=1,ngrid 1229 1240 heatFlux(ig,l)=fm(ig,l)*(teta_th_int(ig,l)-teta_env_int(ig,l))/(rhobarz(ig,l))
Note: See TracChangeset
for help on using the changeset viewer.