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

Annotation of /trunk/dyn3d/caldyn.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 67 - (hide annotations)
Tue Oct 2 15:50:56 2012 UTC (11 years, 7 months ago) by guez
Original Path: trunk/libf/dyn3d/caldyn.f90
File size: 2913 byte(s)
Cleaning.
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 guez 47 dudyn, dv, dteta, dp, w, pbaru, pbarv, time_0, conser)
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 67 USE comgeom, ONLY : airesurg, constang
16 guez 43 USE dimens_m, ONLY : iim, llm
17 guez 67 USE disvert_m, ONLY : ap, bp
18     use massdair_m, only: massdair
19 guez 43 USE paramet_m, ONLY : iip1, ip1jm, ip1jmp1, jjp1, llmp1
20     use sortvarc_m, only: sortvarc
21 guez 3
22 guez 43 ! Arguments:
23 guez 3
24 guez 46 LOGICAL, INTENT(IN):: conser
25     INTEGER, INTENT(IN):: itau
26 guez 43 REAL vcov(ip1jm, llm), ucov(ip1jmp1, llm)
27     real, intent(in):: teta(ip1jmp1, llm)
28 guez 46 REAL, INTENT(IN):: ps(ip1jmp1), phis(ip1jmp1)
29     REAL, INTENT(IN):: pk(iip1, jjp1, llm)
30 guez 43 REAL pkf(ip1jmp1, llm)
31     REAL vcont(ip1jm, llm), ucont(ip1jmp1, llm)
32     REAL phi(ip1jmp1, llm), masse(ip1jmp1, llm)
33 guez 47 REAL dv(ip1jm, llm), dudyn(ip1jmp1, llm)
34 guez 46 REAL dteta(ip1jmp1, llm)
35     real, INTENT(out):: dp(ip1jmp1)
36 guez 43 REAL pbaru(ip1jmp1, llm), pbarv(ip1jm, llm)
37     REAL, intent(in):: time_0
38 guez 46 REAL, INTENT(out):: w(ip1jmp1, llm)
39 guez 3
40 guez 43 ! Local:
41 guez 3
42 guez 43 REAL ang(ip1jmp1, llm), p(ip1jmp1, llmp1)
43 guez 46 REAL massebx(ip1jmp1, llm), masseby(ip1jm, llm)
44 guez 43 REAL vorpot(ip1jm, llm)
45     real ecin(ip1jmp1, llm), convm(ip1jmp1, llm)
46     REAL bern(ip1jmp1, llm)
47     REAL massebxy(ip1jm, llm)
48 guez 3
49 guez 43 INTEGER ij, l
50 guez 3
51 guez 43 !-----------------------------------------------------------------------
52 guez 3
53 guez 43 CALL covcont(llm, ucov, vcov, ucont, vcont)
54     forall (l = 1: llm + 1) p(:, l) = ap(l) + bp(l) * ps
55     CALL massdair(p, masse)
56     CALL massbar(masse, massebx, masseby)
57     CALL massbarxy(masse, massebxy)
58     CALL flumass(massebx, masseby, vcont, ucont, pbaru, pbarv)
59     CALL dteta1(teta, pbaru, pbarv, dteta)
60     CALL convmas(pbaru, pbarv, convm)
61 guez 46 dp = convm(:, 1) / airesurg
62 guez 43 CALL vitvert(convm, w)
63     CALL tourpot(vcov, ucov, massebxy, vorpot)
64 guez 47 CALL dudv1(vorpot, pbaru, pbarv, dudyn, dv)
65 guez 43 CALL enercin(vcov, ucov, vcont, ucont, ecin)
66     CALL bernoui(ip1jmp1, llm, phi, ecin, bern)
67 guez 47 CALL dudv2(teta, pkf, bern, dudyn, dv)
68 guez 3
69 guez 43 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 guez 47 CALL advect(ang, vcov, teta, w, massebx, masseby, dudyn, dv, dteta)
76 guez 3
77 guez 43 ! WARNING probleme de peridocite de dv sur les PC/linux. Pb d'arrondi
78     ! probablement. Observe sur le code compile avec pgf90 3.0-1
79     DO l = 1, llm
80     DO ij = 1, ip1jm, iip1
81     IF (dv(ij, l)/=dv(ij+iim, l)) THEN
82     dv(ij+iim, l) = dv(ij, l)
83     END IF
84     END DO
85     END DO
86    
87     ! Sorties eventuelles des variables de controle :
88     IF (conser) CALL sortvarc(itau, ucov, teta, ps, masse, pk, phis, vorpot, &
89     phi, bern, dp, time_0)
90    
91     END SUBROUTINE caldyn
92    
93     end module caldyn_m

  ViewVC Help
Powered by ViewVC 1.1.21