/[lmdze]/trunk/dyn3d/caldyn.f
ViewVC logotype

Annotation of /trunk/dyn3d/caldyn.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 33 - (hide annotations)
Fri Apr 9 10:56:14 2010 UTC (14 years, 1 month ago) by guez
Original Path: trunk/libf/dyn3d/caldyn.f90
File size: 2756 byte(s)
Test namelist input in procedure "conf_gcm" rather than program unit
"gcm".

Compute "time" in procedure "sortvarc" rather than "leapfrog".

Rewrote "leapfrog" with a single loop on "itau" instead of two nested
loops on number of periodic matsuno-leapfrog cycles and leapfrog
iterations.

1 guez 25 SUBROUTINE caldyn(itau, ucov, vcov, teta, ps, masse, pk, pkf, phis, phi, &
2 guez 33 conser, du, dv, dteta, dp, w, pbaru, pbarv, time_0)
3 guez 3
4 guez 25 ! From dyn3d/caldyn.F, v 1.1.1.1 2004/05/19 12:53:06
5     ! Auteur : P. Le Van
6     ! Objet:
7     ! Calcul des tendances dynamiques.
8 guez 3
9 guez 33 USE dimens_m, ONLY : iim, llm
10     USE paramet_m, ONLY : iip1, ip1jm, ip1jmp1, jjp1, llmp1
11     USE comvert, ONLY : ap, bp
12     USE comgeom, ONLY : airesurg, constang
13 guez 25 USE pression_m, ONLY : pression
14 guez 33 use sortvarc_m, only: sortvarc
15 guez 3
16 guez 25 IMPLICIT NONE
17 guez 3
18 guez 25 ! Arguments:
19 guez 3
20 guez 25 LOGICAL, INTENT (IN):: conser
21     INTEGER, INTENT (IN):: itau
22     REAL vcov(ip1jm, llm), ucov(ip1jmp1, llm), teta(ip1jmp1, llm)
23     REAL ps(ip1jmp1), phis(ip1jmp1)
24     REAL, INTENT (IN) :: pk(iip1, jjp1, llm)
25     REAL pkf(ip1jmp1, llm)
26     REAL vcont(ip1jm, llm), ucont(ip1jmp1, llm)
27     REAL phi(ip1jmp1, llm), masse(ip1jmp1, llm)
28     REAL dv(ip1jm, llm), du(ip1jmp1, llm)
29     REAL dteta(ip1jmp1, llm), dp(ip1jmp1)
30     REAL pbaru(ip1jmp1, llm), pbarv(ip1jm, llm)
31 guez 33 REAL, intent(in):: time_0
32 guez 3
33 guez 25 ! Local:
34 guez 3
35 guez 25 REAL ang(ip1jmp1, llm), p(ip1jmp1, llmp1)
36     REAL massebx(ip1jmp1, llm), masseby(ip1jm, llm), psexbarxy(ip1jm)
37     REAL vorpot(ip1jm, llm)
38     REAL w(ip1jmp1, llm), ecin(ip1jmp1, llm), convm(ip1jmp1, llm)
39     REAL bern(ip1jmp1, llm)
40     REAL massebxy(ip1jm, llm)
41 guez 3
42 guez 25 INTEGER ij, l
43 guez 3
44 guez 25 !-----------------------------------------------------------------------
45     ! Calcul des tendances dynamiques:
46 guez 3
47 guez 25 CALL covcont(llm, ucov, vcov, ucont, vcont)
48     CALL pression(ip1jmp1, ap, bp, ps, p)
49     CALL psextbar(ps, psexbarxy)
50     CALL massdair(p, masse)
51     CALL massbar(masse, massebx, masseby)
52     CALL massbarxy(masse, massebxy)
53     CALL flumass(massebx, masseby, vcont, ucont, pbaru, pbarv)
54     CALL dteta1(teta, pbaru, pbarv, dteta)
55     CALL convmas(pbaru, pbarv, convm)
56 guez 3
57 guez 25 DO ij = 1, ip1jmp1
58     dp(ij) = convm(ij, 1)/airesurg(ij)
59     END DO
60 guez 3
61 guez 25 CALL vitvert(convm, w)
62     CALL tourpot(vcov, ucov, massebxy, vorpot)
63     CALL dudv1(vorpot, pbaru, pbarv, du, dv)
64     CALL enercin(vcov, ucov, vcont, ucont, ecin)
65     CALL bernoui(ip1jmp1, llm, phi, ecin, bern)
66     CALL dudv2(teta, pkf, bern, du, dv)
67 guez 3
68    
69 guez 25 DO l = 1, llm
70     DO ij = 1, ip1jmp1
71     ang(ij, l) = ucov(ij, l) + constang(ij)
72     END DO
73     END DO
74 guez 3
75    
76 guez 25 CALL advect(ang, vcov, teta, w, massebx, masseby, du, dv, dteta, conser)
77 guez 3
78 guez 25 ! WARNING probleme de peridocite de dv sur les PC/linux. Pb d'arrondi
79     ! probablement. Observe sur le code compile avec pgf90 3.0-1
80     DO l = 1, llm
81     DO ij = 1, ip1jm, iip1
82     IF (dv(ij, l)/=dv(ij+iim, l)) THEN
83     dv(ij+iim, l) = dv(ij, l)
84     END IF
85     END DO
86     END DO
87 guez 3
88 guez 25 ! Sorties eventuelles des variables de controle:
89 guez 32 IF (conser) CALL sortvarc(itau, ucov, teta, ps, masse, pk, phis, vorpot, &
90 guez 33 phi, bern, dp, time_0)
91 guez 3
92 guez 25 END SUBROUTINE caldyn

  ViewVC Help
Powered by ViewVC 1.1.21