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

Annotation of /trunk/dyn3d/caldyn.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 46 - (hide annotations)
Mon May 16 14:52:30 2011 UTC (13 years ago) by guez
Original Path: trunk/libf/dyn3d/caldyn.f90
File size: 2869 byte(s)
Removed procedure "psextbar". "psextbar" was called but the result of
the call was not used.

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

  ViewVC Help
Powered by ViewVC 1.1.21