13 |
|
|
14 |
use advect_m, only: advect |
use advect_m, only: advect |
15 |
USE comgeom, ONLY: airesurg, constang_2d |
USE comgeom, ONLY: airesurg, constang_2d |
16 |
|
use convmas_m, only: convmas |
17 |
USE dimens_m, ONLY: iim, jjm, llm |
USE dimens_m, ONLY: iim, jjm, llm |
18 |
USE disvert_m, ONLY: ap, bp |
USE disvert_m, ONLY: ap, bp |
19 |
use dteta1_m, only: dteta1 |
use dteta1_m, only: dteta1 |
20 |
use dudv1_m, only: dudv1 |
use dudv1_m, only: dudv1 |
21 |
use dudv2_m, only: dudv2 |
use dudv2_m, only: dudv2 |
22 |
use flumass_m, only: flumass |
use flumass_m, only: flumass |
23 |
|
use massbar_m, only: massbar |
24 |
use massbarxy_m, only: massbarxy |
use massbarxy_m, only: massbarxy |
25 |
use massdair_m, only: massdair |
use massdair_m, only: massdair |
26 |
USE paramet_m, ONLY: iip1, ip1jmp1, jjp1, llmp1 |
USE paramet_m, ONLY: iip1, ip1jmp1, jjp1, llmp1 |
27 |
use sortvarc_m, only: sortvarc |
use sortvarc_m, only: sortvarc |
28 |
use tourpot_m, only: tourpot |
use tourpot_m, only: tourpot |
29 |
|
use vitvert_m, only: vitvert |
30 |
|
|
31 |
INTEGER, INTENT(IN):: itau |
INTEGER, INTENT(IN):: itau |
32 |
REAL, INTENT(IN):: ucov(:, :, :) ! (iim + 1, jjm + 1, llm) vent covariant |
REAL, INTENT(IN):: ucov(:, :, :) ! (iim + 1, jjm + 1, llm) vent covariant |
42 |
real dv((iim + 1) * jjm, llm) |
real dv((iim + 1) * jjm, llm) |
43 |
REAL, INTENT(out):: dteta(ip1jmp1, llm) |
REAL, INTENT(out):: dteta(ip1jmp1, llm) |
44 |
real, INTENT(out):: dp(ip1jmp1) |
real, INTENT(out):: dp(ip1jmp1) |
45 |
REAL, INTENT(out):: w(ip1jmp1, llm) |
REAL, INTENT(out):: w(:, :, :) ! (iim + 1, jjm + 1, llm) |
46 |
REAL, intent(out):: pbaru(ip1jmp1, llm), pbarv((iim + 1) * jjm, llm) |
REAL, intent(out):: pbaru(ip1jmp1, llm), pbarv((iim + 1) * jjm, llm) |
47 |
REAL, intent(in):: time_0 |
REAL, intent(in):: time_0 |
48 |
LOGICAL, INTENT(IN):: conser |
LOGICAL, INTENT(IN):: conser |
70 |
dp = convm(:, 1) / airesurg |
dp = convm(:, 1) / airesurg |
71 |
CALL vitvert(convm, w) |
CALL vitvert(convm, w) |
72 |
CALL tourpot(vcov, ucov, massebxy, vorpot) |
CALL tourpot(vcov, ucov, massebxy, vorpot) |
73 |
CALL dudv1(vorpot, pbaru, pbarv, dudyn, dv) |
CALL dudv1(vorpot, pbaru, pbarv, dudyn(:, 2: jjm, :), dv) |
74 |
CALL enercin(vcov, ucov, vcont, ucont, ecin) |
CALL enercin(vcov, ucov, vcont, ucont, ecin) |
75 |
CALL bernoui(ip1jmp1, llm, phi, ecin, bern) |
CALL bernoui(ip1jmp1, llm, phi, ecin, bern) |
76 |
CALL dudv2(teta, pkf, bern, dudyn, dv) |
CALL dudv2(teta, pkf, bern, dudyn, dv) |
78 |
forall (l = 1: llm) ang(:, :, l) = ucov(:, :, l) + constang_2d |
forall (l = 1: llm) ang(:, :, l) = ucov(:, :, l) + constang_2d |
79 |
CALL advect(ang, vcov, teta, w, massebx, masseby, dudyn, dv, dteta) |
CALL advect(ang, vcov, teta, w, massebx, masseby, dudyn, dv, dteta) |
80 |
|
|
81 |
! WARNING probleme de peridocite de dv sur les PC/linux. Pb d'arrondi |
! Warning problème de périodicité de dv sur les PC Linux. Problème |
82 |
! probablement. Observe sur le code compile avec pgf90 3.0-1 |
! d'arrondi probablement. Observé sur le code compilé avec pgf90 |
83 |
|
! 3.0-1. |
84 |
DO l = 1, llm |
DO l = 1, llm |
85 |
DO ij = 1, (iim + 1) * jjm, iip1 |
DO ij = 1, (iim + 1) * jjm, iip1 |
86 |
IF (dv(ij, l)/=dv(ij+iim, l)) THEN |
IF (dv(ij, l)/=dv(ij+iim, l)) THEN |