Changeset 5135 for LMDZ6


Ignore:
Timestamp:
Jul 26, 2024, 7:20:23 PM (7 weeks ago)
Author:
abarral
Message:

Put iotd* into lmdz_iotd.f90

Location:
LMDZ6/branches/Amaury_dev/libf
Files:
6 deleted
25 edited
3 moved

Legend:

Unmodified
Added
Removed
  • LMDZ6/branches/Amaury_dev/libf/dyn3d/bilan_dyn.F90

    r5134 r5135  
    6060
    6161
    62   !ym      character*6 nom(nQ)
    63   !ym      character*6 unites(nQ)
    64   character*6, save :: nom(nQ)
    65   character*6, save :: unites(nQ)
     62  !ym      CHARACTER*6 nom(nQ)
     63  !ym      CHARACTER*6 unites(nQ)
     64  CHARACTER*6, save :: nom(nQ)
     65  CHARACTER*6, save :: unites(nQ)
    6666
    6767  CHARACTER(LEN = 10) :: file
     
    116116  parameter (ntr = 5)
    117117
    118   !ym      character*10 znom(ntr,nQ)
    119   !ym      character*20 znoml(ntr,nQ)
    120   !ym      character*10 zunites(ntr,nQ)
    121   character*10, save :: znom(ntr, nQ)
    122   character*20, save :: znoml(ntr, nQ)
    123   character*10, save :: zunites(ntr, nQ)
     118  !ym      CHARACTER*10 znom(ntr,nQ)
     119  !ym      CHARACTER*20 znoml(ntr,nQ)
     120  !ym      CHARACTER*10 zunites(ntr,nQ)
     121  CHARACTER*10, save :: znom(ntr, nQ)
     122  CHARACTER*20, save :: znoml(ntr, nQ)
     123  CHARACTER*10, save :: zunites(ntr, nQ)
    124124
    125125  INTEGER :: iave, itot, immc, itrs, istn
  • LMDZ6/branches/Amaury_dev/libf/dyn3d_common/gradsdef.h

    r5117 r5135  
    1515LOGICAL firsttime(nfmx)
    1616
    17 character*10 var(nvarmx,nfmx),fichier(nfmx)
    18 character*40 title(nfmx),tvar(nvarmx,nfmx)
     17CHARACTER*10 var(nvarmx,nfmx),fichier(nfmx)
     18CHARACTER*40 title(nfmx),tvar(nvarmx,nfmx)
    1919
    2020common/gradsdef/xd,yd,zd,dtime, &
  • LMDZ6/branches/Amaury_dev/libf/dyn3dmem/bilan_dyn_loc.f90

    r5134 r5135  
    6868
    6969
    70   !ym      character*6 nom(nQ)
    71   !ym      character*6 unites(nQ)
     70  !ym      CHARACTER*6 nom(nQ)
     71  !ym      CHARACTER*6 unites(nQ)
    7272  CHARACTER(LEN=6),save :: nom(nQ)
    7373  CHARACTER(LEN=6),save :: unites(nQ)
     
    114114  parameter (ntr=5)
    115115
    116   !ym      character*10 znom(ntr,nQ)
    117   !ym      character*20 znoml(ntr,nQ)
    118   !ym      character*10 zunites(ntr,nQ)
    119   character*10,save :: znom(ntr,nQ)
    120   character*20,save :: znoml(ntr,nQ)
    121   character*10,save :: zunites(ntr,nQ)
     116  !ym      CHARACTER*10 znom(ntr,nQ)
     117  !ym      CHARACTER*20 znoml(ntr,nQ)
     118  !ym      CHARACTER*10 zunites(ntr,nQ)
     119  CHARACTER*10,save :: znom(ntr,nQ)
     120  CHARACTER*20,save :: znoml(ntr,nQ)
     121  CHARACTER*10,save :: zunites(ntr,nQ)
    122122
    123123  INTEGER,PARAMETER :: iave=1,itot=2,immc=3,itrs=4,istn=5
  • LMDZ6/branches/Amaury_dev/libf/phydev/iophy.F90

    r5119 r5135  
    145145    IMPLICIT NONE
    146146
    147     character*(*), INTENT(IN) :: name
     147    CHARACTER*(*), INTENT(IN) :: name
    148148    INTEGER, INTENT(IN) :: itau0
    149149    REAL, INTENT(IN) :: zjulian
     
    173173    IMPLICIT NONE
    174174
    175     character*(*), INTENT(IN) :: name
     175    CHARACTER*(*), INTENT(IN) :: name
    176176    !    INTEGER, INTENT(IN) :: itau0
    177177    !    REAL,INTENT(IN) :: zjulian
     
    209209    INTEGER, INTENT(IN) :: nid
    210210    logical, INTENT(IN) :: lpoint
    211     character*(*), INTENT(IN) :: name
     211    CHARACTER*(*), INTENT(IN) :: name
    212212    INTEGER, INTENT(IN) :: itau
    213213    REAL, DIMENSION(:), INTENT(IN) :: field
     
    269269    INTEGER, INTENT(IN) :: nid
    270270    logical, INTENT(IN) :: lpoint
    271     character*(*), INTENT(IN) :: name
     271    CHARACTER*(*), INTENT(IN) :: name
    272272    INTEGER, INTENT(IN) :: itau
    273273    REAL, DIMENSION(:, :), INTENT(IN) :: field  ! --> field(klon,:)
  • LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/minmaxqfi2.f90

    r5117 r5135  
    66  INCLUDE "dimensions.h"
    77
    8   ! character*20 comment
     8  ! CHARACTER*20 comment
    99  CHARACTER(LEN = *) :: comment
    1010  REAL :: qmin, qmax
  • LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/minmaxsource.f90

    r5117 r5135  
    77  INCLUDE "dimensions.h"
    88
    9   ! character*20 comment
     9  ! CHARACTER*20 comment
    1010  CHARACTER(LEN = *) :: comment
    1111  REAL :: qmin, qmax
  • LMDZ6/branches/Amaury_dev/libf/phylmd/Dust/read_surface.F90

    r5117 r5135  
    1515       INCLUDE "paramet.h"
    1616
    17        character*10 name
    18        character*10 varname
     17       CHARACTER*10 name
     18       CHARACTER*10 varname
    1919
    2020       REAL tmp_dyn(iip1,jjp1)
     
    3232       INTEGER start(2),count(2),status
    3333       INTEGER i,j,l,ig
    34        character*1 str1
     34       CHARACTER*1 str1
    3535
    3636!JE20140526<<
    37       character*4 ::  latstr,aux4s
     37      CHARACTER*4 ::  latstr,aux4s
    3838      LOGICAL :: outcycle, isinversed
    3939      REAL, DIMENSION(jjp1) :: lats
  • LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/1D_decl_cases.h

    r5128 r5135  
    11
    22! Declarations specifiques au cas Toga
    3         character*80 :: fich_toga
     3        CHARACTER*80 :: fich_toga
    44!        integer nlev_prof
    55!        parameter (nlev_prof = 41)
     
    4242!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    4343! Declarations specifiques au cas RICO
    44         character*80 :: fich_rico
     44        CHARACTER*80 :: fich_rico
    4545        INTEGER nlev_rico
    4646
     
    5454!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    5555! Declarations specifiques au cas TWPice
    56         character*80 :: fich_twpice
     56        CHARACTER*80 :: fich_twpice
    5757        INTEGER nlev_twpi, nt_twpi
    5858        parameter (nlev_twpi=40, nt_twpi=215)
     
    8484
    8585!Declarations specifiques au cas FIRE
    86         character*80 :: fich_fire
     86        CHARACTER*80 :: fich_fire
    8787        INTEGER nlev_fire, nt_fire
    8888        parameter (nlev_fire=120, nt_fire=1) 
     
    9797!Declarations specifiques au cas GABLS4   (MPL 20141023)
    9898!FHADETRUIRE
    99 !       character*80 :: fich_gabls4
     99!       CHARACTER*80 :: fich_gabls4
    100100!       integer nlev_gabls4, nt_gabls4, nsol_gabls4
    101101!       parameter (nlev_gabls4=90, nt_gabls4=37, nsol_gabls4=19) 
     
    132132
    133133!Declarations specifiques au cas DICE     (MPL 02072013)
    134         character*80 :: fich_dice
     134        CHARACTER*80 :: fich_dice
    135135        INTEGER nlev_dice, nt_dice
    136136        parameter (nlev_dice=70, nt_dice=145) 
     
    178178!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    179179! Declarations specifiques au cas GCSSold
    180         character*80 :: fich_gcssold_ctl
    181         character*80 :: fich_gcssold_dat
     180        CHARACTER*80 :: fich_gcssold_ctl
     181        CHARACTER*80 :: fich_gcssold_dat
    182182        real  ht_gcssold(llm),hq_gcssold(llm),hw_gcssold(llm)
    183183        real  hu_gcssold(llm)
     
    193193!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    194194! Declarations specifiques au cas Arm_cu
    195         character*80 :: fich_armcu
     195        CHARACTER*80 :: fich_armcu
    196196
    197197
     
    218218!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    219219! declarations specifiques au cas Sandu
    220         character*80 :: fich_sandu
     220        CHARACTER*80 :: fich_sandu
    221221!        integer nlev_prof
    222222!        parameter (nlev_prof = 41)
     
    256256!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    257257! Declarations specifiques au cas Astex
    258         character*80 :: fich_astex
     258        CHARACTER*80 :: fich_astex
    259259        INTEGER nlev_astex, nt_astex
    260260        parameter (nlev_astex=34, nt_astex=49)
  • LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/fcg_racmo.h

    r5117 r5135  
    55      LOGICAL :: ok_invertp
    66      INTEGER :: forc_trb
    7       character*31 :: fich_racmo
     7      CHARACTER*31 :: fich_racmo
    88
    99      common /fcg_racmo/forc_trb,ok_invertp,a_guide,fich_racmo
  • LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/lmdz_1dutils.f90

    r5134 r5135  
    742742    PARAMETER (length = 100)
    743743    REAL tab_cntrl(length) ! tableau des parametres du run
    744     character*4 nmq(nqtot)
    745     character*12 modname
    746     character*80 abort_message
     744    CHARACTER*4 nmq(nqtot)
     745    CHARACTER*12 modname
     746    CHARACTER*80 abort_message
    747747    LOGICAL found
    748748
     
    878878    PARAMETER (length = 100)
    879879    REAL tab_cntrl(length) ! tableau des parametres du run
    880     character*4 nmq(nqtot)
    881     character*20 modname
    882     character*80 abort_message
     880    CHARACTER*4 nmq(nqtot)
     881    CHARACTER*20 modname
     882    CHARACTER*80 abort_message
    883883
    884884    INTEGER pass
  • LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/lmdz_comdissnew.f90

    r5134 r5135  
    1 link ../../dyn3d_common/comdissnew.h
     1link ../../dyn3d_common/lmdz_comdissnew.f90
  • LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/lmdz_old_1dconv.f90

    r5134 r5135  
    115115    save timeaft, timebef
    116116    INTEGER temps
    117     character*4 string
     117    CHARACTER*4 string
    118118    !----------------------------------------------------------------------
    119119    ! variables arguments de la subroutine rdgrads
     
    142142    ! variables destinees a la lecture du pas de temps du fichier de donnees
    143143    !---------------------------------------------------------------------
    144     character*80 aaa, atemps, apasmax
     144    CHARACTER*80 aaa, atemps, apasmax
    145145    INTEGER nch, imn, ipa
    146146    !---------------------------------------------------------------------
     
    509509    REAL playgcm(klevgcm) ! pression en milieu de couche du gcm
    510510    REAL psolgcm
    511     character*80 file_forctl
     511    CHARACTER*80 file_forctl
    512512
    513513    klev = klevgcm
     
    577577    INTEGER i, lu, mlz, mlzh
    578578
    579     character*80 file_forctl
    580 
    581     character*4 a
    582     character*80 aaa, anblvl
     579    CHARACTER*80 file_forctl
     580
     581    CHARACTER*4 a
     582    CHARACTER*80 aaa, anblvl
    583583    INTEGER nch
    584584
  • LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_amma_read.F90

    r5117 r5135  
    44!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    55!Declarations specifiques au cas AMMA
    6         character*80 :: fich_amma
     6        CHARACTER*80 :: fich_amma
    77! Option du cas AMMA ou on impose la discretisation verticale (Ap,Bp)
    88        INTEGER nlev_amma, nt_amma
  • LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_cases_read.F90

    r5117 r5135  
    55!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    66!Declarations specifiques au cas standard
    7         character*80 :: fich_cas
     7        CHARACTER*80 :: fich_cas
    88! Discr?tisation
    99        INTEGER nlev_cas, nt_cas
  • LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_cases_read2.F90

    r5117 r5135  
    77!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    88  !Declarations specifiques au cas standard
    9   character*80 :: fich_cas
     9  CHARACTER*80 :: fich_cas
    1010  ! Discr?tisation
    1111  INTEGER nlev_cas, nt_cas
     
    563563  parameter(nbvar3d=39)
    564564  INTEGER var3didin(nbvar3d)
    565   character*5 name_var(1:nbvar3d)
     565  CHARACTER*5 name_var(1:nbvar3d)
    566566  data name_var/'zz','pp','temp','qv','rh','theta','rv','u','v','ug','vg','w','advu','hu','vu',&
    567567       'advv','hv','vv','advT','hT','vT','advq','hq','vq','advth','hth','vth','advr','hr','vr',&
     
    680680  parameter(nbvar3d=62)
    681681  INTEGER var3didin(nbvar3d),missing_var(nbvar3d)
    682   character*12 name_var(1:nbvar3d)
     682  CHARACTER*12 name_var(1:nbvar3d)
    683683  data name_var/'coor_par_a','coor_par_b','height_h','pressure_h',&
    684684       'w','omega','ug','vg','uadv','uadvh','uadvv','vadv','vadvh','vadvv','tadv','tadvh','tadvv',&
     
    852852  parameter(nbvar3d=70)
    853853  INTEGER var3didin(nbvar3d),missing_var(nbvar3d)
    854   character*13 name_var(1:nbvar3d)
     854  CHARACTER*13 name_var(1:nbvar3d)
    855855  data name_var/'coor_par_a','coor_par_b','height_h','pressure_h',&
    856856       'temp','qv','ql','qi','u','v','tke','pressure',&
  • LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/mod_1D_cases_read_std.F90

    r5117 r5135  
    88!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    99  !Declarations specifiques au cas standard
    10   character*80 :: fich_cas
     10  CHARACTER*80 :: fich_cas
    1111  ! Discr?tisation
    1212  INTEGER nlev_cas, nt_cas
     
    365365    parameter(nbvar3d=78)
    366366    INTEGER var3didin(nbvar3d),missing_var(nbvar3d)
    367     character*13 name_var(1:nbvar3d)
     367    CHARACTER*13 name_var(1:nbvar3d)
    368368
    369369
  • LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/old_1DUTILS_read_interp.h

    r5119 r5135  
    1616      REAL ht_toga(nlev_toga,nt_toga),vt_toga(nlev_toga,nt_toga)
    1717      REAL hq_toga(nlev_toga,nt_toga),vq_toga(nlev_toga,nt_toga)
    18       character*80 fich_toga
     18      CHARACTER*80 fich_toga
    1919
    2020      INTEGER k,ip
     
    7373      INTEGER nlev_sandu,nt_sandu
    7474      REAL ts_sandu(nt_sandu)
    75       character*80 fich_sandu
     75      CHARACTER*80 fich_sandu
    7676
    7777      INTEGER ip
     
    111111      REAL div_astex(nt_astex),ts_astex(nt_astex),ug_astex(nt_astex)
    112112      REAL vg_astex(nt_astex),ufa_astex(nt_astex),vfa_astex(nt_astex)
    113       character*80 fich_astex
     113      CHARACTER*80 fich_astex
    114114
    115115      INTEGER ip
     
    154154      INTEGER ntime,nlevel
    155155      INTEGER l,k
    156       character*80 :: fich_twpice
     156      CHARACTER*80 :: fich_twpice
    157157      real*8 time(ntime)
    158158      real*8 lat, lon, alt, phis
     
    794794      REAL prico(nlev_rico),zrico(nlev_rico)
    795795
    796       character*80 fich_rico
     796      CHARACTER*80 fich_rico
    797797
    798798      INTEGER k,l
     
    10191019      REAL sens(nt_armcu),flat(nt_armcu)
    10201020      REAL adv_theta(nt_armcu),rad_theta(nt_armcu),adv_qt(nt_armcu)
    1021       character*80 fich_armcu
     1021      CHARACTER*80 fich_armcu
    10221022
    10231023      INTEGER ip
     
    21642164
    21652165      INTEGER ntime,nlevel
    2166       character*80 :: fich_fire
     2166      CHARACTER*80 :: fich_fire
    21672167      real*8 zz(nlevel)
    21682168
     
    23782378      INTEGER ntime,nlevel
    23792379      INTEGER l,k
    2380       character*80 :: fich_dice
     2380      CHARACTER*80 :: fich_dice
    23812381      real*8 time(ntime)
    23822382      real*8 zz(nlevel)
     
    27102710      INTEGER ntime,nlevel,nsol
    27112711      INTEGER l,k
    2712       character*80 :: fich_gabls4
     2712      CHARACTER*80 :: fich_gabls4
    27132713      real*8 time(ntime)
    27142714
  • LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/old_1D_decl_cases.h

    r5117 r5135  
    11
    22! Declarations specifiques au cas Toga
    3         character*80 :: fich_toga
     3        CHARACTER*80 :: fich_toga
    44!        integer nlev_prof
    55!        parameter (nlev_prof = 41)
     
    4040!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    4141! Declarations specifiques au cas RICO
    42         character*80 :: fich_rico
     42        CHARACTER*80 :: fich_rico
    4343        INTEGER nlev_rico
    4444
     
    5252!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    5353! Declarations specifiques au cas TWPice
    54         character*80 :: fich_twpice
     54        CHARACTER*80 :: fich_twpice
    5555        INTEGER nlev_twpi, nt_twpi
    5656        parameter (nlev_twpi=40, nt_twpi=215)
     
    8282
    8383!Declarations specifiques au cas FIRE
    84         character*80 :: fich_fire
     84        CHARACTER*80 :: fich_fire
    8585        INTEGER nlev_fire, nt_fire
    8686        parameter (nlev_fire=120, nt_fire=1) 
     
    9494!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    9595!Declarations specifiques au cas GABLS4   (MPL 20141023)
    96         character*80 :: fich_gabls4
     96        CHARACTER*80 :: fich_gabls4
    9797        INTEGER nlev_gabls4, nt_gabls4, nsol_gabls4
    9898        parameter (nlev_gabls4=90, nt_gabls4=37, nsol_gabls4=19) 
     
    128128
    129129!Declarations specifiques au cas DICE     (MPL 02072013)
    130         character*80 :: fich_dice
     130        CHARACTER*80 :: fich_dice
    131131        INTEGER nlev_dice, nt_dice
    132132        parameter (nlev_dice=70, nt_dice=145) 
     
    174174!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    175175! Declarations specifiques au cas GCSSold
    176         character*80 :: fich_gcssold_ctl
    177         character*80 :: fich_gcssold_dat
     176        CHARACTER*80 :: fich_gcssold_ctl
     177        CHARACTER*80 :: fich_gcssold_dat
    178178        real  ht_gcssold(llm),hq_gcssold(llm),hw_gcssold(llm)
    179179        real  hu_gcssold(llm)
     
    189189!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    190190! Declarations specifiques au cas Arm_cu
    191         character*80 :: fich_armcu
     191        CHARACTER*80 :: fich_armcu
    192192
    193193
     
    214214!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    215215! declarations specifiques au cas Sandu
    216         character*80 :: fich_sandu
     216        CHARACTER*80 :: fich_sandu
    217217!        integer nlev_prof
    218218!        parameter (nlev_prof = 41)
     
    252252!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    253253! Declarations specifiques au cas Astex
    254         character*80 :: fich_astex
     254        CHARACTER*80 :: fich_astex
    255255        INTEGER nlev_astex, nt_astex
    256256        parameter (nlev_astex=34, nt_astex=49)
  • LMDZ6/branches/Amaury_dev/libf/phylmd/dyn1d/replay1d.F90

    r5128 r5135  
    66  USE comvert_mod, ONLY: preff, pa
    77  USE ioipsl, ONLY: getin
     8  USE lmdz_iotd, ONLY: iotd_ini
    89
    910  IMPLICIT NONE
  • LMDZ6/branches/Amaury_dev/libf/phylmd/ener_conserv.F90

    r5134 r5135  
    5656REAL ZRCPD
    5757
    58 character*80 abort_message
    59 character*20 :: modname
     58CHARACTER*80 abort_message
     59CHARACTER*20 :: modname
    6060
    6161
  • LMDZ6/branches/Amaury_dev/libf/phylmd/iophys.F90

    r5134 r5135  
    44!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    55
    6       SUBROUTINE iophys_ecrit(nom,lllm,titre,unite,px)
    7 
    8       USE lmdz_phys_para, ONLY: klon_omp, is_mpi_root
    9       USE lmdz_phys_transfert_para, ONLY: gather
    10       USE lmdz_grid_phy, ONLY: klon_glo, nbp_lon, nbp_lat, grid1dto2d_glo
    11       IMPLICIT NONE
    12 
    13 
    14 
    15 !  Ecriture de variables diagnostiques au choix dans la physique
    16 !  dans un fichier NetCDF nomme  'diagfi'. Ces variables peuvent etre
    17 !  3d (ex : temperature), 2d (ex : temperature de surface), ou
    18 !  0d (pour un scalaire qui ne depend que du temps : ex : la longitude
    19 !  solaire)
    20 !  (ou encore 1d, dans le cas de testphys1d, pour sortir une colonne)
    21 !  La periode d'ecriture est donnee par
    22 !  "ecritphy " regle dans le fichier de controle de run :  run.def
    23 
    24 !    writediagfi peut etre appele de n'importe quelle subroutine
    25 !    de la physique, plusieurs fois. L'initialisation et la creation du
    26 !    fichier se fait au tout premier appel.
    27 
    28 ! WARNING : les variables dynamique (u,v,t,q,ps)
    29 !  sauvees par writediagfi avec une
    30 ! date donnee sont legerement differentes que dans le fichier histoire car
    31 ! on ne leur a pas encore ajoute de la dissipation et de la physique !!!
    32 ! IL est  RECOMMANDE d'ajouter les tendance physique a ces variables
    33 ! avant l'ecriture dans diagfi (cf. physiq.F)
    34 
    35 ! Modifs: Aug.2010 Ehouarn: enforce outputs to be real*4
    36 
    37 !  parametres (input) :
    38 !  ----------
    39 !      unit : unite logique du fichier de sortie (toujours la meme)
    40 !      nom  : nom de la variable a sortir (chaine de caracteres)
    41 !      titre: titre de la variable (chaine de caracteres)
    42 !      unite : unite de la variable (chaine de caracteres)
    43 !      px : variable a sortir (real 0, 1, 2, ou 3d)
    44 
    45 !=================================================================
    46 
    47 
    48 ! Arguments on input:
    49       INTEGER lllm
    50       CHARACTER (LEN=*) :: nom,titre,unite
    51       INTEGER imjmax
    52       parameter (imjmax=100000)
    53       REAL px(klon_omp,lllm)
    54       REAL xglo(klon_glo,lllm)
    55       REAL zx(nbp_lon,nbp_lat,lllm)
    56 
    57 
    58 
    59       CALL Gather(px,xglo)
    60 !$OMP MASTER
    61       IF (is_mpi_root) THEN       
    62         CALL Grid1Dto2D_glo(xglo,zx)
    63         CALL iotd_ecrit(nom,lllm,titre,unite,zx)
    64       ENDIF
    65 !$OMP END MASTER
    66 
    67       RETURN
    68       end
     6SUBROUTINE iophys_ecrit(nom, lllm, titre, unite, px)
     7
     8  USE lmdz_phys_para, ONLY: klon_omp, is_mpi_root
     9  USE lmdz_phys_transfert_para, ONLY: gather
     10  USE lmdz_grid_phy, ONLY: klon_glo, nbp_lon, nbp_lat, grid1dto2d_glo
     11  USE lmdz_iotd, ONLY: iotd_ecrit
     12
     13
     14  IMPLICIT NONE
     15
     16
     17
     18  !  Ecriture de variables diagnostiques au choix dans la physique
     19  !  dans un fichier NetCDF nomme  'diagfi'. Ces variables peuvent etre
     20  !  3d (ex : temperature), 2d (ex : temperature de surface), ou
     21  !  0d (pour un scalaire qui ne depend que du temps : ex : la longitude
     22  !  solaire)
     23  !  (ou encore 1d, dans le cas de testphys1d, pour sortir une colonne)
     24  !  La periode d'ecriture est donnee par
     25  !  "ecritphy " regle dans le fichier de controle de run :  run.def
     26
     27  !    writediagfi peut etre appele de n'importe quelle subroutine
     28  !    de la physique, plusieurs fois. L'initialisation et la creation du
     29  !    fichier se fait au tout premier appel.
     30
     31  ! WARNING : les variables dynamique (u,v,t,q,ps)
     32  !  sauvees par writediagfi avec une
     33  ! date donnee sont legerement differentes que dans le fichier histoire car
     34  ! on ne leur a pas encore ajoute de la dissipation et de la physique !!!
     35  ! IL est  RECOMMANDE d'ajouter les tendance physique a ces variables
     36  ! avant l'ecriture dans diagfi (cf. physiq.F)
     37
     38  ! Modifs: Aug.2010 Ehouarn: enforce outputs to be real*4
     39
     40  !  parametres (input) :
     41  !  ----------
     42  !      unit : unite logique du fichier de sortie (toujours la meme)
     43  !      nom  : nom de la variable a sortir (chaine de caracteres)
     44  !      titre: titre de la variable (chaine de caracteres)
     45  !      unite : unite de la variable (chaine de caracteres)
     46  !      px : variable a sortir (real 0, 1, 2, ou 3d)
     47
     48  !=================================================================
     49
     50
     51  ! Arguments on input:
     52  INTEGER lllm
     53  CHARACTER (LEN = *) :: nom, titre, unite
     54  INTEGER imjmax
     55  parameter (imjmax = 100000)
     56  REAL px(klon_omp, lllm)
     57  REAL xglo(klon_glo, lllm)
     58  REAL zx(nbp_lon, nbp_lat, lllm)
     59
     60  CALL Gather(px, xglo)
     61  !$OMP MASTER
     62  IF (is_mpi_root) THEN
     63    CALL Grid1Dto2D_glo(xglo, zx)
     64    CALL iotd_ecrit(nom, lllm, titre, unite, zx)
     65  ENDIF
     66  !$OMP END MASTER
     67
     68  RETURN
     69end
    6970
    7071!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     
    7475
    7576
    76     SUBROUTINE iophys_ecrit_index(nom,lllm,titre,unite,knon,knindex,px)
    77 
    78     USE lmdz_phys_para, ONLY: klon_omp
    79     USE dimphy, ONLY: klon
    80     USE lmdz_grid_phy, ONLY: klon_glo
    81     USE lmdz_abort_physic, ONLY: abort_physic
    82     IMPLICIT NONE
    83 
    84 ! This SUBROUTINE returns the sea surface temperature already read from limit.nc
    85 
    86 ! Arguments on input:
    87     INTEGER lllm
    88     CHARACTER (len=*) :: nom,titre,unite
    89     REAL px(klon_omp,lllm)
    90     INTEGER, INTENT(IN)                  :: knon     ! nomber of points on compressed grid
    91     INTEGER, DIMENSION(klon), INTENT(IN) :: knindex  ! grid point number for compressed grid
    92     REAL, DIMENSION(klon,lllm) :: varout
    93 
    94     INTEGER :: i,l
    95 
    96     IF (klon/=klon_omp) THEN
    97       PRINT*,'klon, klon_omp',klon,klon_omp
    98       CALL abort_physic('iophys_ecrit','probleme de dimension parallele',1)
     77SUBROUTINE iophys_ecrit_index(nom, lllm, titre, unite, knon, knindex, px)
     78
     79  USE lmdz_phys_para, ONLY: klon_omp
     80  USE dimphy, ONLY: klon
     81  USE lmdz_grid_phy, ONLY: klon_glo
     82  USE lmdz_abort_physic, ONLY: abort_physic
     83  IMPLICIT NONE
     84
     85  ! This SUBROUTINE returns the sea surface temperature already read from limit.nc
     86
     87  ! Arguments on input:
     88  INTEGER lllm
     89  CHARACTER (len = *) :: nom, titre, unite
     90  REAL px(klon_omp, lllm)
     91  INTEGER, INTENT(IN) :: knon     ! nomber of points on compressed grid
     92  INTEGER, DIMENSION(klon), INTENT(IN) :: knindex  ! grid point number for compressed grid
     93  REAL, DIMENSION(klon, lllm) :: varout
     94
     95  INTEGER :: i, l
     96
     97  IF (klon/=klon_omp) THEN
     98    PRINT*, 'klon, klon_omp', klon, klon_omp
     99    CALL abort_physic('iophys_ecrit', 'probleme de dimension parallele', 1)
     100  ENDIF
     101
     102  varout(1:klon, 1:lllm) = 0.
     103  DO l = 1, lllm
     104    DO i = 1, knon
     105      varout(knindex(i), l) = px(i, l)
     106    END DO
     107  END DO
     108  CALL iophys_ecrit(nom, lllm, titre, unite, varout)
     109
     110END SUBROUTINE iophys_ecrit_index
     111
     112!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
     113SUBROUTINE iophys_ini(timestep)
     114  USE lmdz_phys_para, ONLY: is_mpi_root
     115  USE lmdz_vertical_layers, ONLY: presnivs
     116  USE lmdz_regular_lonlat, ONLY: lon_reg, lat_reg
     117  USE dimphy, ONLY: klev
     118  USE lmdz_grid_phy, ONLY: klon_glo
     119  USE time_phylmdz_mod, ONLY: annee_ref, day_ref, day_ini
     120  USE phys_cal_mod, ONLY: calend
     121  USE lmdz_iotd, ONLY: iotd_ini
     122
     123  IMPLICIT NONE
     124
     125  include "YOMCST.h"
     126  !=======================================================================
     127
     128  !   Auteur:  L. Fairhead  ,  P. Le Van, Y. Wanherdrick, F. Forget
     129  !   -------
     130
     131  !   Objet:
     132  !   ------
     133
     134  !   'Initialize' the diagfi.nc file: write down dimensions as well
     135  !   as time-independent fields (e.g: geopotential, mesh area, ...)
     136
     137  !=======================================================================
     138  !-----------------------------------------------------------------------
     139  !   Declarations:
     140  !   -------------
     141
     142  REAL pi
     143  INTEGER nlat_eff
     144  INTEGER jour0, mois0, an0
     145  REAL timestep, t0
     146  CHARACTER(len = 20) :: calendrier
     147
     148  !   Arguments:
     149  !   ----------
     150
     151
     152  !$OMP MASTER
     153  IF (is_mpi_root) THEN
     154
     155    ! Bidouille pour gerer le fait que lat_reg contient deux latitudes
     156    ! en version uni-dimensionnelle (chose qui pourrait être résolue
     157    ! par ailleurs)
     158    IF (klon_glo==1) THEN
     159      nlat_eff = 1
     160    ELSE
     161      nlat_eff = size(lat_reg)
    99162    ENDIF
    100 
    101     varout(1:klon,1:lllm)=0.
    102     DO l = 1, lllm
    103     DO i = 1, knon
    104        varout(knindex(i),l) = px(i,l)
    105     END DO
    106     END DO
    107     CALL iophys_ecrit(nom,lllm,titre,unite,varout)
    108 
    109   END SUBROUTINE iophys_ecrit_index
    110 
    111 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    112       SUBROUTINE iophys_ini(timestep)
    113       USE lmdz_phys_para, ONLY: is_mpi_root
    114       USE lmdz_vertical_layers, ONLY: presnivs
    115       USE lmdz_regular_lonlat, ONLY: lon_reg, lat_reg
    116       USE dimphy, ONLY: klev
    117       USE lmdz_grid_phy, ONLY: klon_glo
    118       USE time_phylmdz_mod, ONLY: annee_ref, day_ref, day_ini
    119       USE phys_cal_mod, ONLY: calend
    120 
    121       IMPLICIT NONE
    122 
    123       include "YOMCST.h"
    124 !=======================================================================
    125 
    126 !   Auteur:  L. Fairhead  ,  P. Le Van, Y. Wanherdrick, F. Forget
    127 !   -------
    128 
    129 !   Objet:
    130 !   ------
    131 
    132 !   'Initialize' the diagfi.nc file: write down dimensions as well
    133 !   as time-independent fields (e.g: geopotential, mesh area, ...)
    134 
    135 !=======================================================================
    136 !-----------------------------------------------------------------------
    137 !   Declarations:
    138 !   -------------
    139 
    140 REAL pi
    141 INTEGER nlat_eff
    142 INTEGER jour0,mois0,an0
    143 REAL timestep,t0
    144 CHARACTER(len=20) :: calendrier
    145 
    146 !   Arguments:
    147 !   ----------
    148 
    149 
    150 !$OMP MASTER
    151     IF (is_mpi_root) THEN       
    152 
    153 ! Bidouille pour gerer le fait que lat_reg contient deux latitudes
    154 ! en version uni-dimensionnelle (chose qui pourrait être résolue
    155 ! par ailleurs)
    156 IF (klon_glo==1) THEN
    157    nlat_eff=1
    158 ELSE
    159    nlat_eff=size(lat_reg)
    160 ENDIF
    161 pi=2.*asin(1.)
    162 
    163 ! PRINT*,'day_ini,annee_ref,day_ref',day_ini,annee_ref,day_ref
    164 ! PRINT*,'jD_ref,jH_ref,start_time, calend',jD_ref,jH_ref,start_time, calend
    165 
    166 ! Attention : les lignes ci dessous supposent un calendrier en 360 jours
    167 ! Pourrait être retravaillé
    168 
    169 jour0=day_ref-30*(day_ref/30)
    170 mois0=day_ref/30+1
    171 an0=annee_ref
    172 !FH BIZARE QUAND 1D ...  t0=(day_ini-1)*RDAY
    173 t0=0.
    174 calendrier=calend
    175 IF ( calendrier == "earth_360d" ) calendrier="360_day"
    176 
    177 PRINT*,'iophys_ini annee_ref day_ref',annee_ref,day_ref,day_ini,calend,t0
    178 
    179 
    180 CALL iotd_ini('phys.nc', &
    181 size(lon_reg),nlat_eff,klev,lon_reg(:)*180./pi,lat_reg*180./pi,presnivs,jour0,mois0,an0,t0,timestep,calendrier)
    182     ENDIF
    183 !$OMP END MASTER
    184 
    185       END
     163    pi = 2. * asin(1.)
     164
     165    ! PRINT*,'day_ini,annee_ref,day_ref',day_ini,annee_ref,day_ref
     166    ! PRINT*,'jD_ref,jH_ref,start_time, calend',jD_ref,jH_ref,start_time, calend
     167
     168    ! Attention : les lignes ci dessous supposent un calendrier en 360 jours
     169    ! Pourrait être retravaillé
     170
     171    jour0 = day_ref - 30 * (day_ref / 30)
     172    mois0 = day_ref / 30 + 1
     173    an0 = annee_ref
     174    !FH BIZARE QUAND 1D ...  t0=(day_ini-1)*RDAY
     175    t0 = 0.
     176    calendrier = calend
     177    IF (calendrier == "earth_360d") calendrier = "360_day"
     178
     179    PRINT*, 'iophys_ini annee_ref day_ref', annee_ref, day_ref, day_ini, calend, t0
     180
     181    CALL iotd_ini('phys.nc', &
     182            size(lon_reg), nlat_eff, klev, lon_reg(:) * 180. / pi, lat_reg * 180. / pi, presnivs, jour0, mois0, an0, t0, timestep, calendrier)
     183  ENDIF
     184  !$OMP END MASTER
     185
     186END
    186187
    187188#ifdef und
     
    214215!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
    215216
    216       SUBROUTINE iotd_ecrit_seq(nom,lllm,titre,unite,px)
    217 
    218       IMPLICIT NONE
    219 
    220 ! px arrive
    221 
    222       INCLUDE "iotd.h"
    223 
    224 
    225 ! Arguments on input:
    226       INTEGER lllm
    227       CHARACTER (LEN=*) :: nom,titre,unite
    228       INTEGER imjmax
    229       parameter (imjmax=100000)
    230       REAL px(imjmax*lllm)
    231       REAL, ALLOCATABLE :: zx(:,:,:)
    232       INTEGER i,j,l,ijl
    233 
    234       allocate(zx(imax,jmax,lllm))
    235 
    236       ijl=0
    237       do l=1,lllm
    238          ! Pole nord
    239          ijl=ijl+1
    240          do i=1,imax
    241             zx(i,1,l)=px(ijl)
    242          enddo
    243          ! Grille normale
    244          do j=2,jmax-1
    245             do i=1,imax
    246                ijl=ijl+1
    247                zx(i,j,l)=px(ijl)
    248             enddo
    249          enddo
    250          ! Pole sud
    251          IF ( jmax > 1 ) THEN
    252             ijl=ijl+1
    253             do i=1,imax
    254                zx(i,jmax,l)=px(ijl)
    255             enddo
    256          endif
     217SUBROUTINE iotd_ecrit_seq(nom, lllm, titre, unite, px)
     218  USE lmdz_iotd, ONLY: iotd_ecrit, imax, jmax
     219
     220  IMPLICIT NONE
     221
     222  ! Arguments on input:
     223  INTEGER lllm
     224  CHARACTER (LEN = *) :: nom, titre, unite
     225  INTEGER imjmax
     226  parameter (imjmax = 100000)
     227  REAL px(imjmax * lllm)
     228  REAL, ALLOCATABLE :: zx(:, :, :)
     229  INTEGER i, j, l, ijl
     230
     231  allocate(zx(imax, jmax, lllm))
     232
     233  ijl = 0
     234  do l = 1, lllm
     235    ! Pole nord
     236    ijl = ijl + 1
     237    do i = 1, imax
     238      zx(i, 1, l) = px(ijl)
     239    enddo
     240    ! Grille normale
     241    do j = 2, jmax - 1
     242      do i = 1, imax
     243        ijl = ijl + 1
     244        zx(i, j, l) = px(ijl)
    257245      enddo
    258 
    259       CALL iotd_ecrit(nom,lllm,titre,unite,zx)
    260       deallocate(zx)
    261 
    262       RETURN
    263       END
    264 
     246    enddo
     247    ! Pole sud
     248    IF (jmax > 1) THEN
     249      ijl = ijl + 1
     250      do i = 1, imax
     251        zx(i, jmax, l) = px(ijl)
     252      enddo
     253    endif
     254  enddo
     255
     256  CALL iotd_ecrit(nom, lllm, titre, unite, zx)
     257  deallocate(zx)
     258
     259  RETURN
     260END
     261
  • LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_iotd.f90

    r5131 r5135  
    1010!=======================================================================
    1111
    12       INTEGER imax,jmax,lmax,nid
    13       INTEGER dim_coord(4)
    14       REAL iotd_ts,iotd_t0
    15       INTEGER :: n_names_iotd_def
    16       character*20, DIMENSION(200) :: names_iotd_def
    17       character*20 :: un_nom
    18 
    19       common/iotd_ca/imax,jmax,lmax,nid,dim_coord,iotd_t0,iotd_ts
    20       common/iotd_cb/n_names_iotd_def,names_iotd_def
    21 !$OMP THREADPRIVATE(/iotd_ca/)
    22 !$OMP THREADPRIVATE(/iotd_cb/)
     12MODULE lmdz_iotd
     13  IMPLICIT NONE; PRIVATE
     14  PUBLIC iotd_fin, iotd_ecrit, iotd_ini, imax, jmax
     15
     16  INTEGER imax, jmax, lmax, nid
     17  INTEGER dim_coord(4)
     18  REAL iotd_ts, iotd_t0
     19  INTEGER :: n_names_iotd_def
     20  CHARACTER*20, DIMENSION(200) :: names_iotd_def
     21  CHARACTER*20 :: un_nom
     22
     23  !$OMP THREADPRIVATE(imax, jmax, lmax, nid, dim_coord, iotd_t0, iotd_ts)
     24  !$OMP THREADPRIVATE(n_names_iotd_def, names_iotd_def)
     25CONTAINS
     26  SUBROUTINE iotd_fin
     27    USE netcdf, ONLY: nf90_close
     28    IMPLICIT NONE
     29    INTEGER ierr
     30
     31    ierr = nf90_close(nid)
     32  END SUBROUTINE iotd_fin
     33
     34  SUBROUTINE iotd_ecrit(nom, llm, titre, unite, px)
     35    !-----------------------------------------------------------------------
     36    !  ----------
     37    !      nom  : nom de la variable a sortir (chaine de caracteres)
     38    !      llm  : nombre de couches
     39    !      titre: titre de la variable (chaine de caracteres)
     40    !      unite : unite de la variable (chaine de caracteres)
     41    !      px : variable a sortir
     42    !=================================================================
     43
     44    USE netcdf, ONLY: nf90_put_var, nf90_inq_varid, nf90_enddef, nf90_redef, nf90_sync, nf90_noerr, &
     45            nf90_float, nf90_def_var
     46    IMPLICIT NONE
     47
     48    ! Arguments on input:
     49    INTEGER llm
     50    CHARACTER (LEN = *) :: nom, titre, unite
     51    INTEGER imjmax
     52    parameter (imjmax = 100000)
     53    REAL px(imjmax * llm)
     54
     55    ! Local variables:
     56
     57    real(kind = 4) date
     58    real(kind = 4) zx(imjmax * llm)
     59
     60    INTEGER ierr, ndim, dim_cc(4)
     61    INTEGER iq
     62    INTEGER i, j, l
     63
     64    INTEGER zitau
     65    CHARACTER firstnom*20
     66    SAVE firstnom
     67    SAVE zitau
     68    SAVE date
     69    DATA firstnom /'1234567890'/
     70    DATA zitau /0/
     71
     72    ! Ajouts
     73    INTEGER, save :: ntime = 0
     74    INTEGER :: idim, varid
     75    CHARACTER (LEN = 50) :: fichnom
     76    INTEGER, DIMENSION(4) :: id
     77    INTEGER, DIMENSION(4) :: edges, corner
     78
     79    IF (n_names_iotd_def>0 .and..not.any(names_iotd_def==nom)) RETURN
     80    !***************************************************************
     81    ! Initialisation of 'firstnom' and create/open the "diagfi.nc" NetCDF file
     82    ! ------------------------------------------------------------------------
     83    ! (Au tout premier appel de la SUBROUTINE durant le run.)
     84
     85
     86    !--------------------------------------------------------
     87    ! Write the variables to output file if it's time to do so
     88    !--------------------------------------------------------
     89
     90
     91    ! Compute/write/extend 'time' coordinate (date given in days)
     92    ! (done every "first call" (at given time level) to writediagfi)
     93    ! Note: date is incremented as 1 step ahead of physics time
     94    !--------------------------------------------------------
     95
     96    zx(1:imax * jmax * llm) = px(1:imax * jmax * llm)
     97    IF (firstnom =='1234567890') THEN
     98      firstnom = nom
     99    endif
     100
     101    !PRINT*,'nom ',nom,firstnom
     102
     103    !! Quand on tombe sur la premiere variable on ajoute un pas de temps
     104    IF (nom==firstnom) THEN
     105      ! We have identified a "first call" (at given date)
     106
     107      ntime = ntime + 1 ! increment # of stored time steps
     108
     109      !!          PRINT*,'ntime ',ntime
     110      date = iotd_t0 + ntime * iotd_ts
     111      !PRINT*,'iotd_ecrit ',iotd_ts,ntime, date
     112      !          date= float (zitau +1)/float (day_step)
     113
     114      ! compute corresponding date (in days and fractions thereof)
     115      ! Get NetCDF ID of 'time' variable
     116
     117      ierr = nf90_sync(nid)
     118
     119      ierr = nf90_inq_varid(nid, "time", varid)
     120      ! Write (append) the new date to the 'time' array
     121
     122      ierr = nf90_put_var(nid, varid, date, [ntime])
     123
     124      !          PRINT*,'date ',date,ierr,nid
     125      !        PRINT*,'IOTD Date ,varid,nid,ntime,date',varid,nid,ntime,date
     126
     127      IF (ierr/=nf90_noerr) THEN
     128        WRITE(*, *) "***** PUT_VAR matter in writediagfi_nc"
     129        WRITE(*, *) "***** with time"
     130        WRITE(*, *) 'ierr=', ierr
     131      endif
     132
     133      !          WRITE(6,*)'WRITEDIAGFI: date= ', date
     134    end if ! of if (nom.EQ.firstnom)
     135
     136
     137    !Case of a 3D variable
     138    !---------------------
     139    IF (llm==lmax) THEN
     140      ndim = 4
     141      corner(1) = 1
     142      corner(2) = 1
     143      corner(3) = 1
     144      corner(4) = ntime
     145      edges(1) = imax
     146      edges(2) = jmax
     147      edges(3) = llm
     148      edges(4) = 1
     149      dim_cc = dim_coord
     150
     151
     152      !Case of a 2D variable
     153      !---------------------
     154
     155    ELSE IF (llm==1) THEN
     156      ndim = 3
     157      corner(1) = 1
     158      corner(2) = 1
     159      corner(3) = ntime
     160      corner(4) = 1
     161      edges(1) = imax
     162      edges(2) = jmax
     163      edges(3) = 1
     164      edges(4) = 1
     165      dim_cc(1:2) = dim_coord(1:2)
     166      dim_cc(3) = dim_coord(4)
     167
     168    END IF ! of if llm=1 ou llm
     169
     170    ! AU premier pas de temps, on crée les variables
     171    !-----------------------------------------------
     172
     173    IF (ntime==1) THEN
     174      ierr = nf90_redef (nid)
     175      ierr = nf90_def_var(nid, nom, nf90_float, dim_cc, varid)
     176      !PRINT*,'DEF ',nom,nid,varid
     177      ierr = nf90_enddef(nid)
     178    ELSE
     179      ierr = nf90_inq_varid(nid, nom, varid)
     180      !PRINT*,'INQ ',nom,nid,varid
     181      ! Commandes pour recuperer automatiquement les coordonnees
     182      !             ierr= nf90_inq_dimid(nid,"longitude",id(1))
     183    END IF
     184
     185    ierr = nf90_put_var(nid, varid, zx, corner, edges)
     186
     187    IF (ierr/=nf90_noerr) THEN
     188      WRITE(*, *) "***** PUT_VAR problem in writediagfi"
     189      WRITE(*, *) "***** with ", nom
     190      WRITE(*, *) 'ierr=', ierr
     191    endif
     192
     193  END
     194
     195  SUBROUTINE iotd_ini(fichnom, iim, jjm, llm, prlon, prlat, pcoordv, jour0, mois0, an0, t0, timestep, calendrier)
     196    USE netcdf, ONLY: nf90_enddef, nf90_put_att, nf90_float, nf90_def_var, nf90_redef, &
     197            nf90_global, nf90_def_dim, nf90_create, nf90_clobber, nf90_unlimited, nf90_put_var
     198    IMPLICIT NONE
     199
     200    INTEGER iim, jjm, llm
     201    REAL prlon(iim), prlat(jjm), pcoordv(llm), timestep, t0
     202    INTEGER id_FOCE
     203    INTEGER jour0, mois0, an0
     204    CHARACTER*(*) calendrier
     205
     206    INTEGER corner(4), edges(4), ndim
     207    real  px(1000)
     208    CHARACTER (LEN = 10) :: nom
     209    real(kind = 4) rlon(iim), rlat(jjm), coordv(llm)
     210
     211    !   Local:
     212    !   ------
     213    CHARACTER*3, DIMENSION(12) :: cmois = (/'JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'/)
     214    CHARACTER*10 date0
     215    CHARACTER*11 date0b
     216
     217    INTEGER :: ierr
     218
     219    INTEGER :: nvarid
     220    INTEGER, DIMENSION(2) :: id
     221
     222    CHARACTER*(*) fichnom
     223
     224    REAL pi
     225
     226    iotd_ts = timestep
     227    iotd_t0 = t0
     228    PRINT*, 'iotd_ini, ', timestep, iotd_ts
     229    imax = iim
     230    jmax = jjm
     231    lmax = llm
     232    ! Utile pour passer en real*4 pour les ecritures
     233    rlon = prlon
     234    rlat = prlat
     235    coordv = pcoordv
     236
     237
     238    !-----------------------------------------------------------------------
     239    ! Possibilité de spécifier une liste de variables à sortir
     240    ! dans iotd.def
     241    ! Si iotd.def existe et est non vide,
     242    ! seules les variables faisant à la fois l'objet d'un CALL iotd_ecrit
     243    ! et étant spécifiées dans iotd.def sont sorties.
     244    ! Sinon, toutes les variables faisant l'objet d'un CALL iotd_ecrit
     245    ! sont sorties
     246    !-----------------------------------------------------------------------
     247    n_names_iotd_def = 0
     248    open(99, file = 'iotd.def', form = 'formatted', status = 'old', iostat = ierr)
     249    IF (ierr==0) THEN
     250      ierr = 0
     251      do while (ierr==0)
     252        read(99, *, iostat = ierr) un_nom
     253        IF (ierr==0) THEN
     254          n_names_iotd_def = n_names_iotd_def + 1
     255          names_iotd_def(n_names_iotd_def) = un_nom
     256        endif
     257      enddo
     258    endif
     259    PRINT*, n_names_iotd_def, names_iotd_def(1:n_names_iotd_def)
     260    close(99)
     261
     262    pi = 2. * asin(1.)
     263
     264    ! Define dimensions
     265
     266    ! Create the NetCDF file
     267    ierr = nf90_create(fichnom, nf90_clobber, nid)
     268    ierr = nf90_def_dim(nid, "lon", iim, dim_coord(1))
     269    ierr = nf90_def_dim(nid, "lat", jjm, dim_coord(2))
     270    ierr = nf90_def_dim(nid, "lev", llm, dim_coord(3))
     271    ierr = nf90_def_dim(nid, "time", nf90_unlimited, dim_coord(4))
     272    ierr = nf90_put_att(nid, nf90_global, 'Conventions', "CF-1.1")
     273    !ierr = nf90_put_att(nid,nf90_global,'file_name',TRIM(fname))
     274    ierr = nf90_enddef(nid)
     275
     276    ! Switch out of NetCDF Define mode
     277
     278    ierr = nf90_enddef(nid)
     279
     280    !  Contol parameters for this run
     281    ! ---- longitude -----------
     282
     283    ierr = nf90_redef(nid)
     284    ierr = nf90_def_var(nid, "lon", nf90_float, dim_coord(1), nvarid)
     285    ierr = nf90_put_att(nid, nvarid, 'axis', 'X')
     286    ierr = nf90_put_att(nid, nvarid, 'units', "degrees_east")
     287    ierr = nf90_enddef(nid)
     288    ierr = nf90_put_var(nid, nvarid, rlon)
     289    PRINT*, ierr
     290
     291    ! ---- latitude ------------
     292    ierr = nf90_redef(nid)
     293    ierr = nf90_def_var(nid, "lat", nf90_float, dim_coord(2), nvarid)
     294    ierr = nf90_put_att(nid, nvarid, 'axis', 'Y')
     295    ierr = nf90_put_att(nid, nvarid, 'units', "degrees_north")
     296    ierr = nf90_enddef(nid)
     297    ierr = nf90_put_var(nid, nvarid, rlat)
     298
     299    ! ---- vertical ------------
     300    ierr = nf90_redef(nid)
     301    ierr = nf90_def_var(nid, "lev", nf90_float, dim_coord(3), nvarid)
     302    ierr = nf90_put_att(nid, nvarid, "long_name", "vert level")
     303    IF (coordv(2)>coordv(1)) THEN
     304      ierr = nf90_put_att(nid, nvarid, "long_name", "pseudo-alt")
     305      ierr = nf90_put_att(nid, nvarid, 'positive', "up")
     306    else
     307      ierr = nf90_put_att(nid, nvarid, "long_name", "pressure")
     308      ierr = nf90_put_att(nid, nvarid, 'positive', "down")
     309    endif
     310    ierr = nf90_enddef(nid)
     311    ierr = nf90_put_var(nid, nvarid, coordv)
     312
     313    ! ---- time ----------------
     314    ierr = nf90_redef(nid)
     315    ! Define the 'time' variable
     316    ierr = nf90_def_var(nid, "time", nf90_float, dim_coord(4), nvarid)
     317    !     ! Add attributes
     318    ierr = nf90_put_att(nid, nvarid, 'axis', 'T')
     319    ierr = nf90_put_att(nid, nvarid, 'standard_name', 'time')
     320    WRITE(date0, '(i4.4,"-",i2.2,"-",i2.2)') an0, mois0, jour0
     321    ierr = nf90_put_att(nid, nvarid, 'units', &
     322            "seconds since " // date0 // " 00:00:00")
     323    ierr = nf90_put_att(nid, nvarid, 'calendar', calendrier)
     324    !ierr = nf90_put_att(nid,nvarid,'calendar','360d')
     325    ierr = nf90_put_att(nid, nvarid, 'title', 'Time')
     326    ierr = nf90_put_att(nid, nvarid, 'long_name', 'Time axis')
     327    WRITE(date0b, '(i4.4,"-",a3,"-",i2.2)') an0, cmois(mois0), jour0
     328    ierr = nf90_put_att(nid, nvarid, 'time_origin', &
     329            date0b // ' 00:00:00')
     330    ierr = nf90_enddef(nid)
     331
     332  END
     333
     334END MODULE lmdz_iotd
  • LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_simu_airs.f90

    r5128 r5135  
    10861086
    10871087    REAL, INTENT(IN) :: x, bsup, binf
    1088     character*14, INTENT(IN) :: sx
     1088    CHARACTER*14, INTENT(IN) :: sx
    10891089    CHARACTER (len = 50) :: modname = 'simu_airs.test_bornes'
    10901090    CHARACTER (len = 160) :: abort_message
  • LMDZ6/branches/Amaury_dev/libf/phylmd/lmdz_thermcell_main.F90

    r5123 r5135  
    827827    INTEGER, INTENT(IN), DIMENSION(ngrid) :: long
    828828    REAL seuil
    829     character*21 comment
     829    CHARACTER*21 comment
    830830
    831831    seuil = 0.25
  • LMDZ6/branches/Amaury_dev/libf/phylmdiso/isotopes_routines_mod.F90

    r5133 r5135  
    1574815748      INTEGER ixt,i,k,nsrf
    1574915749
    15750 !      character*50 text
     15750!      CHARACTER*50 text
    1575115751
    1575215752!      WRITE(*,*) 'phyisoetat0 20: fichnom=',fichnom
     
    1593115931        REAL deltaD_snow_fall_O18,deltaD_rain_fall_O18
    1593215932        REAL alpha(niso),kcin(niso)
    15933 !      character*50 text
     15933!      CHARACTER*50 text
    1593415934       
    1593515935      ! initialisation des isotopes
  • LMDZ6/branches/Amaury_dev/libf/phylmdiso/isotopes_verif_mod.F90

    r5132 r5135  
    144144        ! input:
    145145        REAL a, b
    146         character*(*) err_msg ! message d''erreur à afficher
     146        CHARACTER*(*) err_msg ! message d''erreur à afficher
    147147
    148148        ! local
     
    173173        ! input:
    174174        REAL a, b
    175         character*(*) err_msg ! message d''erreur à afficher
     175        CHARACTER*(*) err_msg ! message d''erreur à afficher
    176176        !ouptut
    177177        INTEGER iso_verif_egalite_nostop
     
    204204        ! input:
    205205        REAL R
    206         character*(*) err_msg ! message d''erreur à afficher
     206        CHARACTER*(*) err_msg ! message d''erreur à afficher
    207207        !real deltaD
    208208        !integer iso_verif_aberrant_choix_nostop
     
    234234        ! input:
    235235        REAL R
    236         character*(*) err_msg ! message d''erreur à afficher
     236        CHARACTER*(*) err_msg ! message d''erreur à afficher
    237237        !real deltaD
    238238
     
    269269        ! input:
    270270        REAL xt,q,qmin,deltaDmax
    271         character*(*) err_msg ! message d''erreur à afficher
     271        CHARACTER*(*) err_msg ! message d''erreur à afficher
    272272        !real deltaD
    273273
     
    303303        ! input:
    304304        REAL R
    305         character*(*) err_msg ! message d''erreur à afficher
     305        CHARACTER*(*) err_msg ! message d''erreur à afficher
    306306        INTEGER iso_verif_aberrant_nostop ! output: 1 si erreur, 0 sinon
    307307        !real deltaD
     
    334334        ! input:
    335335        REAL R
    336         character*(*) err_msg ! message d''erreur à afficher
     336        CHARACTER*(*) err_msg ! message d''erreur à afficher
    337337        INTEGER iso_verif_aberrant_enc_nostop ! output: 1 si erreur, 0 sinon
    338338        !real deltaD
     
    369369        ! input:
    370370        REAL xt,q,qmin,deltaDmax
    371         character*(*) err_msg ! message d''erreur à afficher
     371        CHARACTER*(*) err_msg ! message d''erreur à afficher
    372372        ! output
    373373        INTEGER iso_verif_aberrant_choix_nostop
     
    430430        ! input:
    431431        REAL xt,q,qmin,deltaDmax
    432         character*(*) err_msg ! message d''erreur à afficher
     432        CHARACTER*(*) err_msg ! message d''erreur à afficher
    433433        ! output
    434434        INTEGER iso_verif_aberrant_enc_choix_nostop
     
    474474        ! input:
    475475        REAL R17,R18
    476         character*(*) err_msg ! message d''erreur à afficher
     476        CHARACTER*(*) err_msg ! message d''erreur à afficher
    477477        !real o17excess
    478478
     
    506506        ! input:
    507507        REAL R17,R18
    508         character*(*) err_msg ! message d''erreur à afficher
     508        CHARACTER*(*) err_msg ! message d''erreur à afficher
    509509        !local
    510510        !real o17excess
     
    545545        ! input:
    546546        REAL x
    547         character*(*) err_msg ! message d''erreur à afficher
     547        CHARACTER*(*) err_msg ! message d''erreur à afficher
    548548
    549549        ! locals
     
    570570        ! input:
    571571        REAL x
    572         character*(*) err_msg ! message d''erreur à afficher
     572        CHARACTER*(*) err_msg ! message d''erreur à afficher
    573573
    574574        ! output
     
    601601          INTEGER n,m,ni
    602602        REAL x(ni,n,m)
    603         character*(*) err_msg ! message d''erreur à afficher
     603        CHARACTER*(*) err_msg ! message d''erreur à afficher
    604604
    605605        ! output
     
    640640          INTEGER n,ni
    641641        REAL x(ni,n)
    642         character*(*) err_msg ! message d''erreur à afficher
     642        CHARACTER*(*) err_msg ! message d''erreur à afficher
    643643
    644644        ! output
     
    680680        REAL a, b
    681681        REAL erabs,errel !erreur absolue et relative
    682         character*(*) err_msg ! message d''erreur à afficher
     682        CHARACTER*(*) err_msg ! message d''erreur à afficher
    683683
    684684        ! locals
     
    709709        REAL a, b
    710710        REAL erabs,errel !erreur absolue et relative
    711         character*(*) err_msg ! message d''erreur à afficher
     711        CHARACTER*(*) err_msg ! message d''erreur à afficher
    712712
    713713        ! output
     
    762762        ! input:
    763763        REAL x
    764         character*(*) err_msg ! message d''erreur à afficher
     764        CHARACTER*(*) err_msg ! message d''erreur à afficher
    765765
    766766        ! locals
     
    790790        INTEGER n
    791791        REAL x(n)
    792         character*(*) err_msg ! message d''erreur à afficher
     792        CHARACTER*(*) err_msg ! message d''erreur à afficher
    793793
    794794        ! locals
     
    821821        REAL x(n)
    822822        REAL ridic
    823         character*(*) err_msg ! message d''erreur à afficher
     823        CHARACTER*(*) err_msg ! message d''erreur à afficher
    824824        ! locals
    825825        INTEGER i
     
    852852        ! input:
    853853        REAL x
    854         character*(*) err_msg ! message d''erreur à afficher
     854        CHARACTER*(*) err_msg ! message d''erreur à afficher
    855855
    856856        ! locals
     
    873873        ! input:
    874874        REAL x
    875         character*(*) err_msg ! message d''erreur à afficher*
     875        CHARACTER*(*) err_msg ! message d''erreur à afficher*
    876876
    877877        ! output
     
    901901        REAL x
    902902        REAL ridic
    903         character*(*) err_msg ! message d''erreur à afficher
     903        CHARACTER*(*) err_msg ! message d''erreur à afficher
    904904
    905905        ! locals
     
    929929        ! input:
    930930        REAL x
    931         character*(*) err_msg ! message d''erreur à afficher
     931        CHARACTER*(*) err_msg ! message d''erreur à afficher
    932932
    933933        ! output
     
    960960        REAL x
    961961        REAL ridic
    962         character*(*) err_msg ! message d''erreur à afficher
     962        CHARACTER*(*) err_msg ! message d''erreur à afficher
    963963
    964964        ! output
     
    997997        ! input:
    998998        REAL Rd,Ro
    999         character*(*) err_msg ! message d''erreur à afficher
     999        CHARACTER*(*) err_msg ! message d''erreur à afficher
    10001000
    10011001        ! local
     
    10181018        ! input:
    10191019        REAL Rd,Ro
    1020         character*(*) err_msg ! message d''erreur à afficher
     1020        CHARACTER*(*) err_msg ! message d''erreur à afficher
    10211021
    10221022        ! outputs
     
    11541154          REAL q(n,m)
    11551155          REAL xt(ni,n,m)
    1156           character*(*) err_msg
     1156          CHARACTER*(*) err_msg
    11571157
    11581158        ! locals
     
    12051205        REAL q(n)
    12061206        REAL xt(ni,n)
    1207         character*(*) err_msg
     1207        CHARACTER*(*) err_msg
    12081208
    12091209        ! locals
     
    12441244          REAL a(n,m)
    12451245          REAL b(n,m)
    1246           character*(*) err_msg
     1246          CHARACTER*(*) err_msg
    12471247          REAL errmax,errmaxrel
    12481248
     
    12871287          REAL q(n,m)
    12881288          REAL xt(ni,n,m)
    1289           character*(*) err_msg
     1289          CHARACTER*(*) err_msg
    12901290
    12911291        ! locals
     
    13341334          REAL q(n,m)
    13351335          REAL xt(ni,n,m)
    1336           character*(*) err_msg
     1336          CHARACTER*(*) err_msg
    13371337
    13381338        ! locals
     
    13861386          REAL q(n,m)
    13871387          REAL xt(ni,n,m)
    1388           character*(*) err_msg
     1388          CHARACTER*(*) err_msg
    13891389
    13901390        ! locals
     
    14361436          REAL q(n,m)
    14371437          REAL xt(ni,n,m)
    1438           character*(*) err_msg
     1438          CHARACTER*(*) err_msg
    14391439          REAL deltaDmax
    14401440
     
    14841484          REAL q(n,m)
    14851485          REAL xt(ni,n,m)
    1486           character*(*) err_msg
     1486          CHARACTER*(*) err_msg
    14871487
    14881488        ! locals
     
    17041704          INTEGER n,m,ni,ib,ie
    17051705        REAL x(ni,n,m)
    1706         character*(*) err_msg ! message d''erreur à afficher
     1706        CHARACTER*(*) err_msg ! message d''erreur à afficher
    17071707
    17081708        ! output
     
    17461746          REAL q(n,m)
    17471747          REAL xt(ni,n,m)
    1748           character*(*) err_msg
     1748          CHARACTER*(*) err_msg
    17491749
    17501750        ! locals
     
    17951795          REAL q(n,m)
    17961796          REAL xt(ni,n,m)
    1797           character*(*) err_msg
     1797          CHARACTER*(*) err_msg
    17981798
    17991799        ! locals
     
    18411841       ! inputs
    18421842       REAL x(ntraciso)
    1843        character*(*) err_msg ! message d''erreur à afficher
     1843       CHARACTER*(*) err_msg ! message d''erreur à afficher
    18441844       REAL errmax,errmaxrel,ridicule_trac,deltalimtrac
    18451845
     
    18921892       ! inputs
    18931893       REAL x(ntraciso)
    1894        character*(*) err_msg ! message d''erreur à afficher
     1894       CHARACTER*(*) err_msg ! message d''erreur à afficher
    18951895       REAL errmax,errmaxrel,ridicule_trac,deltalimtrac
    18961896
     
    19311931        ! inputs
    19321932       REAL x(ntraciso)
    1933        character*(*) err_msg ! message d''erreur à afficher
     1933       CHARACTER*(*) err_msg ! message d''erreur à afficher
    19341934       REAL seuil
    19351935
     
    19611961        ! inputs
    19621962       REAL x(ntraciso)
    1963        character*(*) err_msg ! message d''erreur à afficher
     1963       CHARACTER*(*) err_msg ! message d''erreur à afficher
    19641964
    19651965       ! output
     
    19931993        ! inputs
    19941994        REAL x(ntraciso)
    1995         character*(*) err_msg ! message d''erreur à afficher
     1995        CHARACTER*(*) err_msg ! message d''erreur à afficher
    19961996        REAL errmaxin,errmaxrelin
    19971997
     
    20502050        ! inputs
    20512051        REAL x(ntraciso)
    2052         character*(*) err_msg ! message d''erreur à afficher
     2052        CHARACTER*(*) err_msg ! message d''erreur à afficher
    20532053        REAL ridicule_trac,deltalimtrac
    20542054
     
    21352135       ! inputs
    21362136       REAL x(ntraciso)
    2137        character*(*) err_msg ! message d''erreur à afficher
     2137       CHARACTER*(*) err_msg ! message d''erreur à afficher
    21382138
    21392139       ! locals
     
    21642164       INTEGER n1,n2,n3
    21652165       REAL x(n1,n2,n3,ntraciso)
    2166        character*(*) err_msg ! message d''erreur à afficher
     2166       CHARACTER*(*) err_msg ! message d''erreur à afficher
    21672167       INTEGER i1,i2,i3
    21682168
     
    21962196       INTEGER n1,n2,n3,n4
    21972197       REAL x(n1,n2,n3,n4,ntraciso)
    2198        character*(*) err_msg ! message d''erreur à afficher
     2198       CHARACTER*(*) err_msg ! message d''erreur à afficher
    21992199       INTEGER i1,i2,i3,i4
    22002200
     
    22282228       INTEGER n1,n2
    22292229       REAL x(n1,n2,ntraciso)
    2230        character*(*) err_msg ! message d''erreur à afficher
     2230       CHARACTER*(*) err_msg ! message d''erreur à afficher
    22312231       INTEGER i1,i2
    22322232
     
    22582258       INTEGER n,m
    22592259       REAL x(ntraciso,n,m)
    2260        character*(*) err_msg ! message d''erreur à afficher
     2260       CHARACTER*(*) err_msg ! message d''erreur à afficher
    22612261
    22622262       ! locals
     
    22922292       INTEGER n,m
    22932293       REAL x(ntraciso,n,m)
    2294        character*(*) err_msg ! message d''erreur à afficher
     2294       CHARACTER*(*) err_msg ! message d''erreur à afficher
    22952295
    22962296       ! locals
     
    23172317       INTEGER n,m
    23182318       REAL x(ntraciso,n,m)
    2319        character*(*) err_msg ! message d''erreur à afficher
     2319       CHARACTER*(*) err_msg ! message d''erreur à afficher
    23202320
    23212321       ! locals
     
    23612361       INTEGER n,m
    23622362       REAL x(ntraciso,n,m)
    2363        character*(*) err_msg ! message d''erreur à afficher
     2363       CHARACTER*(*) err_msg ! message d''erreur à afficher
    23642364       REAL errmax,errmaxrel
    23652365
     
    24012401       INTEGER n,m
    24022402       REAL x(ntraciso,n,m)
    2403        character*(*) err_msg ! message d''erreur à afficher
     2403       CHARACTER*(*) err_msg ! message d''erreur à afficher
    24042404
    24052405       ! locals
     
    24402440       INTEGER n,m
    24412441       REAL x(ntraciso,n,m)
    2442        character*(*) err_msg ! message d''erreur à afficher
     2442       CHARACTER*(*) err_msg ! message d''erreur à afficher
    24432443       REAL seuil
    24442444
     
    24882488       ! inputs
    24892489       REAL x(ntraciso)
    2490        character*(*) err_msg ! message d''erreur à afficher
     2490       CHARACTER*(*) err_msg ! message d''erreur à afficher
    24912491
    24922492       ! locals
     
    25122512       ! inputs
    25132513       REAL x(ntraciso)
    2514        character*(*) err_msg ! message d''erreur à afficher
     2514       CHARACTER*(*) err_msg ! message d''erreur à afficher
    25152515       REAL seuil
    25162516
     
    25342534       ! inputs
    25352535       REAL x(ntraciso)
    2536        character*(*) err_msg ! message d''erreur à afficher
     2536       CHARACTER*(*) err_msg ! message d''erreur à afficher
    25372537       REAL errmax,errmaxrel,ridicule_trac_loc,deltalimtrac
    25382538
     
    25612561       ! inputs
    25622562       REAL x(ntraciso)
    2563        character*(*) err_msg ! message d''erreur à afficher
     2563       CHARACTER*(*) err_msg ! message d''erreur à afficher
    25642564
    25652565       ! output
     
    25852585       ! inputs
    25862586       REAL x(ntraciso)
    2587        character*(*) err_msg ! message d''erreur à afficher
     2587       CHARACTER*(*) err_msg ! message d''erreur à afficher
    25882588
    25892589       ! locals
     
    26132613       ! inputs
    26142614       REAL x(ntraciso)
    2615        character*(*) err_msg ! message d''erreur à afficher
     2615       CHARACTER*(*) err_msg ! message d''erreur à afficher
    26162616
    26172617       ! output
     
    26442644        INTEGER n,m
    26452645        REAL x(ntraciso,n,m)
    2646         character*(*) err_msg
     2646        CHARACTER*(*) err_msg
    26472647
    26482648        ! locals
     
    27022702        INTEGER n,m,nq
    27032703        REAL x(n,m,nq,ntraciso)
    2704         character*(*) err_msg
     2704        CHARACTER*(*) err_msg
    27052705
    27062706        ! locals
  • LMDZ6/branches/Amaury_dev/libf/phylmdiso/isotrac_routines_mod.F90

    r5117 r5135  
    26662666       ! inputs
    26672667       REAL x(ntraciso)
    2668        character*(*) err_msg ! message d''erreur à afficher
     2668       CHARACTER*(*) err_msg ! message d''erreur à afficher
    26692669
    26702670       ! local
     
    26932693       ! inputs
    26942694       REAL x(ntraciso)
    2695        character*(*) err_msg ! message d''erreur à afficher
     2695       CHARACTER*(*) err_msg ! message d''erreur à afficher
    26962696
    26972697       ! output
     
    27452745       INTEGER n,m
    27462746       REAL x(ntraciso,n,m)
    2747        character*(*) err_msg ! message d''erreur à afficher       
     2747       CHARACTER*(*) err_msg ! message d''erreur à afficher
    27482748
    27492749       ! locals
  • LMDZ6/branches/Amaury_dev/libf/phylmdiso/lmdz_iotd.f90

    r5134 r5135  
    1 link ../phylmd/iotd.h
     1link ../phylmd/lmdz_iotd.f90
Note: See TracChangeset for help on using the changeset viewer.