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

Annotation of /trunk/Sources/dyn3d/caldyn.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 88 - (hide annotations)
Tue Mar 11 15:09:02 2014 UTC (10 years, 2 months ago) by guez
Original Path: trunk/dyn3d/caldyn.f
File size: 3351 byte(s)
Removed useless argument mode of subroutine read_reanalyse.

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 88 ! From dyn3d/caldyn.F, version 1.1.1.1, 2004/05/19 12:53:06
11     ! Author: P. Le Van
12 guez 43 ! Objet : calcul des tendances dynamiques
13 guez 3
14 guez 46 use advect_m, only: advect
15 guez 78 USE comgeom, ONLY: airesurg, constang_2d
16     USE dimens_m, ONLY: iim, jjm, llm
17 guez 70 USE disvert_m, ONLY: ap, bp
18 guez 88 use dteta1_m, only: dteta1
19     use dudv1_m, only: dudv1
20     use dudv2_m, only: dudv2
21 guez 78 use flumass_m, only: flumass
22     use massbarxy_m, only: massbarxy
23 guez 67 use massdair_m, only: massdair
24 guez 79 USE paramet_m, ONLY: iip1, ip1jmp1, jjp1, llmp1
25 guez 43 use sortvarc_m, only: sortvarc
26 guez 78 use tourpot_m, only: tourpot
27 guez 3
28 guez 46 INTEGER, INTENT(IN):: itau
29 guez 78 REAL, INTENT(IN):: ucov(:, :, :) ! (iim + 1, jjm + 1, llm) vent covariant
30     REAL, INTENT(IN):: vcov(:, :, :) ! (iim + 1, jjm, llm) ! vent covariant
31 guez 79 REAL, INTENT(IN):: teta(ip1jmp1, llm)
32     REAL, INTENT (IN):: ps(ip1jmp1)
33 guez 70 real, intent(out):: masse(ip1jmp1, llm)
34 guez 46 REAL, INTENT(IN):: pk(iip1, jjp1, llm)
35 guez 88 REAL, INTENT(IN):: pkf(ip1jmp1, llm)
36 guez 70 REAL, INTENT(IN):: phis(ip1jmp1)
37 guez 68 REAL, INTENT(IN):: phi(ip1jmp1, llm)
38 guez 88 REAL dudyn(:, :, :) ! (iim + 1, jjm + 1, llm)
39     real dv((iim + 1) * jjm, llm)
40     REAL, INTENT(out):: dteta(ip1jmp1, llm)
41 guez 46 real, INTENT(out):: dp(ip1jmp1)
42 guez 70 REAL, INTENT(out):: w(ip1jmp1, llm)
43 guez 79 REAL, intent(out):: pbaru(ip1jmp1, llm), pbarv((iim + 1) * jjm, llm)
44 guez 43 REAL, intent(in):: time_0
45 guez 70 LOGICAL, INTENT(IN):: conser
46 guez 3
47 guez 43 ! Local:
48 guez 79 REAL vcont((iim + 1) * jjm, llm), ucont(ip1jmp1, llm)
49 guez 78 REAL ang(iim + 1, jjm + 1, llm), p(ip1jmp1, llmp1)
50 guez 79 REAL massebx(ip1jmp1, llm), masseby((iim + 1) * jjm, llm)
51     REAL vorpot(iim + 1, jjm, llm)
52 guez 43 real ecin(ip1jmp1, llm), convm(ip1jmp1, llm)
53     REAL bern(ip1jmp1, llm)
54 guez 79 REAL massebxy(iim + 1, jjm, llm)
55 guez 43 INTEGER ij, l
56 guez 3
57 guez 43 !-----------------------------------------------------------------------
58 guez 3
59 guez 43 CALL covcont(llm, ucov, vcov, ucont, vcont)
60     forall (l = 1: llm + 1) p(:, l) = ap(l) + bp(l) * ps
61     CALL massdair(p, masse)
62     CALL massbar(masse, massebx, masseby)
63     CALL massbarxy(masse, massebxy)
64     CALL flumass(massebx, masseby, vcont, ucont, pbaru, pbarv)
65     CALL dteta1(teta, pbaru, pbarv, dteta)
66     CALL convmas(pbaru, pbarv, convm)
67 guez 46 dp = convm(:, 1) / airesurg
68 guez 43 CALL vitvert(convm, w)
69     CALL tourpot(vcov, ucov, massebxy, vorpot)
70 guez 47 CALL dudv1(vorpot, pbaru, pbarv, dudyn, dv)
71 guez 43 CALL enercin(vcov, ucov, vcont, ucont, ecin)
72     CALL bernoui(ip1jmp1, llm, phi, ecin, bern)
73 guez 47 CALL dudv2(teta, pkf, bern, dudyn, dv)
74 guez 3
75 guez 78 forall (l = 1: llm) ang(:, :, l) = ucov(:, :, l) + constang_2d
76 guez 47 CALL advect(ang, vcov, teta, w, massebx, masseby, dudyn, dv, dteta)
77 guez 3
78 guez 43 ! 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 guez 79 DO ij = 1, (iim + 1) * jjm, iip1
82 guez 43 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    
88 guez 88 ! Sorties Ă©ventuelles des variables de contrĂ´le :
89 guez 43 IF (conser) CALL sortvarc(itau, ucov, teta, ps, masse, pk, phis, vorpot, &
90     phi, bern, dp, time_0)
91    
92     END SUBROUTINE caldyn
93    
94     end module caldyn_m

  ViewVC Help
Powered by ViewVC 1.1.21