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

Annotation of /trunk/libf/dyn3d/caldyn.f90

Parent Directory Parent Directory | Revision Log Revision Log


Revision 40 - (hide annotations)
Tue Feb 22 13:49:36 2011 UTC (13 years, 3 months ago) by guez
File size: 2670 byte(s)
"alpha" useless, always 0, in "exner_hyb".

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

  ViewVC Help
Powered by ViewVC 1.1.21