From 4aab1d39238917e626a70e6265672db4f88000af Mon Sep 17 00:00:00 2001 From: Quentin Rodier <quentin.rodier@meteo.fr> Date: Wed, 14 Aug 2024 12:02:29 +0200 Subject: [PATCH] Quentin 14/08/2024: test cases, update ver_user to 571 --- .../HPC/GABLS1/SOURCES/coupling_tsz0n.F90 | 27 ++-- .../HPC/IBM/SOURCES/mode_sbl_depth.f90 | 4 +- .../LOCAL/COPT81/SOURCES/read_exsegn.f90 | 139 ++++++++---------- .../LOCAL/COPT81/SOURCES/set_rsou.f90 | 51 ++++--- 4 files changed, 113 insertions(+), 108 deletions(-) diff --git a/MY_RUN/INTEGRATION_CASES/HPC/GABLS1/SOURCES/coupling_tsz0n.F90 b/MY_RUN/INTEGRATION_CASES/HPC/GABLS1/SOURCES/coupling_tsz0n.F90 index 85996ced7..651a1a3c0 100644 --- a/MY_RUN/INTEGRATION_CASES/HPC/GABLS1/SOURCES/coupling_tsz0n.F90 +++ b/MY_RUN/INTEGRATION_CASES/HPC/GABLS1/SOURCES/coupling_tsz0n.F90 @@ -3,10 +3,11 @@ !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt !SFX_LIC for details. version 1. ! ############################################################################### -SUBROUTINE COUPLING_TSZ0_n (DTCO, UG, U, USS, IM, DTZ, NDST, SLT,BLOWSNW, HPROGRAM, HCOUPLING, & +SUBROUTINE COUPLING_TSZ0_n (DTCO, UG, U, USS, IM, DTZ, NDST, DST, SLT,BLOWSNW, HPROGRAM, HCOUPLING, & PTSTEP, KYEAR, KMONTH, KDAY, PTIME, KI, KSV, KSW, PTSUN,& PZENITH, PZENITH2, PAZIM, PZREF, PUREF, PZS, PU, PV, & - PQA, PTA, PRHOA, PSV, PCO2, HSV, PRAIN, PSNOW, PLW, & + PQA, PTA, PRHOA, PSV, PCO2,PIMPWET,PIMPDRY, HSV, PRAIN, & + PSNOW, PLW, & PDIR_SW, PSCA_SW, PSW_BANDS, PPS, PPA, PSFTQ, PSFTH, & PSFTS, PSFCO2, PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB, & PEMIS, PTSURF, PZ0, PZ0H, PQSURF, PPEW_A_COEF, & @@ -42,13 +43,15 @@ SUBROUTINE COUPLING_TSZ0_n (DTCO, UG, U, USS, IM, DTZ, NDST, SLT,BLOWSNW, HPROGR USE MODD_ISBA_n, ONLY : ISBA_P_t, ISBA_PE_t USE MODD_SURFEX_n, ONLY : ISBA_MODEL_t ! +USE MODD_PREP_SNOW, ONLY : NIMPUR +! USE MODD_DATA_COVER_n, ONLY : DATA_COVER_t USE MODD_SURF_ATM_GRID_n, ONLY : SURF_ATM_GRID_t USE MODD_SURF_ATM_n, ONLY : SURF_ATM_t USE MODD_SSO_n, ONLY : SSO_t USE MODD_DATA_TSZ0_n, ONLY : DATA_TSZ0_t USE MODD_DATA_ISBA_n, ONLY : DATA_ISBA_t -USE MODD_DST_n, ONLY : DST_NP_t +USE MODD_DST_n, ONLY : DST_NP_t, DST_t USE MODD_SLT_n, ONLY : SLT_t USE MODD_BLOWSNW_n, ONLY : BLOWSNW_t USE MODD_BLANK_n, ONLY : LDUMMY1 @@ -77,6 +80,7 @@ TYPE(SURF_ATM_t), INTENT(INOUT) :: U TYPE(SSO_t), INTENT(INOUT) :: USS TYPE(DATA_TSZ0_t), INTENT(INOUT) :: DTZ TYPE(DST_NP_t), INTENT(INOUT) :: NDST +TYPE(DST_t), INTENT(INOUT) :: DST TYPE(SLT_t), INTENT(INOUT) :: SLT TYPE(BLOWSNW_t), INTENT(INOUT) :: BLOWSNW ! @@ -84,9 +88,9 @@ TYPE(BLOWSNW_t), INTENT(INOUT) :: BLOWSNW CHARACTER(LEN=1), INTENT(IN) :: HCOUPLING ! type of coupling ! 'E' : explicit ! 'I' : implicit -INTEGER, INTENT(IN) :: KYEAR ! current year (UTC) -INTEGER, INTENT(IN) :: KMONTH ! current month (UTC) -INTEGER, INTENT(IN) :: KDAY ! current day (UTC) +INTEGER, INTENT(INOUT) :: KYEAR ! current year (UTC) +INTEGER, INTENT(INOUT) :: KMONTH ! current month (UTC) +INTEGER, INTENT(INOUT) :: KDAY ! current day (UTC) REAL, INTENT(IN) :: PTIME ! current time since midnight (UTC, s) INTEGER, INTENT(IN) :: KI ! number of points INTEGER, INTENT(IN) :: KSV ! number of scalars @@ -119,6 +123,8 @@ REAL, DIMENSION(KI), INTENT(IN) :: PPS ! pressure at atmospheric model su REAL, DIMENSION(KI), INTENT(IN) :: PPA ! pressure at forcing level (Pa) REAL, DIMENSION(KI), INTENT(IN) :: PZS ! atmospheric model orography (m) REAL, DIMENSION(KI), INTENT(IN) :: PCO2 ! CO2 concentration in the air (kg/m3) +REAL, DIMENSION(KI,NIMPUR), INTENT(IN) :: PIMPWET ! Wet impur deposition +REAL, DIMENSION(KI,NIMPUR), INTENT(IN) :: PIMPDRY ! Dry impur deposition REAL, DIMENSION(KI), INTENT(IN) :: PSNOW ! snow precipitation (kg/m2/s) REAL, DIMENSION(KI), INTENT(IN) :: PRAIN ! liquid precipitation (kg/m2/s) ! @@ -214,17 +220,20 @@ ENDDO !* 3. Call to surface scheme ! ---------------------- ! - CALL COUPLING_ISBA_OROGRAPHY_n(DTCO, UG, U, USS, IM%SB, IM%NAG, IM%CHI, IM%NCHI, IM%MGN, IM%MSF,IM%DTV, IM%ID, & + CALL COUPLING_ISBA_OROGRAPHY_n(DTCO, UG, U, USS, IM%SB, IM%NAG, IM%CHI, IM%NCHI, & + IM%MGN, IM%MSF, IM%DTV, IM%ID, & IM%NGB, IM%GB, IM%ISS, IM%NISS, IM%G, IM%NG, IM%O, IM%S, IM%K, IM%NK, & - IM%NP, IM%NPE, NDST, SLT,BLOWSNW, HPROGRAM, 'E', 0.001, KYEAR, & + IM%NP, IM%NPE, IM%AT, NDST, DST, SLT,BLOWSNW, HPROGRAM, 'E', 0.001, KYEAR, & KMONTH, KDAY, PTIME, KI, KSV, KSW, PTSUN, PZENITH, & PZENITH2, PAZIM, PZREF, PUREF, PZS, PU, PV, PQA, PTA, & - PRHOA, PSV, PCO2, HSV, PRAIN, PSNOW, PLW, PDIR_SW, & + PRHOA, PSV, PCO2,PIMPWET,PIMPDRY, HSV, PRAIN, PSNOW, PLW, & + PDIR_SW, & PSCA_SW, PSW_BANDS, PPS, PPA, PSFTQ, PSFTH, PSFTS, PSFCO2,& PSFU, PSFV, PTRAD, PDIR_ALB, PSCA_ALB, PEMIS, PTSURF, PZ0,& PZ0H, PQSURF, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, & PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, 'OK' ) ! + !ATTENTION : variation de Z0 dans le temps non implemente IF(LDUMMY1) THEN !Coefficient de Beare et al. et Cuxart et al. (2006) diff --git a/MY_RUN/INTEGRATION_CASES/HPC/IBM/SOURCES/mode_sbl_depth.f90 b/MY_RUN/INTEGRATION_CASES/HPC/IBM/SOURCES/mode_sbl_depth.f90 index 1f3fceabf..f7110ebd1 100644 --- a/MY_RUN/INTEGRATION_CASES/HPC/IBM/SOURCES/mode_sbl_depth.f90 +++ b/MY_RUN/INTEGRATION_CASES/HPC/IBM/SOURCES/mode_sbl_depth.f90 @@ -111,7 +111,7 @@ ZUSTAR2(:) = SQRT(ZWU(:)**2+ZWV(:)**2) !$mnh_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) ZWIND(:,:)=SQRT(PFLXU(:,:)**2+PFLXV(:,:)**2) !$mnh_end_expand_array(JIJ=IIJB:IIJE,JK=1:IKT) -CALL BL_DEPTH_DIAG(D,ZUSTAR2,PZZ(:,IKB),ZWIND,PZZ,CSTURB%XFTOP_O_FSURF,ZSBL_DYN) +CALL BL_DEPTH_DIAG(D,D%NKT,ZUSTAR2,PZZ(:,IKB),ZWIND,PZZ,CSTURB%XFTOP_O_FSURF,ZSBL_DYN) !$mnh_expand_array(JIJ=IIJB:IIJE) ZSBL_DYN(:) = CSTURB%XSBL_O_BL * ZSBL_DYN(:) !$mnh_end_expand_array(JIJ=IIJB:IIJE) @@ -120,7 +120,7 @@ ZSBL_DYN(:) = CSTURB%XSBL_O_BL * ZSBL_DYN(:) ! !* BL and SBL diagnosed with buoyancy flux criteria ! -CALL BL_DEPTH_DIAG(D,ZQ0,PZZ(:,IKB),PWTHV,PZZ,CSTURB%XFTOP_O_FSURF,ZSBL_THER) +CALL BL_DEPTH_DIAG(D,D%NKT,ZQ0,PZZ(:,IKB),PWTHV,PZZ,CSTURB%XFTOP_O_FSURF,ZSBL_THER) !$mnh_expand_array(JIJ=IIJB:IIJE) ZSBL_THER(:)= CSTURB%XSBL_O_BL * ZSBL_THER(:) !$mnh_end_expand_array(JIJ=IIJB:IIJE) diff --git a/MY_RUN/INTEGRATION_CASES/LOCAL/COPT81/SOURCES/read_exsegn.f90 b/MY_RUN/INTEGRATION_CASES/LOCAL/COPT81/SOURCES/read_exsegn.f90 index c8a3e2a83..f548f943e 100644 --- a/MY_RUN/INTEGRATION_CASES/LOCAL/COPT81/SOURCES/read_exsegn.f90 +++ b/MY_RUN/INTEGRATION_CASES/LOCAL/COPT81/SOURCES/read_exsegn.f90 @@ -1,4 +1,4 @@ -!MNH_LIC Copyright 1994-2023 CNRS, Meteo-France and Universite Paul Sabatier +!MNH_LIC Copyright 1994-2024 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. @@ -23,7 +23,8 @@ INTERFACE HTURB,HTOM,ORMC01,HRAD,HDCONV,HSCONV,HCLOUD,HELEC, & HEQNSYS,PTSTEP_ALL,HINIFILEPGD ) ! -USE MODD_IO, ONLY: TFILEDATA +USE MODD_IO, ONLY: TFILEDATA +USE MODD_PARAMETERS, ONLY: NFILENAMELGTMAX ! INTEGER, INTENT(IN) :: KMI ! Model index TYPE(TFILEDATA), INTENT(IN) :: TPEXSEGFILE ! EXSEG file @@ -72,7 +73,7 @@ CHARACTER (LEN=4), INTENT(IN) :: HCLOUD ! Kind of microphysical scheme CHARACTER (LEN=4), INTENT(IN) :: HELEC ! Kind of electrical scheme CHARACTER (LEN=*), INTENT(IN) :: HEQNSYS! type of equations' system REAL,DIMENSION(:), INTENT(INOUT):: PTSTEP_ALL ! Time STEP of ALL models -CHARACTER (LEN=*), INTENT(IN) :: HINIFILEPGD ! name of PGD file +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILEPGD ! name of PGD file ! END SUBROUTINE READ_EXSEG_n ! @@ -326,7 +327,6 @@ USE MODD_CONDSAMP USE MODD_CONF USE MODD_CONF_n, ONLY: CSTORAGE_TYPE USE MODD_CONFZ -! USE MODD_DRAG_n USE MODD_DUST USE MODD_DYN USE MODD_DYN_n, ONLY : LHORELAX_SVLIMA, LHORELAX_SVFIRE @@ -473,13 +473,13 @@ CHARACTER (LEN=4), INTENT(IN) :: HCLOUD ! Kind of microphysical scheme CHARACTER (LEN=4), INTENT(IN) :: HELEC ! Kind of electrical scheme CHARACTER (LEN=*), INTENT(IN) :: HEQNSYS! type of equations' system REAL,DIMENSION(:), INTENT(INOUT):: PTSTEP_ALL ! Time STEP of ALL models -CHARACTER (LEN=*), INTENT(IN) :: HINIFILEPGD ! name of PGD file +CHARACTER (LEN=NFILENAMELGTMAX), INTENT(IN) :: HINIFILEPGD ! name of PGD file ! !* 0.2 declarations of local variables ! CHARACTER(LEN=3) :: YMODEL INTEGER :: ILUSEG,ILUOUT ! logical unit numbers of EXSEG file and outputlisting -INTEGER :: JS,JCI,JI,JSV ! Loop indexes +INTEGER :: JS,JI,JSV ! Loop indexes LOGICAL :: GRELAX LOGICAL :: GFOUND ! Return code when searching namelist ! @@ -494,7 +494,6 @@ ILUSEG = TPEXSEGFILE%NLU ILUOUT = TLUOUT%NLU ! CALL INIT_NAM_LUNITN -CCPLFILE(:)=" " CALL INIT_NAM_CONFN CALL INIT_NAM_DYNN CALL INIT_NAM_ADVN @@ -523,6 +522,7 @@ CALL INIT_NAM_FIREn ! WRITE(UNIT=ILUOUT,FMT="(/,'READING THE EXSEG.NAM FILE')") CALL POSNAM( TPEXSEGFILE, 'NAM_LUNITN', GFOUND ) +CCPLFILE(:) = '' IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_LUNITn) CALL POSNAM( TPEXSEGFILE, 'NAM_CONFN', GFOUND ) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_CONFn) @@ -598,26 +598,8 @@ IF (KMI == 1) THEN CALL POSNAM( TPEXSEGFILE, 'NAM_BACKUP', GFOUND ) IF (GFOUND) THEN !Should have been allocated before in READ_DESFM_n - IF (.NOT.ALLOCATED(XBAK_TIME)) THEN - ALLOCATE(XBAK_TIME(NMODEL,NFILE_NUM_MAX)) - XBAK_TIME(:,:) = XNEGUNDEF - END IF - IF (.NOT.ALLOCATED(XOUT_TIME)) THEN - ALLOCATE(XOUT_TIME(NMODEL,NFILE_NUM_MAX)) !Allocate *OUT* variables to prevent - XOUT_TIME(:,:) = XNEGUNDEF - END IF - IF (.NOT.ALLOCATED(NBAK_STEP)) THEN - ALLOCATE(NBAK_STEP(NMODEL,NFILE_NUM_MAX)) - NBAK_STEP(:,:) = NNEGUNDEF - END IF - IF (.NOT.ALLOCATED(NOUT_STEP)) THEN - ALLOCATE(NOUT_STEP(NMODEL,NFILE_NUM_MAX)) !problems if NAM_OUTPUT does not exist - NOUT_STEP(:,:) = NNEGUNDEF - END IF - IF (.NOT.ALLOCATED(COUT_VAR)) THEN - ALLOCATE(COUT_VAR (NMODEL,JPOUTVARMAX)) - COUT_VAR(:,:) = '' - END IF + CALL BACKUP_NML_ALLOCATE() + CALL OUTPUT_NML_ALLOCATE() !Allocate *OUT* variables to prevent problems if NAM_OUTPUT does not exist READ(UNIT=ILUSEG,NML=NAM_BACKUP) ELSE CALL POSNAM( TPEXSEGFILE, 'NAM_FMOUT', GFOUND ) @@ -630,26 +612,8 @@ IF (KMI == 1) THEN CALL POSNAM( TPEXSEGFILE, 'NAM_OUTPUT', GFOUND ) IF (GFOUND) THEN !Should have been allocated before in READ_DESFM_n - IF (.NOT.ALLOCATED(XBAK_TIME)) THEN - ALLOCATE(XBAK_TIME(NMODEL,NFILE_NUM_MAX)) !Allocate *BAK* variables to prevent - XBAK_TIME(:,:) = XNEGUNDEF - END IF - IF (.NOT.ALLOCATED(XOUT_TIME)) THEN - ALLOCATE(XOUT_TIME(NMODEL,NFILE_NUM_MAX)) - XOUT_TIME(:,:) = XNEGUNDEF - END IF - IF (.NOT.ALLOCATED(NBAK_STEP)) THEN - ALLOCATE(NBAK_STEP(NMODEL,NFILE_NUM_MAX)) !problems if NAM_BACKUP does not exist - NBAK_STEP(:,:) = NNEGUNDEF - END IF - IF (.NOT.ALLOCATED(NOUT_STEP)) THEN - ALLOCATE(NOUT_STEP(NMODEL,NFILE_NUM_MAX)) - NOUT_STEP(:,:) = NNEGUNDEF - END IF - IF (.NOT.ALLOCATED(COUT_VAR)) THEN - ALLOCATE(COUT_VAR (NMODEL,JPOUTVARMAX)) - COUT_VAR(:,:) = '' - END IF + CALL BACKUP_NML_ALLOCATE() !Allocate *BAK* variables to prevent problems if NAM_BACKUP does not exist + CALL OUTPUT_NML_ALLOCATE() READ(UNIT=ILUSEG,NML=NAM_OUTPUT) END IF CALL POSNAM( TPEXSEGFILE, 'NAM_BUDGET', GFOUND ) @@ -1000,6 +964,31 @@ IF (.NOT. LHARAT .AND. LSTATNW) THEN CALL PRINT_MSG(NVERB_FATAL, 'GEN', 'READ_EXSEGN', & &'LSTATNW only tested in combination with HARATU and EDMFm!') ENDIF + +! Check that CSEG and CEXP does not contain unauthorized characters ('.' and ' ') +IF ( KMI == 1 ) THEN + DO JI = 1, LEN_TRIM(CSEG) + IF ( CSEG(JI:JI) == '.' ) THEN + CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'READ_EXSEGN', 'CSEG may not contain . character (replaced by _)' ) + CSEG(JI:JI) = '_' + END IF + IF ( CSEG(JI:JI) == ' ' ) THEN + CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'READ_EXSEGN', 'CSEG may not contain space character (replaced by _)' ) + CSEG(JI:JI) = '_' + END IF + END DO + + DO JI = 1, LEN_TRIM(CEXP) + IF ( CEXP(JI:JI) == '.' ) THEN + CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'READ_EXSEGN', 'CEXP may not contain . character (replaced by _)' ) + CEXP(JI:JI) = '_' + END IF + IF ( CEXP(JI:JI) == ' ' ) THEN + CALL PRINT_MSG( NVERB_WARNING, 'GEN', 'READ_EXSEGN', 'CEXP may not contain space character (replaced by _)' ) + CEXP(JI:JI) = '_' + END IF + END DO +END IF ! !-------------------------------------------------------------------------------! !* 2. FIRST INITIALIZATIONS @@ -2453,33 +2442,7 @@ END IF ! !* 4. CHECK COHERENCE BETWEEN EXSEG VARIABLES ! --------------------------------------- -! -!* 4.1 coherence between coupling variables in EXSEG file -! -IF (KMI == 1) THEN - NCPL_NBR = 0 - DO JCI = 1,JPCPLFILEMAX - IF (LEN_TRIM(CCPLFILE(JCI)) /= 0) THEN ! Finds the number - NCPL_NBR = NCPL_NBR + 1 ! of coupling files - ENDIF - IF (JCI/=JPCPLFILEMAX) THEN ! Deplaces the coupling files - IF ((LEN_TRIM(CCPLFILE(JCI)) == 0) .AND. &! names if one missing - (LEN_TRIM(CCPLFILE(JCI+1)) /= 0)) THEN - DO JI=JCI,JPCPLFILEMAX-1 - CCPLFILE(JI)=CCPLFILE(JI+1) - END DO - CCPLFILE(JPCPLFILEMAX)=' ' - END IF - END IF - END DO ! - IF (NCPL_NBR /= 0) THEN - LSTEADYLS = .FALSE. - ELSE - LSTEADYLS = .TRUE. - ENDIF -END IF -! !* 4.3 check consistency in forcing switches ! IF ( LFORCING ) THEN @@ -3027,7 +2990,22 @@ IF (.NOT. LNUMDIFTH .AND. LZDIFFU) THEN LNUMDIFTH=.TRUE. END IF ! -!* 4.8 Other +!* 4.8 Consistency with multi-level coupling +! +IF (NLEV_COUPLE > 1) THEN + IF (.NOT. LDRAGBLDG .AND. .NOT. LFLUXBLDG .AND. .NOT. LDRAGURBVEG) THEN + WRITE(UNIT=ILUOUT,FMT=9002) KMI + WRITE(ILUOUT,FMT=*) 'YOU WANT TO USE THE MULTI-LEVEL SURF-ATM COUPLING' + WRITE(ILUOUT,FMT=*) '(NAM_COUPLING_LEVELSn NLEV_COUPLE = ',NLEV_COUPLE + WRITE(ILUOUT,FMT=*) 'BUT ANY DRAG FROM BUILDING OR TREES ARE ACTIVATED.' + WRITE(ILUOUT,FMT=*) 'YOU MUST TURN TRUE ONE OR MORE OF THE DRAGS FROM NAM_DRAGBLDGn :' + WRITE(ILUOUT,FMT=*) 'LDRAGBLDG, LFLUXBLDG OR LDRAGURBVEG' + CALL PRINT_MSG(NVERB_FATAL,'GEN','READ_EXSEG_n', & + 'WITH NLEV_COUPLE>1, YOU MUST USE AT LEAST ONE OR MORE OF LDRAGBLDG, LFLUXBLDG OR LDRAGURBVEG') + END IF +END IF +! +!* 4.9 Other ! IF (XTNUDGING < 4.*XTSTEP) THEN XTNUDGING = 4.*XTSTEP @@ -3063,8 +3041,8 @@ END IF IF ( LEN_TRIM(HINIFILEPGD)>0 ) THEN IF ( CINIFILEPGD/=HINIFILEPGD ) THEN WRITE(UNIT=ILUOUT,FMT=9001) KMI - WRITE(ILUOUT,FMT=*) ' ERROR : in EXSEG1.nam, in NAM_LUNITn you have CINIFILEPGD= ',CINIFILEPGD - WRITE(ILUOUT,FMT=*) ' whereas in .des you have CINIFILEPGD= ',HINIFILEPGD + WRITE(ILUOUT,FMT=*) ' ERROR : in EXSEG1.nam, in NAM_LUNITn you have CINIFILEPGD= ',TRIM(CINIFILEPGD) + WRITE(ILUOUT,FMT=*) ' whereas in .des you have CINIFILEPGD= ',TRIM(HINIFILEPGD) WRITE(ILUOUT,FMT=*) ' Please check your Namelist ' WRITE(ILUOUT,FMT=*) ' For example, you may have specified the un-nested PGD file instead of the nested PGD file ' WRITE(ILUOUT,FMT=*) @@ -3086,7 +3064,14 @@ END IF !* 5. WE DO NOT FORGET TO UPDATE ALL DOLLARN NAMELIST VARIABLES ! --------------------------------------------------------- ! -CALL UPDATE_NAM_LUNITN +CALL UPDATE_NAM_LUNITN(KMI) +IF ( KMI == 1 ) THEN + IF (NCPL_NBR /= 0) THEN !To be done after UPDATE_NAM_LUNITN + LSTEADYLS = .FALSE. + ELSE + LSTEADYLS = .TRUE. + END IF +END IF CALL UPDATE_NAM_CONFN CALL UPDATE_NAM_DRAGTREEN CALL UPDATE_NAM_DRAGBLDGN diff --git a/MY_RUN/INTEGRATION_CASES/LOCAL/COPT81/SOURCES/set_rsou.f90 b/MY_RUN/INTEGRATION_CASES/LOCAL/COPT81/SOURCES/set_rsou.f90 index b443205f0..1e6a3d957 100644 --- a/MY_RUN/INTEGRATION_CASES/LOCAL/COPT81/SOURCES/set_rsou.f90 +++ b/MY_RUN/INTEGRATION_CASES/LOCAL/COPT81/SOURCES/set_rsou.f90 @@ -272,6 +272,7 @@ USE MODD_NETCDF USE MODD_OCEANH USE MODD_PARAMETERS, ONLY: JPHEXT USE MODD_TYPE_DATE +USE MODD_TIME_n, ONLY : TDTCUR ! USE MODE_ll USE MODE_MSG @@ -403,7 +404,8 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZOC_DEPTH REAL, DIMENSION(:), ALLOCATABLE :: ZOC_LE,ZOC_H REAL, DIMENSION(:), ALLOCATABLE :: ZOC_SW_DOWN,ZOC_SW_UP,ZOC_LW_DOWN,ZOC_LW_UP REAL, DIMENSION(:), ALLOCATABLE :: ZOC_TAUX,ZOC_TAUY - +! +REAL :: ZJZTIME ! TIME(HOUR) READ in PRE_IDEA1.NAM !-------------------------------------------------------------------------------- ! !* 1. PROLOGUE : INITIALIZE SOME CONSTANTS, RETRIEVE LOGICAL @@ -568,9 +570,10 @@ SELECT CASE(YKIND) TFRCLT(JKT)= ZFRCLT(JKT) XSSUFL_T(JKT)=ZSSUFL_T(JKT)/XRH00OCEAN XSSVFL_T(JKT)=ZSSVFL_T(JKT)/XRH00OCEAN - ! working in SI - XSSTFL_T(JKT)=ZSSTFL_T(JKT) /(3900.*XRH00OCEAN) - XSSOLA_T(JKT)=ZSSOLA_T(JKT) /(3900.*XRH00OCEAN) + + ! working in SI + XSSTFL_T(JKT)=ZSSTFL_T(JKT) /(XCL*XRH00OCEAN) + XSSOLA_T(JKT)=ZSSOLA_T(JKT) /(XCL*XRH00OCEAN) END DO DEALLOCATE(ZFRCLT) DEALLOCATE(ZSSUFL_T) @@ -582,11 +585,12 @@ SELECT CASE(YKIND) ! 2.0.2 Ocean standard initialize from netcdf files ! U,V,T,S at Z levels + Forcings at model TOP (sea surface) !-------------------------------------------------------------------------------- -! +! WRITTEN TO READ NETCDF file for a DWL case of DYNAMO-CINDY CASE ('STANDOCE') -! XP00=XP00OCEAN - READ(ILUPRE,*) ZPTOP ! P_atmosphere at sfc =P top domain +! HOUR OF FIRST FORCING on 14/11 TO USE AS READ in PRE_IDEA1.NAM + ZJZTIME= INT(TDTCUR%xtime) + READ(ILUPRE,*) ZPTOP ! P_atmosphere at sfc =P top ocean domain READ(ILUPRE,*) YINFILE, YINFISF WRITE(ILUOUT,FMT=*) 'Netcdf files to read:', YINFILE, YINFISF ! Open file containing initial profiles @@ -673,6 +677,8 @@ SELECT CASE(YKIND) ! ZHEIGHT used only in set_ rsou, defined as such ZHEIGHT(ILEVELM)=H_model ! Z oriented in same time to have a model domain axis going ! from 0m (ocean bottom/model bottom) towards H (ocean sfc/model top) + WRITE(ILUOUT,FMT=*) 'End gridmodel comput in trans domain: JKM U V ZHEIGHTU', & + JKM,ZU(JKM),ZV(JKM),ZHEIGHTU(JKM) END DO ! DEALLOCATE(ZOC_TEMPERATURE) @@ -731,30 +737,36 @@ SELECT CASE(YKIND) WRITE(ILUOUT,FMT=*) JKM, ZOC_LE(JKM), ZOC_H(JKM),ZOC_SW_DOWN(JKM),ZOC_SW_UP(JKM),& ZOC_LW_DOWN(JKM),ZOC_LW_UP(JKM),ZOC_TAUX(JKM),ZOC_TAUY(JKM) ENDDO - ! IFRCLT FORCINGS at sea surface - IFRCLT=idimlen + ! IFRCLT FORCINGS at sea surface are givean each 10 min (6/hour) +! start at ZJZTIME read in PRE_IDEA1.nam; skip forcings given from 13/11 22LT +ZJZTIME=(ZJZTIME+2)*6 + IFRCLT=idimlen-ZJZTIME +WRITE(ILUOUT,FMT=*) 'FORCINGS GIVEN FROM 13/11/11 22LT; FORCING Number USED ZJZTIME=', ZJZTIME +WRITE(ILUOUT,FMT=*) idimlen,'NB of given forcing', 'nb of first used forcing= ',IFRCLT ALLOCATE(ZFRCLT(IFRCLT)) ALLOCATE(ZSSUFL_T(IFRCLT)); ZSSUFL_T = 0.0 ALLOCATE(ZSSVFL_T(IFRCLT)); ZSSVFL_T = 0.0 ALLOCATE(ZSSTFL_T(IFRCLT)); ZSSTFL_T = 0.0 ALLOCATE(ZSSOLA_T(IFRCLT)); ZSSOLA_T = 0.0 - DO JKT=1,IFRCLT + DO JKM=1,IFRCLT + JKT=JKM +ZJZTIME ! Initial file for CINDY-DYNAMO: all fluxes correspond to the absolute value (>0) ! modele ocean: axe z dirigé du bas vers la sfc de l'océan ! => flux dirigé vers le haut (positif ocean vers l'atmopshere i.e. bas vers le haut) - ZSSOLA_T(JKT)=ZOC_SW_DOWN(JKT)-ZOC_SW_UP(JKT) - ZSSTFL_T(JKT)=(ZOC_LW_DOWN(JKT)-ZOC_LW_UP(JKT)-ZOC_LE(JKT)-ZOC_H(JKT)) + ZSSOLA_T(JKM)=ZOC_SW_DOWN(JKT)-ZOC_SW_UP(JKT) + ZSSTFL_T(JKM)=-(ZOC_LW_DOWN(JKT)-ZOC_LW_UP(JKT)-ZOC_LE(JKT)-ZOC_H(JKT)) ! assume that Tau given on file is along Ox ! rho_air UW_air = rho_ocean UW_ocean= N/m2 ! uw_ocean - ZSSUFL_T(JKT)=ZOC_TAUX(JKT) - ZSSVFL_T(JKT)=ZOC_TAUY(JKT) - WRITE(ILUOUT,FMT=*) 'Forcing Nb Sol NSol UW_oc VW',& - JKT,ZSSOLA_T(JKT),ZSSTFL_T(JKT),ZSSUFL_T(JKT),ZSSVFL_T(JKT) + ZSSUFL_T(JKM)=ZOC_TAUX(JKT) + ZSSVFL_T(JKM)=ZOC_TAUY(JKT) + WRITE(ILUOUT,FMT=*) 'Forcing Nb Sol NSol UW_oc VW',& + JKM,ZSSOLA_T(JKM),ZSSTFL_T(JKM),ZSSUFL_T(JKM),ZSSVFL_T(JKM) ENDDO ! Allocate and Writing the corresponding variables in module MODD_OCEAN_FRC NFRCLT=IFRCLT ! value to read later on file ? +! interval in s between 2 given forcings NINFRT=600 ALLOCATE(TFRCLT(NFRCLT)) ALLOCATE(XSSUFL_T(NFRCLT));XSSUFL_T(:)=0. @@ -762,14 +774,13 @@ SELECT CASE(YKIND) ALLOCATE(XSSTFL_T(NFRCLT));XSSTFL_T(:)=0. ALLOCATE(XSSOLA_T(NFRCLT));XSSOLA_T(:)=0. ! on passe en unités SI, signe, etc pour le modele ocean - ! W/m2 => SI : /(CP_mer * rho_mer) - ! a revoir dans tt le code pour mettre de svaleurs plus exactes + ! W/m2 => SI : m/S *K /(CP_mer * rho_mer) DO JKT=1,NFRCLT TFRCLT(JKT)= ZFRCLT(JKT) XSSUFL_T(JKT)=ZSSUFL_T(JKT)/XRH00OCEAN XSSVFL_T(JKT)=ZSSVFL_T(JKT)/XRH00OCEAN - XSSTFL_T(JKT)=ZSSTFL_T(JKT) /(3900.*XRH00OCEAN) - XSSOLA_T(JKT)=ZSSOLA_T(JKT) /(3900.*XRH00OCEAN) + XSSTFL_T(JKT)=ZSSTFL_T(JKT) /(XCL *XRH00OCEAN) + XSSOLA_T(JKT)=ZSSOLA_T(JKT) /(XCL *XRH00OCEAN) END DO DEALLOCATE(ZFRCLT) DEALLOCATE(ZSSUFL_T) -- GitLab