source: LMDZ6/trunk/libf/dyn3d_common/pression.F90 @ 3912

Last change on this file since 3912 was 2293, checked in by dcugnet, 9 years ago

Initial states creation routines have been reorganized and simplified.
As far as possible, dynamics and physics related routines have been
separated.
Some routines have been converted to fortran 90 and repeated codes sections
have been "factorized".
Array/vector arguments have become implicit in some routines to avoid usage
of "dimensions.h" ; possible for routines with explicit interfaces and if
iim and jjm can be deduced from arguments sizes.

  • dynlonlat_phylonlat/ce0l.F90 calls now phylmd/etat0phys_netcdf.F90 and dyn3d/etat0dyn_netcdf.F90 that replace phylmd/etat0_netcdf.F90. start.nc and startphy.nc creations are now independant.
  • startvar.F90 has been suppressed ; corresponding operations have been simplified and embedded in etat0*_netcdf.F90 routines as internal procedures.
  • Routines converted to fortran 90 and "factorized":
    • dyn3d_common/conf_dat_m.F90 (replaces dyn3d_common/conf_dat2d.F

and dyn3d_common/conf_dat3d.F)

  • dyn3d/dynredem.F90 (replaces dyn3d/dynredem.F)
  • dyn3d/dynetat0.F90 (replaces dyn3d/dynetat0.F)
  • phylmd/grid_noro_m.F90 (replaces dyn3d_common/grid_noro.F)
  • dynlonlat_phylonlat/grid_atob_m.F90 (replaces dyn3d_common/grid_atob.F)
  • dyn3d_common/caldyn0.F90 (replaces dyn3d_common/caldyn0.F)
  • dyn3d_common/covcont.F90 (replaces dyn3d_common/covcont.F)
  • dyn3d_common/pression.F90 (replaces dyn3d_common/pression.F)
  • phylmd/phyredem.F90 and phylmd/limit_netcdf.F90 have been slightly factorized.

TO DO:

  • little fix needed in grid_noro_m.F90 ; untouched yet to ensure results are exactly the same as before. Unsmoothed orography is used to compute "zphi", but smoothed (should be unsmoothed) one is used at poles.
  • add the dyn3dmem versions of dynredem.F90 and dynetat0.F90 (dynredem_loc.F90 and dynetat0_loc.F90, untested yet).
  • test compilation in parallel mode for a single processor.
File size: 1.2 KB
Line 
1SUBROUTINE pression( ngrid, ap, bp, ps, p )
2!
3!-------------------------------------------------------------------------------
4! Authors: P. Le Van , Fr.Hourdin
5!-------------------------------------------------------------------------------
6! Purpose: Compute pressure p(l) at different levels from l = 1 (ground level)
7!          to l = llm +1. Those levels correspond to the llm layers interfaces,
8!          with p(ij,llm+1) = 0. and  p(ij,1) = ps(ij)  .   
9!-------------------------------------------------------------------------------
10  IMPLICIT NONE
11  include "dimensions.h"
12  include "paramet.h"
13!===============================================================================
14! Arguments:
15  INTEGER, INTENT(IN)  :: ngrid                 !--- NUMBER OF GRID POINTS
16  REAL,    INTENT(IN)  :: ap(llmp1), bp(llmp1)  !--- HYBRID COEFFICIENTS
17  REAL,    INTENT(IN)  :: ps(ngrid)             !--- SURFACE PRESSURE
18  REAL,    INTENT(OUT) :: p(ngrid,llmp1)        !--- 3D PRESSURE FIELD
19!===============================================================================
20! Local variables:
21  INTEGER :: l
22!===============================================================================
23  DO l=1,llmp1;  p(:,l) = ap(l) + bp(l) * ps(:);  END DO
24
25END SUBROUTINE pression
26
27
Note: See TracBrowser for help on using the repository browser.