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

Contents of /trunk/dyn3d/caldyn0.f

Parent Directory Parent Directory | Revision Log Revision Log


Revision 91 - (show annotations)
Wed Mar 26 17:18:58 2014 UTC (10 years, 2 months ago) by guez
File size: 2354 byte(s)
Removed unused variables lock_startdate and time_stamp of module
calendar.

Noticed that physiq does not change the surface pressure. So removed
arguments ps and dpfi of subroutine addfi. dpfi was always 0. The
computation of ps in addfi included some averaging at the poles. In
principle, this does not change ps but in practice it does because of
finite numerical precision. So the results of the simulation are
changed. Removed arguments ps and dpfi of calfis. Removed argument
d_ps of physiq.

du at the poles is not computed by dudv1, so declare only the
corresponding latitudes in dudv1. caldyn passes only a section of the
array dudyn as argument.

Removed variable niadv of module iniadvtrac_m.

Declared arguments of exner_hyb as assumed-shape arrays and made all
other horizontal sizes in exner_hyb dynamic. This allows the external
program test_disvert to use exner_hyb at a single horizontal position.

1 module caldyn0_m
2
3 IMPLICIT NONE
4
5 contains
6
7 SUBROUTINE caldyn0(ucov, vcov, teta, ps, masse, pk, phis, phi, w, &
8 pbaru, pbarv)
9
10 ! From dyn3d/caldyn0.F, version 1.1.1.1, 2004/05/19 12:53:07
11 ! Authors: P. Le Van, F. Forget
12 ! Objet : calcul des tendances dynamiques
13
14 USE comgeom, ONLY: airesurg
15 use convmas_m, only: convmas
16 USE dimens_m, ONLY: iim, jjm, llm
17 USE disvert_m, ONLY: ap, bp
18 use flumass_m, only: flumass
19 use massbar_m, only: massbar
20 use massbarxy_m, only: massbarxy
21 use massdair_m, only: massdair
22 USE paramet_m, ONLY: iip1, ip1jmp1, jjp1, llmp1
23 use sortvarc0_m, only: sortvarc0
24 use tourpot_m, only: tourpot
25 use vitvert_m, only: vitvert
26
27 REAL, INTENT(IN):: ucov(:, :, :) ! (iim + 1, jjm + 1, llm) vent covariant
28 REAL, INTENT(IN):: vcov(:, :, :) ! (iim + 1, jjm, llm) ! vent covariant
29 REAL, INTENT(IN):: teta(ip1jmp1, llm)
30 REAL, INTENT (IN):: ps(ip1jmp1)
31 real, intent(out):: masse(ip1jmp1, llm)
32 REAL, INTENT (IN):: pk(iip1, jjp1, llm)
33 REAL, INTENT (IN):: phis(ip1jmp1)
34 REAL, INTENT (IN):: phi(ip1jmp1, llm)
35 REAL, INTENT(out):: w(:, :, :) ! (iim + 1, jjm + 1, llm)
36 REAL, intent(out):: pbaru(ip1jmp1, llm), pbarv((iim + 1) * jjm, llm)
37
38 ! Local:
39 REAL vcont((iim + 1) * jjm, llm), ucont(ip1jmp1, llm)
40 REAL p(ip1jmp1, llmp1)
41 REAL massebx(ip1jmp1, llm), masseby((iim + 1) * jjm, llm)
42 REAL vorpot(iim + 1, jjm, llm)
43 real ecin(ip1jmp1, llm), convm(ip1jmp1, llm)
44 REAL bern(ip1jmp1, llm)
45 REAL massebxy(iim + 1, jjm, llm), dp(ip1jmp1)
46 INTEGER l
47
48 !-----------------------------------------------------------------------
49
50 PRINT *, 'Call sequence information: caldyn0'
51
52 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 convmas(pbaru, pbarv, convm)
59 dp = convm(:, 1) / airesurg
60 CALL vitvert(convm, w)
61 CALL tourpot(vcov, ucov, massebxy, vorpot)
62 CALL enercin(vcov, ucov, vcont, ucont, ecin)
63 CALL bernoui(ip1jmp1, llm, phi, ecin, bern)
64 CALL sortvarc0(ucov, teta, ps, masse, pk, phis, vorpot, phi, bern, dp)
65
66 END SUBROUTINE caldyn0
67
68 end module caldyn0_m

  ViewVC Help
Powered by ViewVC 1.1.21