source: trunk/LMDZ.MARS/libf/dynphy_lonlat/phymars/interp_vert.F @ 2322

Last change on this file since 2322 was 1403, checked in by emillour, 10 years ago

All models: Reorganizing the physics/dynamics interface.

  • makelmdz and makelmdz_fcm scripts adapted to handle the new directory settings
  • misc: (replaces what was the "bibio" directory)
  • Should only contain extremely generic (and non physics or dynamics-specific) routines
  • Therefore moved initdynav.F90, initfluxsto.F, inithist.F, writedynav.F90, write_field.F90, writehist.F to "dyn3d_common"
  • dynlonlat_phylonlat: (new interface directory)
  • This directory contains routines relevent to physics/dynamics grid interactions, e.g. routines gr_dyn_fi or gr_fi_dyn and calfis
  • Moreover the dynlonlat_phylonlat contains directories "phy*" corresponding to each physics package "phy*" to be used. These subdirectories should only contain specific interfaces (e.g. iniphysiq) or main programs (e.g. newstart)
  • phy*/dyn1d: this subdirectory contains the 1D model using physics from phy*

EM

File size: 2.0 KB
Line 
1c******************************************************
2      SUBROUTINE   interp_vert(varo,varn,lmo,lmn,apso,bpso,
3     &             aps,bps,ps,Nhoriz)
4c
5c interpolation lineaire pour passer
6c a une nouvelle discretisation verticale pour
7c les variables de GCM
8c Francois Forget (01/1995)
9c Modif pour coordonnees hybrides FF (03/2003)
10c**********************************************************
11
12      IMPLICIT NONE
13
14c   Declarations:
15c ==============
16c
17c  ARGUMENTS
18c  """""""""
19
20       integer lmo ! dimensions ancienne couches (input)
21       integer lmn ! dimensions nouvelle couches (input)
22
23       real apso(lmo),bpso(lmo)! anciennes coord hybrides midlayer (input)
24       real aps(lmn), bps(lmn)! nouvelles coord hybrides (midlayer) (input)
25
26       integer Nhoriz ! nombre de point horizontale (input)
27       real ps(nhoriz) !pression de surface (input)
28
29       real varo(Nhoriz,lmo) ! var dans l''ancienne grille (input)
30       real varn(Nhoriz,lmn) ! var dans la nouvelle grille (output)
31
32c Autres variables
33c """"""""""""""""
34       integer n, ln ,lo
35       real coef
36       REAL sigmo(lmo) ! niveau sigma des variables dans les anciennes coord
37       REAL sigmn(lmn) ! niveau sigma des variables dans les nouvelles coord
38
39c run
40c ====
41
42      do n=1,Nhoriz
43        do ln=1,lmn
44            sigmn(ln)=aps(ln)/ps(n)+bps(ln)
45        end do
46        do lo=1,lmo
47            sigmo(lo)=apso(lo)/ps(n)+bpso(lo)
48        end do
49
50        do ln=1,lmn
51           if (sigmn(ln).ge.sigmo(1))then
52             varn(n,ln) =  varo(n,1) 
53           else if (sigmn(ln).le.sigmo(lmo)) then
54             varn(n,ln) =  varo(n,lmo)
55           else
56              do lo =1,lmo-1
57                if ( (sigmn(ln).le.sigmo(lo)).and.
58     &             (sigmn(ln).gt.sigmo(lo+1)) )then
59                  coef = (sigmn(ln)-sigmo(lo))/(sigmo(lo+1)-sigmo(lo))
60                   varn(n,ln)=varo(n,lo) +coef*(varo(n,lo+1)-varo(n,lo))
61                end if
62              end do           
63           end if
64         end do
65
66      end do
67
68
69      return
70      end
Note: See TracBrowser for help on using the repository browser.