4 |
|
|
5 |
contains |
contains |
6 |
|
|
7 |
SUBROUTINE calfis(rdayvrai, time, ucov, vcov, teta, q, ps, pk, phis, phi, & |
SUBROUTINE calfis(dayvrai, time, ucov, vcov, teta, q, pk, phis, phi, w, & |
8 |
w, dufi, dvfi, dtetafi, dqfi, lafin) |
dufi, dvfi, dtetafi, dqfi, lafin) |
9 |
|
|
10 |
! From dyn3d/calfis.F, version 1.3, 2005/05/25 13:10:09 |
! From dyn3d/calfis.F, version 1.3, 2005/05/25 13:10:09 |
11 |
! Authors: P. Le Van, F. Hourdin |
! Authors: P. Le Van, F. Hourdin |
13 |
! 1. R\'earrangement des tableaux et transformation des variables |
! 1. R\'earrangement des tableaux et transformation des variables |
14 |
! dynamiques en variables physiques |
! dynamiques en variables physiques |
15 |
|
|
16 |
! 2. Calcul des termes physiques |
! 2. Calcul des tendances physiques |
17 |
! 3. Retransformation des tendances physiques en tendances dynamiques |
! 3. Retransformation des tendances physiques en tendances dynamiques |
18 |
|
|
19 |
! Remarques: |
! Remarques: |
31 |
! grandeur horizontalement). |
! grandeur horizontalement). |
32 |
|
|
33 |
use comconst, only: kappa, cpp, dtphys, g |
use comconst, only: kappa, cpp, dtphys, g |
34 |
use comgeom, only: apoln, cu_2d, cv_2d, unsaire_2d, apols, rlonu, rlonv |
use comgeom, only: apoln, cu_2d, cv_2d, unsaire_2d, apols |
35 |
use dimens_m, only: iim, jjm, llm, nqmx |
use dimens_m, only: iim, jjm, llm, nqmx |
36 |
use dimphy, only: klon |
use dimphy, only: klon |
37 |
use disvert_m, only: preff |
use disvert_m, only: preff |
38 |
|
use dynetat0_m, only: rlonu, rlonv |
39 |
use grid_change, only: dyn_phy, gr_fi_dyn |
use grid_change, only: dyn_phy, gr_fi_dyn |
40 |
use nr_util, only: pi |
use nr_util, only: pi |
41 |
use physiq_m, only: physiq |
use physiq_m, only: physiq |
42 |
use pressure_var, only: p3d, pls |
use pressure_var, only: p3d, pls |
43 |
|
|
44 |
REAL, intent(in):: rdayvrai |
integer, intent(in):: dayvrai |
45 |
REAL, intent(in):: time ! heure de la journ\'ee en fraction de jour |
! current day number, based at value 1 on January 1st of annee_ref |
46 |
|
|
47 |
|
REAL, intent(in):: time ! time of day, as a fraction of day length |
48 |
|
|
49 |
REAL, intent(in):: ucov(:, :, :) ! (iim + 1, jjm + 1, llm) |
REAL, intent(in):: ucov(:, :, :) ! (iim + 1, jjm + 1, llm) |
50 |
! covariant zonal velocity |
! covariant zonal velocity |
58 |
REAL, intent(in):: q(:, :, :, :) ! (iim + 1, jjm + 1, llm, nqmx) |
REAL, intent(in):: q(:, :, :, :) ! (iim + 1, jjm + 1, llm, nqmx) |
59 |
! mass fractions of advected fields |
! mass fractions of advected fields |
60 |
|
|
|
REAL, intent(in):: ps(:, :) ! (iim + 1, jjm + 1) surface pressure |
|
|
|
|
61 |
REAL, intent(in):: pk(:, :, :) ! (iim + 1, jjm + 1, llm) |
REAL, intent(in):: pk(:, :, :) ! (iim + 1, jjm + 1, llm) |
62 |
! Exner = cp * (p / preff)**kappa |
! Exner = cp * (p / preff)**kappa |
63 |
|
|
78 |
LOGICAL, intent(in):: lafin |
LOGICAL, intent(in):: lafin |
79 |
|
|
80 |
! Local: |
! Local: |
81 |
INTEGER i, j, l, ig0, iq, iiq |
INTEGER i, j, l, ig0, iq |
|
REAL zpsrf(klon) |
|
82 |
REAL paprs(klon, llm + 1) ! aux interfaces des couches |
REAL paprs(klon, llm + 1) ! aux interfaces des couches |
83 |
REAL play(klon, llm) ! aux milieux des couches |
REAL play(klon, llm) ! aux milieux des couches |
84 |
REAL pphi(klon, llm), pphis(klon) |
REAL pphi(klon, llm), pphis(klon) |
179 |
forall(l = 1: llm) v(:, l) = pack(zvfi(:, :, l), dyn_phy) |
forall(l = 1: llm) v(:, l) = pack(zvfi(:, :, l), dyn_phy) |
180 |
|
|
181 |
! Appel de la physique : |
! Appel de la physique : |
182 |
CALL physiq(lafin, rdayvrai, time, dtphys, paprs, play, pphi, pphis, u, & |
CALL physiq(lafin, dayvrai, time, dtphys, paprs, play, pphi, pphis, u, & |
183 |
v, t, qx, omega, d_u, d_v, d_t, d_qx) |
v, t, qx, omega, d_u, d_v, d_t, d_qx) |
184 |
|
|
185 |
! transformation des tendances physiques en tendances dynamiques: |
! transformation des tendances physiques en tendances dynamiques: |