From 1e22d1d463c11534bd15f31b996c2a9a19b97e9c Mon Sep 17 00:00:00 2001 From: Philippe WAUTELET <philippe.wautelet@aero.obs-mip.fr> Date: Tue, 29 May 2018 15:06:34 +0200 Subject: [PATCH] Philippe 29/05/2018: IO: force EMIS field read/write to 2D --- src/MNH/ini_surf_rad.f90 | 17 ++++++++++++++--- src/MNH/write_lfifm1_for_diag_supp.f90 | 10 ++++++++-- src/MNH/write_lfin.f90 | 9 ++++++++- src/MNH/write_surf_mnh.f90 | 7 +++++++ 4 files changed, 37 insertions(+), 6 deletions(-) diff --git a/src/MNH/ini_surf_rad.f90 b/src/MNH/ini_surf_rad.f90 index f85795a8a..e3c30fdf8 100644 --- a/src/MNH/ini_surf_rad.f90 +++ b/src/MNH/ini_surf_rad.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2018 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 2003-2018 CNRS, Meteo-France and Universite Paul Sabatier !MNH_LIC This is part of the Meso-NH software governed by the CeCILL-C licence !MNH_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !MNH_LIC for details. version 1. @@ -65,7 +65,9 @@ END MODULE MODI_INI_SURF_RAD ! USE MODD_IO_ll, ONLY : TFILEDATA ! +USE MODE_FIELD, ONLY: FIND_FIELD_ID_FROM_MNHNAME, TFIELDDATA, TFIELDLIST USE MODE_FMREAD +USE MODE_MSG ! IMPLICIT NONE ! @@ -74,16 +76,25 @@ IMPLICIT NONE TYPE(TFILEDATA), INTENT(IN) :: TPINIFILE ! Initial file REAL, DIMENSION(:,:,:), INTENT(OUT) :: PDIR_ALB ! Direct albedo REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSCA_ALB ! Diffuse albedo -REAL, DIMENSION(:,:,:), INTENT(OUT) :: PEMIS ! emissivity +REAL, DIMENSION(:,:,:), INTENT(OUT) :: PEMIS ! emissivity REAL, DIMENSION(:,:), INTENT(OUT) :: PTSRAD ! radiative surface temperature ! !* 0.2 declarations of local variables ! +INTEGER :: IID, IRESP +TYPE(TFIELDDATA) :: TZFIELD !------------------------------------------------------------------------------- ! CALL IO_READ_FIELD(TPINIFILE,'DIR_ALB',PDIR_ALB) CALL IO_READ_FIELD(TPINIFILE,'SCA_ALB',PSCA_ALB) -CALL IO_READ_FIELD(TPINIFILE,'EMIS',PEMIS) +! +CALL PRINT_MSG(NVERB_INFO,'IO','INI_SURF_RAD','EMIS: reading only first band (copy on others)') +CALL FIND_FIELD_ID_FROM_MNHNAME('EMIS',IID,IRESP) +TZFIELD = TFIELDLIST(IID) +TZFIELD%NDIMS = 2 +CALL IO_READ_FIELD(TPINIFILE,TZFIELD,PEMIS(:,:,1)) +PEMIS(:,:,:) = SPREAD(SOURCE=PEMIS(:,:,1),DIM=3,NCOPIES=SIZE(PEMIS,3)) +! CALL IO_READ_FIELD(TPINIFILE,'TSRAD',PTSRAD) ! !------------------------------------------------------------------------------- diff --git a/src/MNH/write_lfifm1_for_diag_supp.f90 b/src/MNH/write_lfifm1_for_diag_supp.f90 index 270d4eb75..ccefe9c8a 100644 --- a/src/MNH/write_lfifm1_for_diag_supp.f90 +++ b/src/MNH/write_lfifm1_for_diag_supp.f90 @@ -214,7 +214,7 @@ REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZWAL ! variables needed for coarse graining REAL,DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) :: ZUT_PRM,ZVT_PRM,ZWT_PRM REAL,DIMENSION(SIZE(XTHT,1),SIZE(XTHT,2),SIZE(XTHT,3)) :: ZUU_AVG,ZVV_AVG,ZWW_AVG -INTEGER :: IDX +INTEGER :: IDX, IID, IRESP CHARACTER(LEN=3) :: YDX !------------------------------------------------------------------------------- ! @@ -560,7 +560,13 @@ IF (NRAD_3D >= 0) THEN CALL IO_WRITE_FIELD(TPFILE,'AZIM', XAZIM) CALL IO_WRITE_FIELD(TPFILE,'DIR_ALB', XDIR_ALB) CALL IO_WRITE_FIELD(TPFILE,'SCA_ALB', XSCA_ALB) - CALL IO_WRITE_FIELD(TPFILE,'EMIS', XEMIS) + ! + CALL PRINT_MSG(NVERB_INFO,'IO','WRITE_LFIFM1_FOR_DIAG_SUPP','EMIS: writing only first band') + CALL FIND_FIELD_ID_FROM_MNHNAME('EMIS',IID,IRESP) + TZFIELD = TFIELDLIST(IID) + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,XEMIS(:,:,1)) + ! CALL IO_WRITE_FIELD(TPFILE,'TSRAD', XTSRAD) ELSE PRINT*,'YOU WANT DIAGNOSTICS RELATED TO RADIATION' diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90 index fcae9c875..a7321c132 100644 --- a/src/MNH/write_lfin.f90 +++ b/src/MNH/write_lfin.f90 @@ -245,6 +245,7 @@ USE MODE_IO_ll, ONLY: UPCASE,CLOSE_ll USE MODE_FIELD USE MODE_GATHER_ll USE MODE_GRIDPROJ +USE MODE_MSG USE MODE_MODELN_HANDLER ! USE MODI_WRITE_LB_n @@ -1510,7 +1511,13 @@ IF (CRAD /= 'NONE') THEN CALL IO_WRITE_FIELD(TPFILE,'AZIM', XAZIM) CALL IO_WRITE_FIELD(TPFILE,'DIR_ALB', XDIR_ALB) CALL IO_WRITE_FIELD(TPFILE,'SCA_ALB', XSCA_ALB) - CALL IO_WRITE_FIELD(TPFILE,'EMIS', XEMIS) + ! + CALL PRINT_MSG(NVERB_INFO,'IO','WRITE_LFIFM_n','EMIS: writing only first band') + CALL FIND_FIELD_ID_FROM_MNHNAME('EMIS',IID,IRESP) + TZFIELD = TFIELDLIST(IID) + TZFIELD%NDIMS = 2 + CALL IO_WRITE_FIELD(TPFILE,TZFIELD,XEMIS(:,:,1)) + ! CALL IO_WRITE_FIELD(TPFILE,'TSRAD', XTSRAD) ENDIF ! diff --git a/src/MNH/write_surf_mnh.f90 b/src/MNH/write_surf_mnh.f90 index b151b5b47..9455eaa0a 100644 --- a/src/MNH/write_surf_mnh.f90 +++ b/src/MNH/write_surf_mnh.f90 @@ -82,6 +82,13 @@ IF (IRESP==0) THEN TPFIELD%NTYPE = KTYPE END IF !Modify and check NDIMS + ! + IF(TPFIELD%CMNHNAME=='EMIS' .AND. TPFIELD%NDIMS/=2) THEN + !Special (temporary) treatment for EMIS + CALL PRINT_MSG(NVERB_INFO,'IO',TRIM(HSUBR),'NDIMS forced to 2 for EMIS') + TPFIELD%NDIMS = 2 + END IF + ! IF (TPFIELD%NDIMS/=KDIMS) THEN WRITE(YTXT,'( I0,"/",I0 )') TPFIELD%NDIMS,KDIMS CALL PRINT_MSG(NVERB_WARNING,'IO',TRIM(HSUBR),'NDIMS different ('//TRIM(YTXT) & -- GitLab