6 SUBROUTINE init_output_nc_n (BDD, CHE, CHN, CHU, DTS, DTT, DTZ, I, UG, U, DGU)
60 lcreated, cfileout_nc_save, ldef
66 USE modi_get_bld_conf_n
67 USE modi_get_data_seaflux_conf_n
68 USE modi_get_isba_conf_n
69 USE modi_ol_define_dim
72 USE modi_get_dim_full_n
73 USE modi_def_var_netcdf
75 USE yomhook
,ONLY : lhook, dr_hook
76 USE parkind1
,ONLY : jprb
90 TYPE(isba_t
),
INTENT(INOUT) :: i
95 CHARACTER(LEN=100),
DIMENSION(:),
POINTER :: yname_dim
96 CHARACTER(LEN=100),
DIMENSION(1) :: yatt_title, yatt
97 CHARACTER(LEN=13),
DIMENSION(1) :: yunit1, yunit2
98 CHARACTER(LEN=3) :: yisba
100 REAL,
DIMENSION(:),
POINTER :: zx, zy
102 INTEGER,
DIMENSION(:),
POINTER :: idims, iddim
103 INTEGER :: idim1, indims
104 INTEGER :: ini, inpatch, inlvld, inlvls, inbiomass, &
105 inlitter, inlittlevs, insoilcarb
106 INTEGER :: idesc_roof_layer, idesc_road_layer, idesc_wall_layer, &
107 idesc_floor_layer, idesc_code, idesc_use, idesc_age, idesc_bld
108 INTEGER :: iret, il, ifull, isnap, inlati
109 INTEGER :: iluout, idimid, itime, itot
112 LOGICAL :: gexist, gopened, gsst_data
113 LOGICAL :: gdata_bldtype, gdata_bld_age, gdata_usetype
115 REAL(KIND=JPRB) :: zhook_handle
117 IF (lhook) CALL dr_hook(
'INIT_OUTPUT_NC_N',0,zhook_handle)
122 IF (nrank==npio)
THEN
123 INQUIRE(file=cfileout_nc,exist=gexist)
124 INQUIRE(file=cfileout_nc,opened=gopened)
125 IF (.NOT.gopened)
THEN
126 iret = nf_open(cfileout_nc,nf_write,nid_nc)
128 IF (.NOT.gexist .OR. .NOT.lcreated .OR. cfileout_nc/=cfileout_nc_save)
THEN
129 IF (csoftware==
'PREP' .OR. csoftware==
'OFFLINE' .OR. csoftware==
'SODA')
THEN
131 yisba, inpatch, inlvld, inlvls, inbiomass, &
132 inlitter, inlittlevs, insoilcarb)
133 ELSEIF (csoftware==
'PGD')
THEN
136 IF (ug%CGRID==
'IGN') lwrite_coord = .true.
138 'NOTIME ', iluout, ifull, idim1, yunit1, yunit2, &
139 zx, zy, idims, iddim, yname_dim, knpatch=inpatch)
140 IF (
ALLOCATED(xvar_to_fileout))
DEALLOCATE(xvar_to_fileout)
141 IF (
ALLOCATED(xid))
DEALLOCATE(xid)
144 CALL
create_file(cfileout_nc,idims,yname_dim,nid_nc,iddim)
145 IF (ug%CGRID==
'IGN')
THEN
146 yatt_title(1) =
"comment"
147 yatt(1) =
"longitude"
148 CALL
def_var_netcdf(dgu,nid_nc,
'XLON',
'XLON',iddim(1:1),yatt_title,yatt,id0,nf_double)
150 CALL
def_var_netcdf(dgu,nid_nc,
'XLAT',
'XLAT',iddim(1:1),yatt_title,yatt,id0,nf_double)
152 cfileout_nc_save = cfileout_nc
154 IF (csoftware==
'PGD' .OR. ( csoftware==
'OFFLINE' .AND. lrestart ) )
THEN
155 iret = nf_def_dim(nid_nc,
"Number_of_covers",jpcover,idimid)
156 IF (ldata_irrig) iret = nf_def_dim(nid_nc,
"Irrig_parameters",6,idimid)
158 yisba, inpatch, inlvld, inlvls, inbiomass, &
159 inlitter, inlittlevs, insoilcarb)
160 IF (yisba==
'DIF') iret = nf_def_dim(nid_nc,
"Nground_layers",inlvld,idimid)
163 IF (gsst_data) iret = nf_def_dim(nid_nc,
"Number_of_dates",itime,idimid)
165 gdata_bldtype, gdata_bld_age, gdata_usetype, &
166 idesc_roof_layer, idesc_road_layer, idesc_wall_layer, &
167 idesc_floor_layer, idesc_code, idesc_use, idesc_age, idesc_bld)
168 IF (gdata_bldtype .OR. gdata_bld_age .OR. gdata_usetype)
THEN
169 itot = (21+3*idesc_roof_layer+3*idesc_road_layer+3*idesc_wall_layer+3*idesc_floor_layer)&
170 *idesc_code + 9*idesc_use+2*idesc_age+idesc_bld
171 iret = nf_def_dim(nid_nc,
"Bld_dimensions ",7,idimid)
172 iret = nf_def_dim(nid_nc,
"Bld_parameters ",itot,idimid)
174 IF (chu%LCH_EMIS)
THEN
175 IF (chu%CCH_EMIS==
'AGGR')
THEN
176 IF (che%NEMIS_NBR/=0) iret = nf_def_dim(nid_nc,
"Temporal_emiss ",che%NTIME_MAX,idimid)
177 ELSE IF (chu%CCH_EMIS==
'SNAP')
THEN
178 isnap = max(chn%NSNAP_M,chn%NSNAP_D,chn%NSNAP_H)
179 IF (isnap/=0 .AND. chn%NEMIS_SNAP/=0)
THEN
180 iret = nf_def_dim(nid_nc,
"Nemis_snap",chn%NEMIS_SNAP,idimid)
181 iret = nf_def_dim(nid_nc,
"Nsnap_temp",isnap,idimid)
185 IF (
ASSOCIATED(dtz%XDATA_DTS))
THEN
186 itime =
SIZE(dtz%XDATA_DTS)
187 IF (itime/=0) iret = nf_def_dim(nid_nc,
"Nforc_tsz0",itime,idimid)
190 IF (ug%CGRID==
'GAUSS')
THEN
192 iret = nf_def_dim(nid_nc,
"Nlati",inlati,idimid)
195 IF (ldef) iret = nf_redef(nid_nc)
197 IF (ldef) iret = nf_enddef(nid_nc)
198 iret = nf_close(nid_nc)
202 IF (lhook) CALL dr_hook(
'INIT_OUTPUT_NC_N',1,zhook_handle)
subroutine create_file(HFILE, KDIMS, HNAME_DIM, KFILE_ID, KDIM_ID)
subroutine init_output_nc_n(BDD, CHE, CHN, CHU, DTS, DTT, DTZ, I, UG, U, DGU)
subroutine get_data_seaflux_conf_n(DTS, OSST_DATA, KTIME)
subroutine get_dim_full_n(U, KDIM_FULL)
subroutine get_isba_conf_n(I, HISBA, KPATCH, KGROUND_LAYER, KSNOW_LAYER, KNBIOMASS, KNLITTER, KNLITTLEVS, KNSOILCARB)
subroutine get_gridtype_gauss(PGRID_PAR, KNLATI, PLAPO, PLOPO, PCODIL, KNLOPA, KL, PLAT, PLON, PLAT_XY, PLON_XY, PMESH_SIZE, PLONINF, PLATINF, PLONSUP, PLATSUP)
subroutine ol_define_dim(UG, U, HPROGRAM, KLUOUT, KNI, KDIM1, HUNIT1, HUNIT2, PX, PY, KDIMS, KDDIM, HNAME_DIM, KNPATCH)
subroutine def_var_netcdf(DGU, KFILE_ID, HNAME, HLONG_NAME, KDIM_ID, HATT_TITLE, HATT_TEXT, KVAR_ID, KTYPE, KLEN)
subroutine get_bld_conf_n(BDD, DTT, ODATA_BLDTYPE, ODATA_BLD_AGE, ODATA_USETYPE, KDESC_ROOF_LAYER, KDESC_ROAD_LAYER, KDESC_WALL_LAYER, KDESC_FLOOR_LAYER, KDESC_CODE, KDESC_USE, KDESC_AGE, KDESC_BLD)