diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90 index 9e361758f9f2bacdc899da99d8f38934dbf23672..6f2dc6936390a9abf1c47bf30a7c77bfdc2da94c 100644 --- a/src/LIB/SURCOUCHE/src/mode_field.f90 +++ b/src/LIB/SURCOUCHE/src/mode_field.f90 @@ -1698,6 +1698,110 @@ END IF ! CPROGRAM=MESONH ! ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'SSO_ANIS' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: SSO_ANIS' +TFIELDLIST(IDX)%CUNITS = 'm' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_SSO_ANISOTROPY' +TFIELDLIST(IDX)%NGRID = 4 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 2 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'SSO_SLOPE' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: SSO_SLOPE' +TFIELDLIST(IDX)%CUNITS = '' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_SSO_SLOPE' +TFIELDLIST(IDX)%NGRID = 4 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 2 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'SSO_DIR' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: SSO_DIR' +TFIELDLIST(IDX)%CUNITS = 'degree' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_SSO_DIR' +TFIELDLIST(IDX)%NGRID = 4 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 2 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'AVG_ZS' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: AVG_ZS' +TFIELDLIST(IDX)%CUNITS = 'm' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_AVG_ZS' +TFIELDLIST(IDX)%NGRID = 4 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 2 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'SIL_ZS' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: SIL_ZS' +TFIELDLIST(IDX)%CUNITS = 'm' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_SIL_ZS' +TFIELDLIST(IDX)%NGRID = 4 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 2 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'MAX_ZS' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: MAX_ZS' +TFIELDLIST(IDX)%CUNITS = 'm' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_MAX_ZS' +TFIELDLIST(IDX)%NGRID = 4 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 2 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'MIN_ZS' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: MIN_ZS' +TFIELDLIST(IDX)%CUNITS = 'm' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_MIN_ZS' +TFIELDLIST(IDX)%NGRID = 4 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 2 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() +TFIELDLIST(IDX)%CMNHNAME = 'SSO_STDEV' +TFIELDLIST(IDX)%CSTDNAME = '' +TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: SSO_STDEV' +TFIELDLIST(IDX)%CUNITS = 'm' +TFIELDLIST(IDX)%CDIR = 'XY' +TFIELDLIST(IDX)%CCOMMENT = 'X_Y_SSO_STDEV' +TFIELDLIST(IDX)%NGRID = 4 +TFIELDLIST(IDX)%NTYPE = TYPEREAL +TFIELDLIST(IDX)%NDIMS = 2 +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) +IDX = IDX+1 +! +IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() TFIELDLIST(IDX)%CMNHNAME = 'ACPRR' TFIELDLIST(IDX)%CSTDNAME = 'rainfall_amount' TFIELDLIST(IDX)%CLONGNAME = 'MesoNH: ACPRR' @@ -1950,6 +2054,7 @@ USE MODD_ADV_n USE MODD_CONF_n USE MODD_DYN_n USE MODD_FIELD_n +USE MODD_GR_FIELD_n USE MODD_GRID_n USE MODD_LSFIELD_n USE MODD_PARAM_n @@ -2154,6 +2259,17 @@ IF (CRAD /= 'NONE') THEN END IF END IF ! +! MODD_GR_FIELD_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('SSO_ANIS', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XSSO_ANISOTROPY +CALL FIND_FIELD_ID_FROM_MNHNAME('SSO_SLOPE',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XSSO_SLOPE +CALL FIND_FIELD_ID_FROM_MNHNAME('SSO_DIR', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XSSO_DIRECTION +CALL FIND_FIELD_ID_FROM_MNHNAME('AVG_ZS', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XAVG_ZS +CALL FIND_FIELD_ID_FROM_MNHNAME('SIL_ZS', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XSIL_ZS +CALL FIND_FIELD_ID_FROM_MNHNAME('MAX_ZS', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XMAX_ZS +CALL FIND_FIELD_ID_FROM_MNHNAME('MIN_ZS', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XMIN_ZS +CALL FIND_FIELD_ID_FROM_MNHNAME('SSO_STDEV',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA => XSSO_STDEV +! ! MODD_PRECIP_n variables ! CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XACPRR @@ -2429,6 +2545,17 @@ IF (CRAD /= 'NONE') THEN END IF END IF ! +! MODD_GR_FIELD_n variables +! +CALL FIND_FIELD_ID_FROM_MNHNAME('SSO_ANIS', IID,IRESP); XSSO_ANISOTROPY => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('SSO_SLOPE',IID,IRESP); XSSO_SLOPE => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('SSO_DIR', IID,IRESP); XSSO_DIRECTION => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('AVG_ZS', IID,IRESP); XAVG_ZS => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('SIL_ZS', IID,IRESP); XSIL_ZS => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('MAX_ZS', IID,IRESP); XMAX_ZS => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('MIN_ZS', IID,IRESP); XMIN_ZS => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +CALL FIND_FIELD_ID_FROM_MNHNAME('SSO_STDEV',IID,IRESP); XSSO_STDEV => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA +! ! MODD_PRECIP_n variables ! CALL FIND_FIELD_ID_FROM_MNHNAME('ACPRR',IID,IRESP); XACPRR => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA diff --git a/src/MNH/goto_model_wrapper.f90 b/src/MNH/goto_model_wrapper.f90 index f9fc317c8103529869f6cda0c9aab9cb200b9a0e..d8294a83437cdc05ac1dc7874029d108a3f3bc4e 100644 --- a/src/MNH/goto_model_wrapper.f90 +++ b/src/MNH/goto_model_wrapper.f90 @@ -143,7 +143,7 @@ CALL DYNZD_GOTO_MODEL(KFROM,KTO) CALL FIELD_GOTO_MODEL(KFROM, KTO) CALL PAST_FIELD_GOTO_MODEL(KFROM, KTO) CALL GET_GOTO_MODEL(KFROM, KTO) -CALL GR_FIELD_GOTO_MODEL(KFROM, KTO) +!CALL GR_FIELD_GOTO_MODEL(KFROM, KTO) !$20140403 add grid_conf_proj_goto_model !CALL GRID_CONF_PROJ_GOTO_MODEL(KFROM,KTO) !$ diff --git a/src/MNH/mnhwrite_zs_dummyn.f90 b/src/MNH/mnhwrite_zs_dummyn.f90 index 7d68b018b16a9524010a0c9aaf4053e75fd32684..00e0a465f35fdba9f9a8c097417e098355ed6a5f 100644 --- a/src/MNH/mnhwrite_zs_dummyn.f90 +++ b/src/MNH/mnhwrite_zs_dummyn.f90 @@ -12,9 +12,11 @@ MODULE MODI_MNHWRITE_ZS_DUMMY_n ! ########################## INTERFACE - SUBROUTINE MNHWRITE_ZS_DUMMY_n(HPROGRAM) + SUBROUTINE MNHWRITE_ZS_DUMMY_n(TPFILE) ! -CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes +USE MODD_IO_ll, ONLY: TFILEDATA +! +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! File characteristics ! END SUBROUTINE MNHWRITE_ZS_DUMMY_n ! @@ -22,7 +24,7 @@ END INTERFACE END MODULE MODI_MNHWRITE_ZS_DUMMY_n ! ! ################################################### - SUBROUTINE MNHWRITE_ZS_DUMMY_n(HPROGRAM) + SUBROUTINE MNHWRITE_ZS_DUMMY_n(TPFILE) ! ################################################### ! !!**** *MNHWRITE_ZS_WH_DUMMY_n* - writes zs and dummy surface fields. @@ -64,7 +66,7 @@ USE MODD_GR_FIELD_n, ONLY : XSSO_STDEV, XSSO_ANISOTROPY, XSSO_DIRECTION, XSSO_SL ! USE MODD_LUNIT_n, ONLY : CLUOUT USE MODD_PARAM_n, ONLY : CSURF -USE MODD_LUNIT, ONLY : COUTFMFILE +USE MODD_IO_ll, ONLY : TFILEDATA ! USE MODI_WRITE_DUMMY_GR_FIELD_n ! @@ -75,7 +77,7 @@ IMPLICIT NONE !* 0.1 Declarations of arguments ! ------------------------- ! -CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling surf. schemes +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! File characteristics ! !* 0.2 Declarations of local variables ! ------------------------------- @@ -103,60 +105,21 @@ IF (CSURF /='EXTE') RETURN !* 2. Orographic characteristics : ! -------------------------- ! -YRECFM='SSO_ANIS' -YCOMMENT='X_Y_SSO_ANISOTROPY (m)' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(COUTFMFILE,YRECFM,CLUOUT,'XY',XSSO_ANISOTROPY,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='SSO_SLOPE' -YCOMMENT='X_Y_SSO_SLOPE ' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(COUTFMFILE,YRECFM,CLUOUT,'XY',XSSO_SLOPE,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='SSO_DIR' -YCOMMENT='X_Y_SSO_DIR (degree)' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(COUTFMFILE,YRECFM,CLUOUT,'XY',XSSO_DIRECTION,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='AVG_ZS' -YCOMMENT='X_Y_AVG_ZS (m)' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(COUTFMFILE,YRECFM,CLUOUT,'XY',XAVG_ZS,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='SIL_ZS' -YCOMMENT='X_Y_SIL_ZS (m)' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(COUTFMFILE,YRECFM,CLUOUT,'XY',XSIL_ZS,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='MAX_ZS' -YCOMMENT='X_Y_MAX_ZS (m)' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(COUTFMFILE,YRECFM,CLUOUT,'XY',XMAX_ZS,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='MIN_ZS' -YCOMMENT='X_Y_MIN_ZS (m)' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(COUTFMFILE,YRECFM,CLUOUT,'XY',XMIN_ZS,IGRID,ILENCH,YCOMMENT,IRESP) -! -YRECFM='SSO_STDEV' -YCOMMENT='X_Y_SSO_STDEV (m)' -IGRID=4 -ILENCH=LEN(YCOMMENT) -CALL FMWRIT(COUTFMFILE,YRECFM,CLUOUT,'XY',XSSO_STDEV,IGRID,ILENCH,YCOMMENT,IRESP) +CALL IO_WRITE_FIELD(TPFILE,'SSO_ANIS', CLUOUT,IRESP,XSSO_ANISOTROPY) +CALL IO_WRITE_FIELD(TPFILE,'SSO_SLOPE',CLUOUT,IRESP,XSSO_SLOPE) +CALL IO_WRITE_FIELD(TPFILE,'SSO_DIR', CLUOUT,IRESP,XSSO_DIRECTION) +CALL IO_WRITE_FIELD(TPFILE,'AVG_ZS', CLUOUT,IRESP,XAVG_ZS) +CALL IO_WRITE_FIELD(TPFILE,'SIL_ZS', CLUOUT,IRESP,XSIL_ZS) +CALL IO_WRITE_FIELD(TPFILE,'MAX_ZS', CLUOUT,IRESP,XMAX_ZS) +CALL IO_WRITE_FIELD(TPFILE,'MIN_ZS', CLUOUT,IRESP,XMIN_ZS) +CALL IO_WRITE_FIELD(TPFILE,'SSO_STDEV',CLUOUT,IRESP,XSSO_STDEV) ! !------------------------------------------------------------------------------- ! !* 3. Dummy fields ! ------------ ! -CALL WRITE_DUMMY_GR_FIELD_n(COUTFMFILE) +CALL WRITE_DUMMY_GR_FIELD_n(TPFILE) ! !------------------------------------------------------------------------------- ! diff --git a/src/MNH/modd_gr_fieldn.f90 b/src/MNH/modd_gr_fieldn.f90 index 9558f423eadb82f86c8da872f75306c997297641..867017137dfe361ddde771132e822192115188cc 100644 --- a/src/MNH/modd_gr_fieldn.f90 +++ b/src/MNH/modd_gr_fieldn.f90 @@ -56,33 +56,16 @@ USE MODD_PARAMETERS, ONLY: JPMODELMAX IMPLICIT NONE -TYPE GR_FIELD_t -! -! Surface fields (with 2 horizontal dimensions) -! - REAL, DIMENSION(:,:), POINTER :: XSSO_STDEV=>NULL() ! standard deviation of - ! Subgrid Scale Orography - REAL, DIMENSION(:,:), POINTER :: XSSO_ANISOTROPY=>NULL() ! anisotropy of S.S.O. - REAL, DIMENSION(:,:), POINTER :: XSSO_DIRECTION=>NULL() ! direction of S.S.O. - REAL, DIMENSION(:,:), POINTER :: XSSO_SLOPE=>NULL() ! slope of S.S.O. -! - REAL, DIMENSION(:,:), POINTER :: XAVG_ZS=>NULL() ! averaged orography - REAL, DIMENSION(:,:), POINTER :: XSIL_ZS=>NULL() ! silhouette orography - REAL, DIMENSION(:,:), POINTER :: XMIN_ZS=>NULL() ! minimum orography - REAL, DIMENSION(:,:), POINTER :: XMAX_ZS=>NULL() ! maximum orography -! -END TYPE GR_FIELD_t - -TYPE(GR_FIELD_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: GR_FIELD_MODEL -REAL, DIMENSION(:,:), POINTER :: XSSO_STDEV=>NULL() -REAL, DIMENSION(:,:), POINTER :: XSSO_ANISOTROPY=>NULL() -REAL, DIMENSION(:,:), POINTER :: XSSO_DIRECTION=>NULL() -REAL, DIMENSION(:,:), POINTER :: XSSO_SLOPE=>NULL() -REAL, DIMENSION(:,:), POINTER :: XAVG_ZS=>NULL() -REAL, DIMENSION(:,:), POINTER :: XSIL_ZS=>NULL() -REAL, DIMENSION(:,:), POINTER :: XMIN_ZS=>NULL() -REAL, DIMENSION(:,:), POINTER :: XMAX_ZS=>NULL() +REAL, DIMENSION(:,:), POINTER :: XSSO_STDEV=>NULL() ! standard deviation of + ! Subgrid Scale Orography +REAL, DIMENSION(:,:), POINTER :: XSSO_ANISOTROPY=>NULL() ! anisotropy of S.S.O. +REAL, DIMENSION(:,:), POINTER :: XSSO_DIRECTION=>NULL() ! direction of S.S.O. +REAL, DIMENSION(:,:), POINTER :: XSSO_SLOPE=>NULL() ! slope of S.S.O. +REAL, DIMENSION(:,:), POINTER :: XAVG_ZS=>NULL() ! averaged orography +REAL, DIMENSION(:,:), POINTER :: XSIL_ZS=>NULL() ! silhouette orography +REAL, DIMENSION(:,:), POINTER :: XMIN_ZS=>NULL() ! minimum orography +REAL, DIMENSION(:,:), POINTER :: XMAX_ZS=>NULL() ! maximum orography CONTAINS @@ -90,24 +73,24 @@ SUBROUTINE GR_FIELD_GOTO_MODEL(KFROM, KTO) INTEGER, INTENT(IN) :: KFROM, KTO ! ! Save current state for allocated arrays -GR_FIELD_MODEL(KFROM)%XSSO_STDEV=>XSSO_STDEV -GR_FIELD_MODEL(KFROM)%XSSO_ANISOTROPY=>XSSO_ANISOTROPY -GR_FIELD_MODEL(KFROM)%XSSO_DIRECTION=>XSSO_DIRECTION -GR_FIELD_MODEL(KFROM)%XSSO_SLOPE=>XSSO_SLOPE -GR_FIELD_MODEL(KFROM)%XAVG_ZS=>XAVG_ZS -GR_FIELD_MODEL(KFROM)%XSIL_ZS=>XSIL_ZS -GR_FIELD_MODEL(KFROM)%XMIN_ZS=>XMIN_ZS -GR_FIELD_MODEL(KFROM)%XMAX_ZS=>XMAX_ZS +!GR_FIELD_MODEL(KFROM)%XSSO_STDEV=>XSSO_STDEV !Done in FIELDLIST_GOTO_MODEL +!GR_FIELD_MODEL(KFROM)%XSSO_ANISOTROPY=>XSSO_ANISOTROPY !Done in FIELDLIST_GOTO_MODEL +!GR_FIELD_MODEL(KFROM)%XSSO_DIRECTION=>XSSO_DIRECTION !Done in FIELDLIST_GOTO_MODEL +!GR_FIELD_MODEL(KFROM)%XSSO_SLOPE=>XSSO_SLOPE !Done in FIELDLIST_GOTO_MODEL +!GR_FIELD_MODEL(KFROM)%XAVG_ZS=>XAVG_ZS !Done in FIELDLIST_GOTO_MODEL +!GR_FIELD_MODEL(KFROM)%XSIL_ZS=>XSIL_ZS !Done in FIELDLIST_GOTO_MODEL +!GR_FIELD_MODEL(KFROM)%XMIN_ZS=>XMIN_ZS !Done in FIELDLIST_GOTO_MODEL +!GR_FIELD_MODEL(KFROM)%XMAX_ZS=>XMAX_ZS !Done in FIELDLIST_GOTO_MODEL ! ! Current model is set to model KTO -XSSO_STDEV=>GR_FIELD_MODEL(KTO)%XSSO_STDEV -XSSO_ANISOTROPY=>GR_FIELD_MODEL(KTO)%XSSO_ANISOTROPY -XSSO_DIRECTION=>GR_FIELD_MODEL(KTO)%XSSO_DIRECTION -XSSO_SLOPE=>GR_FIELD_MODEL(KTO)%XSSO_SLOPE -XAVG_ZS=>GR_FIELD_MODEL(KTO)%XAVG_ZS -XSIL_ZS=>GR_FIELD_MODEL(KTO)%XSIL_ZS -XMIN_ZS=>GR_FIELD_MODEL(KTO)%XMIN_ZS -XMAX_ZS=>GR_FIELD_MODEL(KTO)%XMAX_ZS +!XSSO_STDEV=>GR_FIELD_MODEL(KTO)%XSSO_STDEV !Done in FIELDLIST_GOTO_MODEL +!XSSO_ANISOTROPY=>GR_FIELD_MODEL(KTO)%XSSO_ANISOTROPY !Done in FIELDLIST_GOTO_MODEL +!XSSO_DIRECTION=>GR_FIELD_MODEL(KTO)%XSSO_DIRECTION !Done in FIELDLIST_GOTO_MODEL +!XSSO_SLOPE=>GR_FIELD_MODEL(KTO)%XSSO_SLOPE !Done in FIELDLIST_GOTO_MODEL +!XAVG_ZS=>GR_FIELD_MODEL(KTO)%XAVG_ZS !Done in FIELDLIST_GOTO_MODEL +!XSIL_ZS=>GR_FIELD_MODEL(KTO)%XSIL_ZS !Done in FIELDLIST_GOTO_MODEL +!XMIN_ZS=>GR_FIELD_MODEL(KTO)%XMIN_ZS !Done in FIELDLIST_GOTO_MODEL +!XMAX_ZS=>GR_FIELD_MODEL(KTO)%XMAX_ZS !Done in FIELDLIST_GOTO_MODEL END SUBROUTINE GR_FIELD_GOTO_MODEL diff --git a/src/MNH/modeln.f90 b/src/MNH/modeln.f90 index c8bca71dfac1ceeb60e396a8fab81d261e08ac9a..3acb6944871ccc77aabe509896e7c613ad61be77 100644 --- a/src/MNH/modeln.f90 +++ b/src/MNH/modeln.f90 @@ -926,7 +926,7 @@ IF (IBAK < NBAK_NUMB ) THEN CALL IO_WRITE_HEADER_NC4(TBACKUPN(IBAK)%TFILE,CLUOUT) CALL WRITE_LFIFM_n(TBACKUPN(IBAK)%TFILE,YDADFILE) COUTFMFILE = YFMFILE - CALL MNHWRITE_ZS_DUMMY_n(CPROGRAM) + CALL MNHWRITE_ZS_DUMMY_n(TZBAKFILE) IF (CSURF=='EXTE') THEN CALL GOTO_SURFEX(IMI) CALL WRITE_SURF_ATM_n(YSURF_CUR,'MESONH','ALL',.FALSE.) diff --git a/src/MNH/prep_real_case.f90 b/src/MNH/prep_real_case.f90 index 1fbf2b90d48272a98752c0516a286cc3cd3608df..dc93b290bde83cb5bb364fd07bbe89539b22c121 100644 --- a/src/MNH/prep_real_case.f90 +++ b/src/MNH/prep_real_case.f90 @@ -1063,7 +1063,7 @@ CALL MNHREAD_ZS_DUMMY_n(YPGDFILE) !* writing in the output file ! COUTFMFILE=CINIFILE -CALL MNHWRITE_ZS_DUMMY_n(CPROGRAM) +CALL MNHWRITE_ZS_DUMMY_n(TZFILE) ! CALL DEALLOCATE_MODEL1(3) ! diff --git a/src/MNH/write_dummy_gr_fieldn.f90 b/src/MNH/write_dummy_gr_fieldn.f90 index 5ba90ee5dd09a2798c4414cebb8118655f17b8d5..dd1e0b09023cdb4bbb38cabf9fdb62d1009f67d6 100644 --- a/src/MNH/write_dummy_gr_fieldn.f90 +++ b/src/MNH/write_dummy_gr_fieldn.f90 @@ -14,9 +14,11 @@ MODULE MODI_WRITE_DUMMY_GR_FIELD_n ! INTERFACE ! - SUBROUTINE WRITE_DUMMY_GR_FIELD_n(HFMFILE) + SUBROUTINE WRITE_DUMMY_GR_FIELD_n(TPFILE) ! -CHARACTER(LEN=28), INTENT(IN) :: HFMFILE ! Name of FM-file to write +USE MODD_IO_ll, ONLY: TFILEDATA +! +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! File characteristics ! END SUBROUTINE WRITE_DUMMY_GR_FIELD_n ! @@ -25,7 +27,7 @@ END INTERFACE END MODULE MODI_WRITE_DUMMY_GR_FIELD_n ! ! ########################################## - SUBROUTINE WRITE_DUMMY_GR_FIELD_n(HFMFILE) + SUBROUTINE WRITE_DUMMY_GR_FIELD_n(TPFILE) ! ########################################## ! !!**** *WRITE_DUMMY_GR_FIELD_n* - routine to write in LFIFM file the @@ -66,6 +68,8 @@ END MODULE MODI_WRITE_DUMMY_GR_FIELD_n USE MODD_DUMMY_GR_FIELD_n, ONLY : NDUMMY_GR_NBR, CDUMMY_GR_NAME, & CDUMMY_GR_AREA, XDUMMY_GR_FIELDS USE MODD_LUNIT_n, ONLY : CLUOUT +USE MODE_FIELD, ONLY : TFIELDDATA,TYPEINT,TYPEREAL +USE MODD_IO_ll, ONLY : TFILEDATA ! USE MODE_FMWRIT ! @@ -74,24 +78,23 @@ IMPLICIT NONE !* 0.1 Declarations of arguments ! ------------------------- ! -CHARACTER(LEN=28), INTENT(IN) :: HFMFILE ! Name of FM-file to write +TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! File characteristics ! !* 0.2 Declarations of local variables ! ------------------------------- ! INTEGER :: IRESP ! IRESP : return-code if a problem appears ! at the open of the file in LFI routines -INTEGER :: IGRID ! IGRID : grid indicator -INTEGER :: ILENCH ! ILENCH : length of comment string INTEGER :: JDUMMY ! loop counter ! CHARACTER(LEN=16) :: YRECFM ! Name of the article to be written -CHARACTER(LEN=100):: YCOMMENT ! Comment string CHARACTER(LEN=20 ):: YSTRING20 ! string CHARACTER(LEN=3 ):: YSTRING03 ! string ! REAL, DIMENSION(:,:), ALLOCATABLE :: ZWORK2D ! +TYPE(TFIELDDATA) :: TZFIELD +! !------------------------------------------------------------------------------- ! !* 1. WRITES IN THE LFI FILE @@ -107,23 +110,35 @@ ALLOCATE(ZWORK2D(SIZE(XDUMMY_GR_FIELDS,1),SIZE(XDUMMY_GR_FIELDS,2))) !* 3. Dummy fields : ! ------------ ! -YRECFM='DUMMY_GR_NBR' -YCOMMENT='INTEGER' -ILENCH=LEN(YCOMMENT) -! -CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'--',NDUMMY_GR_NBR,0,ILENCH,YCOMMENT,IRESP) +TZFIELD%CMNHNAME = 'DUMMY_GR_NBR' +TZFIELD%CSTDNAME = '' +TZFIELD%CLONGNAME = 'MesoNH: DUMMY_GR_NBR' +TZFIELD%CUNITS = '' +TZFIELD%CDIR = '--' +TZFIELD%CCOMMENT = 'number of dummy pgd fields chosen by user' +TZFIELD%NGRID = 0 +TZFIELD%NTYPE = TYPEINT +TZFIELD%NDIMS = 0 +CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,NDUMMY_GR_NBR) ! DO JDUMMY=1,NDUMMY_GR_NBR - ! WRITE(YRECFM,'(A8,I3.3,A5)') 'DUMMY_GR',JDUMMY,' ' YSTRING20=CDUMMY_GR_NAME(JDUMMY) YSTRING03=CDUMMY_GR_AREA(JDUMMY) - YCOMMENT='X_Y_'//YRECFM//YSTRING20//YSTRING03// & - ' ' - IGRID=4 - ILENCH=LEN(YCOMMENT) + ! + TZFIELD%CMNHNAME = TRIM(YRECFM) + TZFIELD%CSTDNAME = '' + TZFIELD%CLONGNAME = 'MesoNH: '//TRIM(YRECFM) + TZFIELD%CUNITS = '' + TZFIELD%CDIR = 'XY' + TZFIELD%CCOMMENT = 'X_Y_'//YRECFM//YSTRING20//YSTRING03 + TZFIELD%NGRID = 4 + TZFIELD%NTYPE = TYPEREAL + TZFIELD%NDIMS = 2 + ! ZWORK2D(:,:) = XDUMMY_GR_FIELDS(:,:,JDUMMY) - CALL FMWRIT(HFMFILE,YRECFM,CLUOUT,'XY',ZWORK2D,IGRID,ILENCH,YCOMMENT,IRESP) + ! + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,CLUOUT,IRESP,ZWORK2D) END DO ! !-------------------------------------------------------------------------------