source: LMDZ5/trunk/libf/phylmd/phys_output_write_mod.F90 @ 1798

Last change on this file since 1798 was 1798, checked in by Ehouarn Millour, 11 years ago

Création d'un module phys_output_write_mod en remplacement de phys_output_write_new.h.
UG
.............................
Turning phys_output_write_new.h into a module named phys_output_write_mod.
UG

File size: 2.9 KB
Line 
1!
2! $Header$
3!
4MODULE phys_output_write_mod
5
6! Author: Abderrahmane IDELKADI (original include file)
7! Author: Laurent FAIRHEAD (transformation to module/subroutine)
8! Author: Ulysse GERARD (effective implementation)
9
10   USE phys_output_var_mod
11
12   CONTAINS
13     
14! ug Routine pour définir (los du premier passageà) ET sortir les variables
15    SUBROUTINE phys_output_write(itap, pdtphys, paprs, pphis, &
16   &                  pplay, lmax_th, aerosol_couple,         &
17   &                  ok_ade, ok_aie, ivap, new_aod, ok_sync, &
18   &                  ptconv, read_climoz, clevSTD, ptconvth, &
19   &                  d_t, qx, d_qx, zmasse, flag_aerosol_strat)
20
21! This subroutine does the actual writing of diagnostics that were
22! defined and initialised in phys_output_mod.F90
23
24    USE dimphy
25    USE control_mod
26    USE phys_output_ctrlout_mod
27    USE phys_state_var_mod
28    USE phys_local_var_mod
29    USE indice_sol_mod
30    USE infotrac
31    USE comgeomphy
32    USE surface_data,     ONLY : type_ocean, ok_veget
33    USE aero_mod
34    USE ioipsl
35    USE write_field_phy
36    USE iophy
37
38    IMPLICIT NONE
39
40    INCLUDE "temps.h"
41    INCLUDE "clesphys.h"
42    INCLUDE "thermcell.h"
43    INCLUDE "compbl.h"
44    INCLUDE "YOMCST.h"
45    INCLUDE "dimensions.h"
46
47! Input
48    INTEGER :: itap, ivap, read_climoz
49    INTEGER, DIMENSION(klon) :: lmax_th
50    LOGICAL :: aerosol_couple, ok_sync
51    LOGICAL :: ok_ade, ok_aie, new_aod
52    LOGICAL, DIMENSION(klon, klev) :: ptconv, ptconvth
53    REAL :: pdtphys
54    CHARACTER (LEN=4), DIMENSION(nlevSTD) :: clevSTD
55    REAL, DIMENSION(klon) :: pphis
56    REAL, DIMENSION(klon, klev) :: pplay, d_t
57    REAL, DIMENSION(klon, klev+1) :: paprs
58    REAL, DIMENSION(klon,klev,nqtot) :: qx, d_qx
59    REAL, DIMENSION(klon, llm) :: zmasse
60    LOGICAL :: flag_aerosol_strat
61
62! Local
63    INTEGER, PARAMETER :: jjmp1=jjm+1-1/jjm
64    INTEGER :: itau_w
65    INTEGER :: i, iff, iq, nsrf, k, ll, naero
66    REAL, DIMENSION (klon) :: zx_tmp_fi2d
67    REAL, DIMENSION (klon,klev) :: zx_tmp_fi3d, zpt_conv
68    REAL, DIMENSION (klon,klev+1) :: zx_tmp_fi3d1
69    CHARACTER (LEN=4)              :: bb2
70    INTEGER, DIMENSION(iim*jjmp1)  :: ndex2d
71    INTEGER, DIMENSION(iim*jjmp1*klev) :: ndex3d
72    REAL, PARAMETER :: dobson_u = 2.1415e-05 ! Dobson unit, in kg m-2
73
74    IF(vars_defined) THEN
75! On calcul le nouveau tau:
76     itau_w = itau_phy + itap + start_time * day_step / iphysiq
77! On le donne à iophy pour que les histwrite y aient accès:
78     CALL set_itau_iophy(itau_w)
79    ENDIF
80
81! On procède à l'écriture ou à la définition des nombreuses variables:
82#include "phys_output_write_F90.h"
83
84    IF(vars_defined) THEN
85! On synchronise les fichiers pour IOIPSL
86      DO iff=1,nfiles
87          IF (ok_sync .AND. clef_files(iff)) THEN
88!$OMP MASTER
89              CALL histsync(nid_files(iff))
90!$OMP END MASTER
91          ENDIF
92      END DO
93    ENDIF
94
95     
96    vars_defined = .TRUE.
97
98    END SUBROUTINE phys_output_write
99
100
101
102  END MODULE phys_output_write_mod
103
Note: See TracBrowser for help on using the repository browser.