/[lmdze]/trunk/libf/dyn3d/etat0.f90
ViewVC logotype

Diff of /trunk/libf/dyn3d/etat0.f90

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 30 by guez, Thu Apr 1 09:07:28 2010 UTC revision 48 by guez, Tue Jul 19 12:54:20 2011 UTC
# Line 20  contains Line 20  contains
20      ! This subroutine creates "mask".      ! This subroutine creates "mask".
21    
22      use caldyn0_m, only: caldyn0      use caldyn0_m, only: caldyn0
23      use comconst, only: dtvr, daysec, cpp, kappa, pi      use comconst, only: dtvr, daysec, cpp, kappa
24      use comgeom, only: rlatu, rlonv, rlonu, rlatv, aire_2d, apoln, apols, &      use comgeom, only: rlatu, rlonv, rlonu, rlatv, aire_2d, apoln, apols, &
25           cu_2d, cv_2d           cu_2d, cv_2d
26      use comvert, only: ap, bp, preff, pa      use comvert, only: ap, bp, preff, pa
# Line 31  contains Line 31  contains
31      use dynredem0_m, only: dynredem0      use dynredem0_m, only: dynredem0
32      use dynredem1_m, only: dynredem1      use dynredem1_m, only: dynredem1
33      use exner_hyb_m, only: exner_hyb      use exner_hyb_m, only: exner_hyb
34        USE flincom, only: flinclo, flinopen_nozoom, flininfo
35        use geopot_m, only: geopot
36      use grid_atob, only: grille_m      use grid_atob, only: grille_m
37      use grid_change, only: init_dyn_phy, dyn_phy      use grid_change, only: init_dyn_phy, dyn_phy
38        use histcom, only: histclo
39      use indicesol, only: is_oce, is_sic, is_ter, is_lic, epsfra      use indicesol, only: is_oce, is_sic, is_ter, is_lic, epsfra
40      use iniadvtrac_m, only: iniadvtrac      use iniadvtrac_m, only: iniadvtrac
41      use inidissip_m, only: inidissip      use inidissip_m, only: inidissip
42      use inigeom_m, only: inigeom      use inigeom_m, only: inigeom
43      USE flincom, only: flinget, flinclo, flinopen_nozoom, flininfo      use netcdf, only: nf90_nowrite
44      use histcom, only: histclo      use netcdf95, only: nf95_open, nf95_close, nf95_get_var, nf95_inq_varid
45        use nr_util, only: pi
46      use paramet_m, only: ip1jm, ip1jmp1      use paramet_m, only: ip1jm, ip1jmp1
47      use phyredem_m, only: phyredem      use phyredem_m, only: phyredem
48      use pressure_var, only: pls, p3d      use pressure_var, only: pls, p3d
# Line 47  contains Line 51  contains
51      use regr_pr_o3_m, only: regr_pr_o3      use regr_pr_o3_m, only: regr_pr_o3
52      use serre, only: alphax      use serre, only: alphax
53      USE start_init_orog_m, only: start_init_orog, mask, phis      USE start_init_orog_m, only: start_init_orog, mask, phis
54      use start_init_phys_m, only: qsol_2d      use start_init_phys_m, only: start_init_phys
55      use startdyn, only: start_inter_3d, start_init_dyn      use startdyn, only: start_inter_3d, start_init_dyn
56      use temps, only: itau_phy, annee_ref, day_ref      use temps, only: itau_phy, annee_ref, day_ref
57    
# Line 80  contains Line 84  contains
84      REAL rugmer(klon)      REAL rugmer(klon)
85      real, dimension(iim + 1, jjm + 1):: relief, zstd_2d, zsig_2d, zgam_2d      real, dimension(iim + 1, jjm + 1):: relief, zstd_2d, zsig_2d, zgam_2d
86      real, dimension(iim + 1, jjm + 1):: zthe_2d, zpic_2d, zval_2d      real, dimension(iim + 1, jjm + 1):: zthe_2d, zpic_2d, zval_2d
87      real, dimension(iim + 1, jjm + 1):: tsol_2d, psol      real, dimension(iim + 1, jjm + 1):: tsol_2d, qsol_2d, psol
88      REAL zmea(klon), zstd(klon)      REAL zmea(klon), zstd(klon)
89      REAL zsig(klon), zgam(klon)      REAL zsig(klon), zgam(klon)
90      REAL zthe(klon)      REAL zthe(klon)
# Line 90  contains Line 94  contains
94      real clwcon(klon, llm), rnebcon(klon, llm), ratqs(klon, llm)      real clwcon(klon, llm), rnebcon(klon, llm), ratqs(klon, llm)
95      ! déclarations pour lecture glace de mer      ! déclarations pour lecture glace de mer
96      INTEGER iml_lic, jml_lic, llm_tmp, ttm_tmp      INTEGER iml_lic, jml_lic, llm_tmp, ttm_tmp
97      INTEGER itaul(1), fid      INTEGER itaul(1), fid, ncid, varid
98      REAL lev(1), date      REAL lev(1), date
99      REAL, ALLOCATABLE:: lon_lic(:, :), lat_lic(:, :)      REAL, ALLOCATABLE:: lon_lic(:, :), lat_lic(:, :)
100      REAL, ALLOCATABLE:: dlon_lic(:), dlat_lic(:)      REAL, ALLOCATABLE:: dlon_lic(:), dlat_lic(:)
# Line 113  contains Line 117  contains
117    
118      print *, "Call sequence information: etat0"      print *, "Call sequence information: etat0"
119    
     ! Construct a grid:  
   
