c======================================================================= subroutine ini_archive(nid,idayref,phis,ith,tab_cntrl_fi, & tab_cntrl_dyn) c======================================================================= c c c Date: 01/1997 c ---- c c Objet: ecriture de l'entete du fichier "start_archive" c ----- c c Proche de iniwrite.F c c On ajoute dans le tableau "tab_cntrl" (dynamique), a partir de 51, c les valeurs de tab_cntrl_fi (les 38 parametres de controle physiques c du RUN + ptotal et cotoicetotal) c c tab_cntrl(50+l)=tab_cntrl_fi(l) c c Arguments: c --------- c c Inputs: c ------ c c nid unite logique du fichier "start_archive" c idayref Valeur du jour initial a mettre dans c l'entete du fichier "start_archive" c phis geopotentiel au sol c ith soil thermal inertia c tab_cntrl_fi tableau des param physiques c c======================================================================= USE comsoil_h ! use control_mod implicit none !----------------------------------------------------------------------- ! INCLUDE 'dimensions.h' ! ! dimensions.h contient les dimensions du modele ! ndm est tel que iim=2**ndm !----------------------------------------------------------------------- INTEGER iim,jjm,llm,ndm PARAMETER (iim= 128,jjm=96,llm=64,ndm=1) !----------------------------------------------------------------------- !----------------------------------------------------------------------- ! INCLUDE 'dimphys.h' ! ngridmx : number of horizontal grid points ! note: the -1/jjm term will be 0; unless jj=1 integer, parameter :: ngridmx = (2+(jjm-1)*iim - 1/jjm) ! nlayermx : number of atmospheric layers integer, parameter :: nlayermx = llm ! nsoilmx : number of subterranean layers ! nsoilmx is now in comsoil_h !integer, parameter :: nsoilmx = 4 ! for a test !integer, parameter :: nsoilmx = 18 ! for z1=0.0002 m, depth = 18 m => mars case !integer, parameter :: nsoilmx = 13 ! for z1=0.03 m, depth = 104.8 m => earth case !----------------------------------------------------------------------- ! ! $Header$ ! ! ! ATTENTION!!!!: ce fichier include est compatible format fixe/format libre ! veillez n'utiliser que des ! pour les commentaires ! et bien positionner les & des lignes de continuation ! (les placer en colonne 6 et en colonne 73) ! ! !----------------------------------------------------------------------- ! INCLUDE 'paramet.h' INTEGER iip1,iip2,iip3,jjp1,llmp1,llmp2,llmm1 INTEGER kftd,ip1jm,ip1jmp1,ip1jmi1,ijp1llm INTEGER ijmllm,mvar INTEGER jcfil,jcfllm PARAMETER( iip1= iim+1,iip2=iim+2,iip3=iim+3 & & ,jjp1=jjm+1-1/jjm) PARAMETER( llmp1 = llm+1, llmp2 = llm+2, llmm1 = llm-1 ) PARAMETER( kftd = iim/2 -ndm ) PARAMETER( ip1jm = iip1*jjm, ip1jmp1= iip1*jjp1 ) PARAMETER( ip1jmi1= ip1jm - iip1 ) PARAMETER( ijp1llm= ip1jmp1 * llm, ijmllm= ip1jm * llm ) PARAMETER( mvar= ip1jmp1*( 2*llm+1) + ijmllm ) PARAMETER( jcfil=jjm/2+5, jcfllm=jcfil*llm ) !----------------------------------------------------------------------- ! ! $Id: comconst.h 1437 2010-09-30 08:29:10Z emillour $ ! !----------------------------------------------------------------------- ! INCLUDE comconst.h COMMON/comconsti/im,jm,lllm,imp1,jmp1,lllmm1,lllmp1,lcl, & & iflag_top_bound,mode_top_bound COMMON/comconstr/dtvr,daysec, & & pi,dtphys,dtdiss,rad,r,kappa,cotot,unsim,g,omeg & & ,dissip_fac_mid,dissip_fac_up,dissip_deltaz,dissip_hdelta & & ,dissip_pupstart ,tau_top_bound, & & daylen,molmass, ihf COMMON/cpdetvenus/cpp,nu_venus,t0_venus INTEGER im,jm,lllm,imp1,jmp1,lllmm1,lllmp1,lcl REAL dtvr ! dynamical time step (in s) REAL daysec !length (in s) of a standard day REAL pi ! something like 3.14159.... REAL dtphys ! (s) time step for the physics REAL dtdiss ! (s) time step for the dissipation REAL rad ! (m) radius of the planet REAL r ! Reduced Gas constant r=R/mu ! with R=8.31.. J.K-1.mol-1, mu: mol mass of atmosphere (kg/mol) REAL cpp ! Cp REAL kappa ! kappa=R/Cp REAL cotot REAL unsim ! = 1./iim REAL g ! (m/s2) gravity REAL omeg ! (rad/s) rotation rate of the planet ! Dissipation factors, for Earth model: REAL dissip_factz,dissip_zref !dissip_deltaz ! Dissipation factors, for other planets: REAL dissip_fac_mid,dissip_fac_up,dissip_deltaz,dissip_hdelta REAL dissip_pupstart INTEGER iflag_top_bound,mode_top_bound REAL tau_top_bound REAL daylen ! length of solar day, in 'standard' day length REAL molmass ! (g/mol) molar mass of the atmosphere REAL nu_venus,t0_venus ! coeffs needed for Cp(T), Venus atmosphere REAL ihf ! (W/m2) intrinsic heat flux for giant planets !----------------------------------------------------------------------- ! ! $Id: comvert.h 1654 2012-09-24 15:07:18Z aslmd $ ! !----------------------------------------------------------------------- ! INCLUDE 'comvert.h' COMMON/comvertr/ap(llm+1),bp(llm+1),presnivs(llm),dpres(llm), & & pa,preff,nivsigs(llm),nivsig(llm+1), & & aps(llm),bps(llm),scaleheight,pseudoalt(llm) common/comverti/disvert_type, pressure_exner real ap ! hybrid pressure contribution at interlayers real bp ! hybrid sigma contribution at interlayer real presnivs ! (reference) pressure at mid-layers real dpres real pa ! reference pressure (Pa) at which hybrid coordinates ! become purely pressure real preff ! reference surface pressure (Pa) real nivsigs real nivsig real aps ! hybrid pressure contribution at mid-layers real bps ! hybrid sigma contribution at mid-layers real scaleheight ! atmospheric (reference) scale height (km) real pseudoalt ! pseudo-altitude of model levels (km), based on presnivs(), ! preff and scaleheight integer disvert_type ! type of vertical discretization: ! 1: Earth (default for planet_type==earth), ! automatic generation ! 2: Planets (default for planet_type!=earth), ! using 'z2sig.def' (or 'esasig.def) file logical pressure_exner ! compute pressure inside layers using Exner function, else use mean ! of pressure values at interfaces !----------------------------------------------------------------------- ! ! $Header$ ! !CDK comgeom COMMON/comgeom/ & & cu(ip1jmp1),cv(ip1jm),unscu2(ip1jmp1),unscv2(ip1jm), & & aire(ip1jmp1),airesurg(ip1jmp1),aireu(ip1jmp1), & & airev(ip1jm),unsaire(ip1jmp1),apoln,apols, & & unsairez(ip1jm),airuscv2(ip1jm),airvscu2(ip1jm), & & aireij1(ip1jmp1),aireij2(ip1jmp1),aireij3(ip1jmp1), & & aireij4(ip1jmp1),alpha1(ip1jmp1),alpha2(ip1jmp1), & & alpha3(ip1jmp1),alpha4(ip1jmp1),alpha1p2(ip1jmp1), & & alpha1p4(ip1jmp1),alpha2p3(ip1jmp1),alpha3p4(ip1jmp1), & & fext(ip1jm),constang(ip1jmp1),rlatu(jjp1),rlatv(jjm), & & rlonu(iip1),rlonv(iip1),cuvsurcv(ip1jm),cvsurcuv(ip1jm), & & cvusurcu(ip1jmp1),cusurcvu(ip1jmp1),cuvscvgam1(ip1jm), & & cuvscvgam2(ip1jm),cvuscugam1(ip1jmp1), & & cvuscugam2(ip1jmp1),cvscuvgam(ip1jm),cuscvugam(ip1jmp1), & & unsapolnga1,unsapolnga2,unsapolsga1,unsapolsga2, & & unsair_gam1(ip1jmp1),unsair_gam2(ip1jmp1),unsairz_gam(ip1jm), & & aivscu2gam(ip1jm),aiuscv2gam(ip1jm),xprimu(iip1),xprimv(iip1) ! REAL & & cu,cv,unscu2,unscv2,aire,airesurg,aireu,airev,unsaire,apoln ,& & apols,unsairez,airuscv2,airvscu2,aireij1,aireij2,aireij3,aireij4,& & alpha1,alpha2,alpha3,alpha4,alpha1p2,alpha1p4,alpha2p3,alpha3p4 ,& & fext,constang,rlatu,rlatv,rlonu,rlonv,cuvscvgam1,cuvscvgam2 ,& & cvuscugam1,cvuscugam2,cvscuvgam,cuscvugam,unsapolnga1,unsapolnga2& & ,unsapolsga1,unsapolsga2,unsair_gam1,unsair_gam2,unsairz_gam ,& & aivscu2gam ,aiuscv2gam,cuvsurcv,cvsurcuv,cvusurcu,cusurcvu,xprimu& & , xprimv ! ! ! $Id: temps.h 1577 2011-10-20 15:06:47Z fairhead $ ! ! ATTENTION!!!!: ce fichier include est compatible format fixe/format libre ! veillez n'utiliser que des ! pour les commentaires ! et bien positionner les & des lignes de continuation ! (les placer en colonne 6 et en colonne 73) ! ! ! jD_ref = jour julien de la date de reference (lancement de l'experience) ! hD_ref = "heure" julienne de la date de reference !----------------------------------------------------------------------- ! INCLUDE 'temps.h' COMMON/temps_r/dt,jD_ref,jH_ref,start_time,hour_ini COMMON/temps_i/day_ini,day_end,annee_ref,day_ref, & & itau_dyn,itau_phy,itaufin COMMON/temps_c/calend INTEGER itaufin ! total number of dynamical steps for the run INTEGER itau_dyn, itau_phy INTEGER day_ini ! initial day # of simulation sequence INTEGER day_end ! final day # ; i.e. day # when this simulation ends INTEGER annee_ref INTEGER day_ref REAL dt ! (dynamics) time step (changes if doing Matsuno or LF step) REAL jD_ref, jH_ref, start_time CHARACTER (len=10) :: calend ! Additionnal Mars stuff: real hour_ini ! initial fraction of day of simulation sequence (0= readonly parameter(ncrdwr = 1) ! in create phase, cleared by ncendef parameter(nccreat = 2) ! on create destroy existing file parameter(ncexcl = 4) ! in define mode, cleared by ncendef parameter(ncindef = 8) ! synchronise numrecs on change (x'10') parameter(ncnsync = 16) ! synchronise whole header on change (x'20') parameter(nchsync = 32) ! numrecs has changed (x'40') parameter(ncndirty = 64) ! header info has changed (x'80') parameter(nchdirty = 128) ! prefill vars on endef and increase of record, the default behavior parameter(ncfill = 0) ! do not fill vars on endef and increase of record (x'100') parameter(ncnofill = 256) ! isa link (x'8000') parameter(nclink = 32768) ! ! 'mode' arguments for nccreate and ncopen ! parameter(ncnowrit = 0) parameter(ncwrite = ncrdwr) parameter(ncclob = nf_clobber) parameter(ncnoclob = nf_noclobber) ! ! 'size' argument to ncdimdef for an unlimited dimension ! integer ncunlim parameter(ncunlim = 0) ! ! attribute id to put/get a global attribute ! parameter(ncglobal = 0) ! ! advisory maximums: ! parameter(maxncop = 64) parameter(maxncdim = 1024) parameter(maxncatt = 8192) parameter(maxncvar = 8192) ! not enforced parameter(maxncnam = 256) parameter(maxvdims = maxncdim) ! ! global netcdf error status variable ! initialized in error.c ! ! no error parameter(ncnoerr = nf_noerr) ! not a netcdf id parameter(ncebadid = nf_ebadid) ! too many netcdfs open parameter(ncenfile = -31) ! nc_syserr ! netcdf file exists && ncnoclob parameter(nceexist = nf_eexist) ! invalid argument parameter(nceinval = nf_einval) ! write to read only parameter(nceperm = nf_eperm) ! operation not allowed in data mode parameter(ncenotin = nf_enotindefine ) ! operation not allowed in define mode parameter(nceindef = nf_eindefine) ! coordinates out of domain parameter(ncecoord = nf_einvalcoords) ! maxncdims exceeded parameter(ncemaxds = nf_emaxdims) ! string match to name in use parameter(ncename = nf_enameinuse) ! attribute not found parameter(ncenoatt = nf_enotatt) ! maxncattrs exceeded parameter(ncemaxat = nf_emaxatts) ! not a netcdf data type parameter(ncebadty = nf_ebadtype) ! invalid dimension id parameter(ncebadd = nf_ebaddim) ! ncunlimited in the wrong index parameter(nceunlim = nf_eunlimpos) ! maxncvars exceeded parameter(ncemaxvs = nf_emaxvars) ! variable not found parameter(ncenotvr = nf_enotvar) ! action prohibited on ncglobal varid parameter(nceglob = nf_eglobal) ! not a netcdf file parameter(ncenotnc = nf_enotnc) parameter(ncests = nf_ests) parameter (ncentool = nf_emaxname) parameter(ncfoobar = 32) parameter(ncsyserr = -31) ! ! global options variable. used to determine behavior of error handler. ! initialized in lerror.c ! parameter(ncfatal = 1) parameter(ncverbos = 2) ! ! default fill values. these must be the same as in the c interface. ! integer filbyte integer filchar integer filshort integer fillong real filfloat doubleprecision fildoub parameter (filbyte = -127) parameter (filchar = 0) parameter (filshort = -32767) parameter (fillong = -2147483647) parameter (filfloat = 9.9692099683868690e+36) parameter (fildoub = 9.9692099683868690d+36) ! NetCDF-4. ! This is part of netCDF-4. Copyright 2006, UCAR, See COPYRIGHT ! file for distribution information. ! Netcdf version 4 fortran interface. ! $Id: netcdf4.inc,v 1.28 2010/05/25 13:53:02 ed Exp $ ! New netCDF-4 types. integer nf_ubyte integer nf_ushort integer nf_uint integer nf_int64 integer nf_uint64 integer nf_string integer nf_vlen integer nf_opaque integer nf_enum integer nf_compound parameter (nf_ubyte = 7) parameter (nf_ushort = 8) parameter (nf_uint = 9) parameter (nf_int64 = 10) parameter (nf_uint64 = 11) parameter (nf_string = 12) parameter (nf_vlen = 13) parameter (nf_opaque = 14) parameter (nf_enum = 15) parameter (nf_compound = 16) ! New netCDF-4 fill values. integer nf_fill_ubyte integer nf_fill_ushort ! real nf_fill_uint ! real nf_fill_int64 ! real nf_fill_uint64 parameter (nf_fill_ubyte = 255) parameter (nf_fill_ushort = 65535) ! New constants. integer nf_format_netcdf4 parameter (nf_format_netcdf4 = 3) integer nf_format_netcdf4_classic parameter (nf_format_netcdf4_classic = 4) integer nf_netcdf4 parameter (nf_netcdf4 = 4096) integer nf_classic_model parameter (nf_classic_model = 256) integer nf_chunk_seq parameter (nf_chunk_seq = 0) integer nf_chunk_sub parameter (nf_chunk_sub = 1) integer nf_chunk_sizes parameter (nf_chunk_sizes = 2) integer nf_endian_native parameter (nf_endian_native = 0) integer nf_endian_little parameter (nf_endian_little = 1) integer nf_endian_big parameter (nf_endian_big = 2) ! For NF_DEF_VAR_CHUNKING integer nf_chunked parameter (nf_chunked = 0) integer nf_contiguous parameter (nf_contiguous = 1) ! For NF_DEF_VAR_FLETCHER32 integer nf_nochecksum parameter (nf_nochecksum = 0) integer nf_fletcher32 parameter (nf_fletcher32 = 1) ! For NF_DEF_VAR_DEFLATE integer nf_noshuffle parameter (nf_noshuffle = 0) integer nf_shuffle parameter (nf_shuffle = 1) ! For NF_DEF_VAR_SZIP integer nf_szip_ec_option_mask parameter (nf_szip_ec_option_mask = 4) integer nf_szip_nn_option_mask parameter (nf_szip_nn_option_mask = 32) ! For parallel I/O. integer nf_mpiio parameter (nf_mpiio = 8192) integer nf_mpiposix parameter (nf_mpiposix = 16384) integer nf_pnetcdf parameter (nf_pnetcdf = 32768) ! For NF_VAR_PAR_ACCESS. integer nf_independent parameter (nf_independent = 0) integer nf_collective parameter (nf_collective = 1) ! New error codes. integer nf_ehdferr ! Error at HDF5 layer. parameter (nf_ehdferr = -101) integer nf_ecantread ! Can't read. parameter (nf_ecantread = -102) integer nf_ecantwrite ! Can't write. parameter (nf_ecantwrite = -103) integer nf_ecantcreate ! Can't create. parameter (nf_ecantcreate = -104) integer nf_efilemeta ! Problem with file metadata. parameter (nf_efilemeta = -105) integer nf_edimmeta ! Problem with dimension metadata. parameter (nf_edimmeta = -106) integer nf_eattmeta ! Problem with attribute metadata. parameter (nf_eattmeta = -107) integer nf_evarmeta ! Problem with variable metadata. parameter (nf_evarmeta = -108) integer nf_enocompound ! Not a compound type. parameter (nf_enocompound = -109) integer nf_eattexists ! Attribute already exists. parameter (nf_eattexists = -110) integer nf_enotnc4 ! Attempting netcdf-4 operation on netcdf-3 file. parameter (nf_enotnc4 = -111) integer nf_estrictnc3 ! Attempting netcdf-4 operation on strict nc3 netcdf-4 file. parameter (nf_estrictnc3 = -112) integer nf_enotnc3 ! Attempting netcdf-3 operation on netcdf-4 file. parameter (nf_enotnc3 = -113) integer nf_enopar ! Parallel operation on file opened for non-parallel access. parameter (nf_enopar = -114) integer nf_eparinit ! Error initializing for parallel access. parameter (nf_eparinit = -115) integer nf_ebadgrpid ! Bad group ID. parameter (nf_ebadgrpid = -116) integer nf_ebadtypid ! Bad type ID. parameter (nf_ebadtypid = -117) integer nf_etypdefined ! Type has already been defined and may not be edited. parameter (nf_etypdefined = -118) integer nf_ebadfield ! Bad field ID. parameter (nf_ebadfield = -119) integer nf_ebadclass ! Bad class. parameter (nf_ebadclass = -120) integer nf_emaptype ! Mapped access for atomic types only. parameter (nf_emaptype = -121) integer nf_elatefill ! Attempt to define fill value when data already exists. parameter (nf_elatefill = -122) integer nf_elatedef ! Attempt to define var properties, like deflate, after enddef. parameter (nf_elatedef = -123) integer nf_edimscale ! Probem with HDF5 dimscales. parameter (nf_edimscale = -124) integer nf_enogrp ! No group found. parameter (nf_enogrp = -125) ! New functions. ! Parallel I/O. integer nf_create_par external nf_create_par integer nf_open_par external nf_open_par integer nf_var_par_access external nf_var_par_access ! Functions to handle groups. integer nf_inq_ncid external nf_inq_ncid integer nf_inq_grps external nf_inq_grps integer nf_inq_grpname external nf_inq_grpname integer nf_inq_grpname_full external nf_inq_grpname_full integer nf_inq_grpname_len external nf_inq_grpname_len integer nf_inq_grp_parent external nf_inq_grp_parent integer nf_inq_grp_ncid external nf_inq_grp_ncid integer nf_inq_grp_full_ncid external nf_inq_grp_full_ncid integer nf_inq_varids external nf_inq_varids integer nf_inq_dimids external nf_inq_dimids integer nf_def_grp external nf_def_grp ! New options for netCDF variables. integer nf_def_var_deflate external nf_def_var_deflate integer nf_inq_var_deflate external nf_inq_var_deflate integer nf_def_var_fletcher32 external nf_def_var_fletcher32 integer nf_inq_var_fletcher32 external nf_inq_var_fletcher32 integer nf_def_var_chunking external nf_def_var_chunking integer nf_inq_var_chunking external nf_inq_var_chunking integer nf_def_var_fill external nf_def_var_fill integer nf_inq_var_fill external nf_inq_var_fill integer nf_def_var_endian external nf_def_var_endian integer nf_inq_var_endian external nf_inq_var_endian ! User defined types. integer nf_inq_typeids external nf_inq_typeids integer nf_inq_typeid external nf_inq_typeid integer nf_inq_type external nf_inq_type integer nf_inq_user_type external nf_inq_user_type ! User defined types - compound types. integer nf_def_compound external nf_def_compound integer nf_insert_compound external nf_insert_compound integer nf_insert_array_compound external nf_insert_array_compound integer nf_inq_compound external nf_inq_compound integer nf_inq_compound_name external nf_inq_compound_name integer nf_inq_compound_size external nf_inq_compound_size integer nf_inq_compound_nfields external nf_inq_compound_nfields integer nf_inq_compound_field external nf_inq_compound_field integer nf_inq_compound_fieldname external nf_inq_compound_fieldname integer nf_inq_compound_fieldindex external nf_inq_compound_fieldindex integer nf_inq_compound_fieldoffset external nf_inq_compound_fieldoffset integer nf_inq_compound_fieldtype external nf_inq_compound_fieldtype integer nf_inq_compound_fieldndims external nf_inq_compound_fieldndims integer nf_inq_compound_fielddim_sizes external nf_inq_compound_fielddim_sizes ! User defined types - variable length arrays. integer nf_def_vlen external nf_def_vlen integer nf_inq_vlen external nf_inq_vlen integer nf_free_vlen external nf_free_vlen ! User defined types - enums. integer nf_def_enum external nf_def_enum integer nf_insert_enum external nf_insert_enum integer nf_inq_enum external nf_inq_enum integer nf_inq_enum_member external nf_inq_enum_member integer nf_inq_enum_ident external nf_inq_enum_ident ! User defined types - opaque. integer nf_def_opaque external nf_def_opaque integer nf_inq_opaque external nf_inq_opaque ! Write and read attributes of any type, including user defined ! types. integer nf_put_att external nf_put_att integer nf_get_att external nf_get_att ! Write and read variables of any type, including user defined ! types. integer nf_put_var external nf_put_var integer nf_put_var1 external nf_put_var1 integer nf_put_vara external nf_put_vara integer nf_put_vars external nf_put_vars integer nf_get_var external nf_get_var integer nf_get_var1 external nf_get_var1 integer nf_get_vara external nf_get_vara integer nf_get_vars external nf_get_vars ! 64-bit int functions. integer nf_put_var1_int64 external nf_put_var1_int64 integer nf_put_vara_int64 external nf_put_vara_int64 integer nf_put_vars_int64 external nf_put_vars_int64 integer nf_put_varm_int64 external nf_put_varm_int64 integer nf_put_var_int64 external nf_put_var_int64 integer nf_get_var1_int64 external nf_get_var1_int64 integer nf_get_vara_int64 external nf_get_vara_int64 integer nf_get_vars_int64 external nf_get_vars_int64 integer nf_get_varm_int64 external nf_get_varm_int64 integer nf_get_var_int64 external nf_get_var_int64 ! For helping F77 users with VLENs. integer nf_get_vlen_element external nf_get_vlen_element integer nf_put_vlen_element external nf_put_vlen_element ! For dealing with file level chunk cache. integer nf_set_chunk_cache external nf_set_chunk_cache integer nf_get_chunk_cache external nf_get_chunk_cache ! For dealing with per variable chunk cache. integer nf_set_var_chunk_cache external nf_set_var_chunk_cache integer nf_get_var_chunk_cache external nf_get_var_chunk_cache c----------------------------------------------------------------------- c Declarations c----------------------------------------------------------------------- c Local: c ------ INTEGER length,l parameter (length = 100) REAL tab_cntrl(length) ! tableau des parametres du run INTEGER loop INTEGER ierr, setvdim, putvdim, putdat, setname,cluvdb INTEGER setdim INTEGER ind1,indlast c Arguments: c ---------- INTEGER*4 idayref REAL phis(ip1jmp1) real ith(ip1jmp1,nsoilmx) REAL tab_cntrl_fi(length) REAL tab_cntrl_dyn(length) !Mars --------Ajouts----------- c Variables locales pour NetCDF: c INTEGER dims2(2), dims3(3) !, dims4(4) INTEGER idim_index INTEGER idim_rlonu, idim_rlonv, idim_rlatu, idim_rlatv INTEGER idim_llmp1,idim_llm INTEGER idim_tim INTEGER idim_nsoilmx ! "subsurface_layers" dimension ID # INTEGER nid,nvarid real sig_s(llm),s(llm) pi = 2. * ASIN(1.) c----------------------------------------------------------------------- c Remplissage du tableau des parametres de controle du RUN (dynamique) c----------------------------------------------------------------------- DO l=1,length tab_cntrl(l)=0. ENDDO tab_cntrl(1:50)=tab_cntrl_dyn(1:50) ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc ! tab_cntrl(1) = FLOAT(iim) ! nombre de points en longitude ! tab_cntrl(2) = FLOAT(jjm) ! nombre de points en latitude ! tab_cntrl(3) = FLOAT(llm) ! nombre de couches ! tab_cntrl(4) = FLOAT(idayref) ! jour 0 ! tab_cntrl(5) = rad ! rayon de mars(m) ~3397200 ! tab_cntrl(6) = omeg ! vitesse de rotation (rad.s-1) ! tab_cntrl(7) = g ! gravite (m.s-2) ~3.72 ! tab_cntrl(8) = cpp ! tab_cntrl(8) = 43.49 !mars temporaire Masse molaire de l''atm (g.mol-1) ~43.49 ! tab_cntrl(9) = kappa ! = r/cp ~0.256793 (=rcp dans physique) ! tab_cntrl(10) = daysec ! duree du sol (s) ~88775 ! tab_cntrl(11) = dtvr ! pas de temps de la dynamique (s) ! tab_cntrl(12) = etot0 ! energie totale ! ! tab_cntrl(13) = ptot0 ! pression totalei ! variables ! tab_cntrl(14) = ztot0 ! enstrophie totale ! de controle ! tab_cntrl(15) = stot0 ! enthalpie totale ! globales ! tab_cntrl(16) = ang0 ! moment cinetique ! ! tab_cntrl(17) = pa ! tab_cntrl(18) = preff c ..... parametres pour le zoom ...... ! tab_cntrl(19) = clon ! longitude en degres du centre du zoom ! tab_cntrl(20) = clat ! latitude en degres du centre du zoom ! tab_cntrl(21) = grossismx ! facteur de grossissement du zoom,selon longitude ! tab_cntrl(22) = grossismy ! facteur de grossissement du zoom ,selon latitude ! IF ( fxyhypb ) THEN ! tab_cntrl(23) = 1. ! tab_cntrl(24) = dzoomx ! extension en longitude de la zone du zoom ! tab_cntrl(25) = dzoomy ! extension en latitude de la zone du zoom ! ELSE ! tab_cntrl(23) = 0. ! tab_cntrl(24) = dzoomx ! extension en longitude de la zone du zoom ! tab_cntrl(25) = dzoomy ! extension en latitude de la zone du zoom ! tab_cntrl(26) = 0. ! IF ( ysinus) tab_cntrl(26) = 1. ! ENDIF c----------------------------------------------------------------------- c Copie du tableau des parametres de controle du RUN (physique) c dans le tableau tab_cntrl c----------------------------------------------------------------------- DO l=1,50 tab_cntrl(50+l)=tab_cntrl_fi(l) ENDDO c======================================================================= c Ecriture NetCDF de l''entete du fichier "start_archive" c======================================================================= c c Preciser quelques attributs globaux: c ierr = NF_PUT_ATT_TEXT (nid, NF_GLOBAL, "title", 21, & "Fichier start_archive") c c Definir les dimensions du fichiers: c c CHAMPS AJOUTES POUR LA VISUALISATION T,ps, etc... avec Grads ou ferret: ierr = NF_DEF_DIM (nid, "latitude", jjp1, idim_rlatu) ierr = NF_DEF_DIM (nid, "longitude", iip1, idim_rlonv) ierr = NF_DEF_DIM (nid, "altitude", llm, idim_llm) ierr = NF_DEF_DIM (nid,"subsurface_layers",nsoilmx,idim_nsoilmx) ierr = NF_DEF_DIM (nid,"index", length, idim_index) ierr = NF_DEF_DIM (nid,"rlonu", iip1, idim_rlonu) ierr = NF_DEF_DIM (nid,"rlatv", jjm, idim_rlatv) ierr = NF_DEF_DIM (nid,"interlayer", llmp1, idim_llmp1) ierr = NF_DEF_DIM (nid,"Time", NF_UNLIMITED, idim_tim) c ierr = NF_ENDDEF(nid) ! sortir du mode de definition c----------------------------------------------------------------------- c Ecriture du tableau des parametres du run c----------------------------------------------------------------------- call def_var(nid,"Time","Time","days since 00:00:00",1, . idim_tim,nvarid,ierr) ierr = NF_REDEF (nid) ierr = NF_DEF_VAR (nid,"controle",NF_DOUBLE,1,idim_index,nvarid) ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 22, . "Parametres de controle") ierr = NF_ENDDEF(nid) ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,tab_cntrl) c----------------------------------------------------------------------- c Ecriture des longitudes et latitudes c----------------------------------------------------------------------- ierr = NF_REDEF (nid) ierr = NF_DEF_VAR (nid,"rlonu",NF_DOUBLE,1,idim_rlonu,nvarid) ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 23, . "Longitudes des points U") ierr = NF_ENDDEF(nid) ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlonu) c ierr = NF_REDEF (nid) ierr = NF_DEF_VAR (nid,"rlatu",NF_DOUBLE,1,idim_rlatu,nvarid) ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 22, . "Latitudes des points U") ierr = NF_ENDDEF(nid) ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlatu) c ierr = NF_REDEF (nid) ierr = NF_DEF_VAR (nid,"rlonv",NF_DOUBLE,1,idim_rlonv,nvarid) ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 23, . "Longitudes des points V") ierr = NF_ENDDEF(nid) ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlonv) c ierr = NF_REDEF (nid) ierr = NF_DEF_VAR (nid,"rlatv",NF_DOUBLE,1,idim_rlatv,nvarid) ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 22, . "Latitudes des points V") ierr = NF_ENDDEF(nid) ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlatv) c----------------------------------------------------------------------- c Ecriture des niveaux verticaux c----------------------------------------------------------------------- c ierr = NF_REDEF (nid) ierr = NF_DEF_VAR (nid,"ap",NF_DOUBLE,1,idim_llmp1,nvarid) ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 32, . "Coef A: niveaux pression hybride") ierr = NF_ENDDEF(nid) ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,ap) c ierr = NF_REDEF (nid) ierr = NF_DEF_VAR (nid,"bp",NF_DOUBLE,1,idim_llmp1,nvarid) ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 35, . "Coefficient B niveaux sigma hybride") ierr = NF_ENDDEF(nid) ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,bp) c c ---------------------- ierr = NF_REDEF (nid) ierr = NF_DEF_VAR (nid,"aps",NF_DOUBLE,1,idim_llm,nvarid) ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 36, . "Coef AS: hybrid pressure in midlayers") ierr = NF_ENDDEF(nid) ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,aps) c c ---------------------- ierr = NF_REDEF (nid) ierr = NF_DEF_VAR (nid,"bps",NF_DOUBLE,1,idim_llm,nvarid) ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 30, . "Coef BS: hybrid sigma midlayers") ierr = NF_ENDDEF(nid) ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,bps) c c ---------------------- ierr = NF_REDEF (nid) ierr = NF_DEF_VAR (nid,"presnivs",NF_DOUBLE,1,idim_llm,nvarid) ierr = NF_ENDDEF(nid) ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,presnivs) c ------------------------------------------------------------------ c Variable uniquement pour visualisation avec Grads ou Ferret c ------------------------------------------------------------------ ierr = NF_REDEF (nid) ierr = NF_DEF_VAR (nid,"latitude",NF_DOUBLE,1,idim_rlatu,nvarid) ierr =NF_PUT_ATT_TEXT(nid,nvarid,'units',13,"degrees_north") ierr = NF_PUT_ATT_TEXT (nid,nvarid,"long_name", 14, . "North latitude") ierr = NF_ENDDEF(nid) ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlatu/pi*180) c---------------------- ierr = NF_REDEF (nid) ierr =NF_DEF_VAR(nid,"longitude", NF_DOUBLE, 1, idim_rlonv,nvarid) ierr = NF_PUT_ATT_TEXT (nid,nvarid,"long_name", 14, . "East longitude") ierr = NF_PUT_ATT_TEXT(nid,nvarid,'units',12,"degrees_east") ierr = NF_ENDDEF(nid) ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,rlonv/pi*180) c-------------------------- ierr = NF_REDEF (nid) ierr = NF_DEF_VAR (nid, "altitude", NF_DOUBLE, 1, . idim_llm,nvarid) ierr = NF_PUT_ATT_TEXT (nid,nvarid,"long_name",10,"pseudo-alt") ierr = NF_PUT_ATT_TEXT (nid,nvarid,'units',2,"km") ierr = NF_PUT_ATT_TEXT (nid,nvarid,'positive',2,"up") ierr = NF_ENDDEF(nid) ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,pseudoalt) !------------------------------- ! (soil) depth variable mlayer() (known from comsoil.h) !------------------------------- ierr=NF_REDEF (nid) ! Enter NetCDF (re-)define mode ! define variable ierr=NF_DEF_VAR(nid,"soildepth",NF_DOUBLE,1,idim_nsoilmx,nvarid) ierr=NF_PUT_ATT_TEXT (nid,nvarid,"long_name", 20, . "Soil mid-layer depth") ierr=NF_PUT_ATT_TEXT (nid,nvarid,"units",1,"m") ierr=NF_PUT_ATT_TEXT (nid,nvarid,"positive",4,"down") ierr=NF_ENDDEF(nid) ! Leave NetCDF define mode ! write variable ierr=NF_PUT_VAR_DOUBLE (nid,nvarid,mlayer) !--------------------- ! soil thermal inertia !--------------------- ierr=NF_REDEF (nid) ! Enter NetCDF (re-)define mode dims3(1)=idim_rlonv dims3(2)=idim_rlatu dims3(3)=idim_nsoilmx ! define variable ierr=NF_DEF_VAR(nid,"inertiedat",NF_DOUBLE,3,dims3,nvarid) ierr=NF_PUT_ATT_TEXT (nid,nvarid,"long_name", 20, & "Soil thermal inertia") ierr=NF_PUT_ATT_TEXT (nid,nvarid,"units",15, & "J.s-1/2.m-2.K-1") ierr=NF_ENDDEF(nid) ! Leave NetCDF define mode ! write variable ierr=NF_PUT_VAR_DOUBLE (nid,nvarid,ith) c----------------------------------------------------------------------- c Ecriture aire et coefficients de passage cov. <-> contra. <--> naturel c----------------------------------------------------------------------- ierr = NF_REDEF (nid) dims2(1) = idim_rlonu dims2(2) = idim_rlatu ierr = NF_DEF_VAR (nid,"cu",NF_DOUBLE,2,dims2,nvarid) ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 29, . "Coefficient de passage pour U") ierr = NF_ENDDEF(nid) ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,cu) c ierr = NF_REDEF (nid) dims2(1) = idim_rlonv dims2(2) = idim_rlatv ierr = NF_DEF_VAR (nid,"cv",NF_DOUBLE,2,dims2,nvarid) ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 29, . "Coefficient de passage pour V") ierr = NF_ENDDEF(nid) ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,cv) c c Aire de chaque maille: c ierr = NF_REDEF (nid) dims2(1) = idim_rlonv dims2(2) = idim_rlatu ierr = NF_DEF_VAR (nid,"aire",NF_DOUBLE,2,dims2,nvarid) ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 22, . "Aires de chaque maille") ierr = NF_ENDDEF(nid) ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,aire) c----------------------------------------------------------------------- c Ecriture du geopentiel au sol c----------------------------------------------------------------------- ierr = NF_REDEF (nid) dims2(1) = idim_rlonv dims2(2) = idim_rlatu ierr = NF_DEF_VAR (nid,"phisinit",NF_DOUBLE,2,dims2,nvarid) ierr = NF_PUT_ATT_TEXT (nid, nvarid, "title", 19, . "Geopotentiel au sol") ierr = NF_ENDDEF(nid) ierr = NF_PUT_VAR_DOUBLE (nid,nvarid,phis) PRINT*,'ini_archive: iim,jjm,llm,idayref',iim,jjm,llm,idayref PRINT*,'ini_archive: rad,omeg,g,mugaz,kappa', s rad,omeg,g,tab_cntrl_fi(8),kappa PRINT*,'ini_archive: daysec,dtvr',daysec,dtvr RETURN END