Changeset 2143 for trunk/LMDZ.GENERIC/libf/phystd/thermcell_closure.F90
- Timestamp:
- Jun 20, 2019, 4:11:54 PM (5 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LMDZ.GENERIC/libf/phystd/thermcell_closure.F90
r2127 r2143 3 3 ! 4 4 SUBROUTINE thermcell_closure(ngrid,nlay,ptimestep,rho,zlev, & 5 lmax,alim_star,zmax,wmax,f) 5 lmax,alim_star,zmin,zmax,wmax,f) 6 6 7 7 8 !=============================================================================== … … 13 14 ! 2. On ne garde qu'une version des couples wmax,zmax et wmax_sec,zmax_sec 14 15 ! l'idee etant que le choix se fasse a l'appel de thermcell_closure 15 ! 3. Vectorisation en mettant les boucles en l l'exterieur avec des if16 ! 3. Vectorisation en mettant les boucles en l a l'exterieur avec des if 16 17 !=============================================================================== 17 18 … … 35 36 REAL zlev(ngrid,nlay) 36 37 REAL alim_star(ngrid,nlay) 38 REAL zmin(ngrid) 37 39 REAL zmax(ngrid) 38 40 REAL wmax(ngrid) … … 51 53 REAL alim_star_tot(ngrid) 52 54 REAL alim_star2(ngrid) 53 REAL zdenom(ngrid)55 REAL plume_height(ngrid) 54 56 55 57 !=============================================================================== … … 64 66 llmax = 1 65 67 68 DO ig=1,ngrid 69 plume_height(ig) = zmax(ig) - zmin(ig) 70 ENDDO 71 66 72 !=============================================================================== 67 73 ! Closure … … 73 79 74 80 DO ig=1,ngrid 75 IF (lmax(ig) .GT.llmax) THEN81 IF (lmax(ig) > llmax) THEN 76 82 llmax = lmax(ig) 77 83 ENDIF … … 86 92 IF (l < lmax(ig)) THEN 87 93 alim_star2(ig) = alim_star2(ig) + alim_star(ig,l)**2 & 88 & / (rho(ig,l) * (zlev(ig,l+1) - zlev(ig,l))) 94 & / (rho(ig,l) * (zlev(ig,l+1) - zlev(ig,l))) ! => intergration is ok because alim_star = a* dz 89 95 alim_star_tot(ig) = alim_star_tot(ig) + alim_star(ig,l) 90 96 ENDIF … … 93 99 94 100 DO ig=1,ngrid 95 IF ( alim_star2(ig).GT.0.) THEN96 f(ig) = wmax(ig) * alim_star_tot(ig) & 97 & / ( max(1.,zmax(ig)) * r_aspect_thermals * alim_star2(ig))101 IF ((alim_star2(ig) > 0.).and.(plume_height(ig) > 0.)) THEN 102 f(ig) = wmax(ig) * alim_star_tot(ig) & ! => normalization is ok 103 & / (plume_height(ig) * r_aspect_thermals * alim_star2(ig)) 98 104 ELSE 99 105 f(ig) = 0. … … 101 107 ENDDO 102 108 109 print *, 'A*2 ', alim_star2(1) 110 print *, 'A* ', alim_star_tot(1) 111 print *, 'H ', plume_height(1) 112 print *, 'wmax', wmax(1) 103 113 104 114 RETURN
Note: See TracChangeset
for help on using the changeset viewer.