120      dtvr = daysec / real(day_step)      dtvr = daysec / real(day_step)
121      print *, 'dtvr = ', dtvr      print *, 'dtvr = ', dtvr
122    
123        ! Construct a grid:
124    
125      pa = 5e4      pa = 5e4
126      CALL iniconst      CALL iniconst
127      CALL inigeom      CALL inigeom
# Line 139  contains Line 143  contains
143      zmasq = pack(mask, dyn_phy)      zmasq = pack(mask, dyn_phy)
144      PRINT *, 'Masque construit'      PRINT *, 'Masque construit'
145    
146      CALL start_init_dyn(tsol_2d, psol) ! also compute "qsol_2d"      call start_init_phys(tsol_2d, qsol_2d)
147        CALL start_init_dyn(tsol_2d, psol)
148    
149      ! Compute pressure on intermediate levels:      ! Compute pressure on intermediate levels:
150      forall(l = 1: llm + 1) p3d(:, :, l) = ap(l) + bp(l) * psol      forall(l = 1: llm + 1) p3d(:, :, l) = ap(l) + bp(l) * psol
151      CALL exner_hyb(psol, p3d, pks, pk)      CALL exner_hyb(psol, p3d, pks, pk)
152      IF (MINVAL(pk) == MAXVAL(pk)) stop '"pk" should not be constant'      IF (MINVAL(pk) == MAXVAL(pk)) stop '"pk" should not be constant'
153    
154      pls(:, :, :) = preff * (pk(:, :, :) / cpp)**(1. / kappa)      pls = preff * (pk / cpp)**(1. / kappa)
155      PRINT *, "minval(pls(:, :, :)) = ", minval(pls(:, :, :))      PRINT *, "minval(pls) = ", minval(pls)
156      print *, "maxval(pls(:, :, :)) = ", maxval(pls(:, :, :))      print *, "maxval(pls) = ", maxval(pls)
157    
158      call start_inter_3d('U', rlonv, rlatv, pls, uvent)      call start_inter_3d('U', rlonv, rlatv, pls, uvent)
159      forall (l = 1: llm) uvent(:iim, :, l) = uvent(:iim, :, l) * cu_2d(:iim, :)      forall (l = 1: llm) uvent(:iim, :, l) = uvent(:iim, :, l) * cu_2d(:iim, :)
# Line 159  contains Line 164  contains
164      vvent(iim + 1, :, :) = vvent(1, :, :)      vvent(iim + 1, :, :) = vvent(1, :, :)
165    
166      call start_inter_3d('TEMP', rlonu, rlatv, pls, t3d)      call start_inter_3d('TEMP', rlonu, rlatv, pls, t3d)
167      PRINT *,  'minval(t3d(:, :, :)) = ', minval(t3d(:, :, :))      PRINT *,  'minval(t3d) = ', minval(t3d)
168      print *, "maxval(t3d(:, :, :)) = ", maxval(t3d(:, :, :))      print *, "maxval(t3d) = ", maxval(t3d)
169    
170      tpot(:iim, :, :) = t3d(:iim, :, :) * cpp / pk(:iim, :, :)      tpot(:iim, :, :) = t3d(:iim, :, :) * cpp / pk(:iim, :, :)
171      tpot(iim + 1, :, :) = tpot(1, :, :)      tpot(iim + 1, :, :) = tpot(1, :, :)
# Line 171  contains Line 176  contains
176      ENDDO      ENDDO
177    
178      ! Calcul de l'humidité à saturation :      ! Calcul de l'humidité à saturation :
179      qsat(:, :, :) = q_sat(t3d, pls)      qsat = q_sat(t3d, pls)
180      PRINT *, "minval(qsat(:, :, :)) = ", minval(qsat(:, :, :))      PRINT *, "minval(qsat) = ", minval(qsat)
181      print *, "maxval(qsat(:, :, :)) = ", maxval(qsat(:, :, :))      print *, "maxval(qsat) = ", maxval(qsat)
182      IF (MINVAL(qsat) == MAXVAL(qsat)) stop '"qsat" should not be constant'      IF (MINVAL(qsat) == MAXVAL(qsat)) stop '"qsat" should not be constant'
183    
184      ! Water vapor:      ! Water vapor:
# Line 221  contains Line 226  contains
226      ALLOCATE(dlon_lic(iml_lic))      ALLOCATE(dlon_lic(iml_lic))
227      ALLOCATE(dlat_lic(jml_lic))      ALLOCATE(dlat_lic(jml_lic))
228      ALLOCATE(fraclic(iml_lic, jml_lic))      ALLOCATE(fraclic(iml_lic, jml_lic))
229      CALL flinopen_nozoom("landiceref.nc", iml_lic, jml_lic, &      CALL flinopen_nozoom(iml_lic, jml_lic, &
230           llm_tmp, lon_lic, lat_lic, lev, ttm_tmp, itaul, date, trash,  &           llm_tmp, lon_lic, lat_lic, lev, ttm_tmp, itaul, date, trash,  &
231           fid)           fid)
232      CALL flinget(fid, 'landice', iml_lic, jml_lic, llm_tmp, ttm_tmp &      call nf95_open("landiceref.nc", nf90_nowrite, ncid)
233           , 1, 1, fraclic)      call nf95_inq_varid(ncid, 'landice', varid)
234        call nf95_get_var(ncid, varid, fraclic)
235        call nf95_close(ncid)
236      CALL flinclo(fid)      CALL flinclo(fid)
237    
238      ! Interpolation sur la grille T du modèle :      ! Interpolation sur la grille T du modèle :

Legend:
Removed from v.30  
changed lines
  Added in v.48

  ViewVC Help
Powered by ViewVC 1.1.21