source: trunk/LMDZ.MARS/libf/dyn3d/interp_vert.F @ 937

Last change on this file since 937 was 38, checked in by emillour, 14 years ago

Ajout du modè Martien (mon LMDZ.MARS.BETA, du 28/01/2011) dans le rértoire mars, pour pouvoir suivre plus facilement les modifs.
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.