diff --git a/A-INSTALL b/A-INSTALL index f00a8da12aa6c5bf82b03edb29ce1ec6821efbb8..9c9ec44cf57ed689bf422f5825c5ca820b8c1183 100644 --- a/A-INSTALL +++ b/A-INSTALL @@ -23,7 +23,8 @@ # IX) OPTIONAL COMPILATION # a) MNH_FOREFIRE for forefire runs ( external package needed ) # b) MNH_RTTOV for optional radiative computation -# c) cleaning previous compiled version +# c) MNH_ECRAD for optional compilation of new ECRAD radiative library from ECMWF +# d) cleaning previous compiled version # # ^L @@ -930,8 +931,7 @@ git clone -b 2014.01 https://github.com/forefireAPI/firefront.git # or move/linked to the 'exe' directory of MesoNH # - -# see c) for cleaning previously version if needed +# see d) for cleaning previously version if needed # b) MNH_RTTOV for optional radiative computation # -------------------------------------- @@ -996,7 +996,36 @@ export VER_RTTOV=8.7 etc ... -# c) cleaning previous compiled version +# c) MNH_ECRAD for optional compilation of new ECRAD radiative library from ECMWF +# -------------------------------------- +# +# The full ECRAD package was not included into the open source version of Meso-NH +# because it needs a licence agrement. +# +# See here to get the licence & full sources : https://software.ecmwf.int/wiki/display/ECRAD/ECMWF+Radiation+Scheme+Home +# +# REM : some of the files modified for MNH are included in the directory ${SRC_MESONH}/src/LIB/RAD/ecrad-1.0.1_mnh +# +# Install the ECRAD package ecrad-1.0.1.tar.gz in the MNH tree directory + +cd ${SRC_MESONH}/src/LIB/RAD +tar xvfz ecrad-1.0.1.tar.gz + +# Configure & Compilation +export MNH_ECRAD=1 +./configure + +etc ... + +# +# REM : the 'profile_mesonh...' file & the 'dir_obj...' directory will be suffixed with an ECRAD extension +# +# Usage : +# 1) In namelist replace RAD='ECMW' be RAD='ECRAD' +# 2) Add link to 'ecrad-1.0.1/data' files +# see 007_16janvier/008_run2 test case for example + +# d) cleaning previous compiled version # -------------------------------------- # # If you have already compiled exactly the same version of MesoNH on this computer ( same $XYZ value ) diff --git a/MY_RUN/KTEST/004_Reunion/003_mesonh/EXSEG1.nam b/MY_RUN/KTEST/004_Reunion/003_mesonh/EXSEG1.nam.src similarity index 93% rename from MY_RUN/KTEST/004_Reunion/003_mesonh/EXSEG1.nam rename to MY_RUN/KTEST/004_Reunion/003_mesonh/EXSEG1.nam.src index b36eacb5e8b8fc03592f0255201fe989409ac7b0..0fc7cef532eced101f7aa222d4487dbe34f68880 100644 --- a/MY_RUN/KTEST/004_Reunion/003_mesonh/EXSEG1.nam +++ b/MY_RUN/KTEST/004_Reunion/003_mesonh/EXSEG1.nam.src @@ -10,7 +10,10 @@ LHORELAX_UVWTH = T, LHORELAX_RV = T, LVE_RELAX = T, NRIMX = 5, NRIMY = 5, XRIMKMAX = 0.01, XT4DIFU = 500. / &NAM_ADVn CUVW_ADV_SCHEME = "WENO_K" , CMET_ADV_SCHEME = "PPM_01",NWENO_ORDER=5,CTEMP_SCHEME='RK53' / -&NAM_PARAMn CTURB = "TKEL", CRAD = "FIXE", +&NAM_PARAMn CTURB = "TKEL", + CRAD = "ECMW", + !CRAD = "ECRA", + !CRAD = "FIXE", CCLOUD = "NONE", CDCONV = "NONE" / &NAM_LBCn CLBCX = 2*"OPEN", CLBCY = 2*"OPEN" / &NAM_TURBn CTURBLEN = "BL89", CTURBDIM = "1DIM", LSUBG_COND = F / diff --git a/MY_RUN/KTEST/004_Reunion/003_mesonh/run_mesonh_xyz b/MY_RUN/KTEST/004_Reunion/003_mesonh/run_mesonh_xyz index ac65934ee4f1777ee36bc43cc733d189651591a6..20bd41ff753622a8a6be00253681cb6b70bd6a7b 100755 --- a/MY_RUN/KTEST/004_Reunion/003_mesonh/run_mesonh_xyz +++ b/MY_RUN/KTEST/004_Reunion/003_mesonh/run_mesonh_xyz @@ -1,10 +1,21 @@ +#!/bin/bash #MNH_LIC Copyright 1994-2014 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. set -x set -e + ln -fs ../002_prep_ideal_case/REUNION_IDEA.{des,lfi,nc} . ln -sf ../001_prep_pgd/REUNION_PGD_1km5.{des,lfi,nc} . + +if [ "x${MNH_ECRAD}" != "x" ] ; then +ln -sf ${SRC_MESONH}/src/LIB/RAD/ecrad-1.0.1/data/RAD* . +ln -sf ${SRC_MESONH}/src/LIB/RAD/ecrad-1.0.1/data/*.nc . +sed -e's/ECMW/ECRA/g' EXSEG1.nam.src > EXSEG1.nam +else +cp EXSEG1.nam.src EXSEG1.nam +fi + rm -f REUNI.1.* OUT* time ${MPIRUN} MESONH${XYZ} diff --git a/MY_RUN/KTEST/007_16janvier/008_run2/EXSEG1.nam.src b/MY_RUN/KTEST/007_16janvier/008_run2/EXSEG1.nam.src index b0cc61975233671b4a7600b0487d39ed8efad8d5..26d75bc7239fc58e918f32b70bd64b788dd9987e 100644 --- a/MY_RUN/KTEST/007_16janvier/008_run2/EXSEG1.nam.src +++ b/MY_RUN/KTEST/007_16janvier/008_run2/EXSEG1.nam.src @@ -9,7 +9,9 @@ LHORELAX_UVWTH = T, LHORELAX_RV = T, LVE_RELAX = T, NRIMX = 5, NRIMY = 5, XRIMKMAX = 0.0083, XT4DIFU = 5000. / &NAM_ADVn CUVW_ADV_SCHEME="CEN4TH",CMET_ADV_SCHEME = "PPM_01", CSV_ADV_SCHEME = "PPM_01" CTEMP_SCHEME="LEFR"/ -&NAM_PARAMn CCLOUD = "KESS", CTURB = "TKEL", CRAD = "ECMW", +&NAM_PARAMn CCLOUD = "KESS", CTURB = "TKEL", + CRAD = "ECMW", + !CRAD = "ECRA", CDCONV = "KAFR",CSCONV="KAFR" / &NAM_PARAM_RADn XDTRAD = 3600., XDTRAD_CLONLY = 3600., NRAD_COLNBR = 400 / &NAM_PARAM_KAFRn XDTCONV = 300., NICE = 1 LREFRESH_ALL = T,LDOWN = T / diff --git a/MY_RUN/KTEST/007_16janvier/008_run2/EXSEG2.nam.src b/MY_RUN/KTEST/007_16janvier/008_run2/EXSEG2.nam.src index 9588726762cf86482c3cb54750d16a6f7111dd1e..d081e1bd102731717b9f7491536ababe39aa3dc3 100644 --- a/MY_RUN/KTEST/007_16janvier/008_run2/EXSEG2.nam.src +++ b/MY_RUN/KTEST/007_16janvier/008_run2/EXSEG2.nam.src @@ -4,7 +4,10 @@ LHORELAX_RS= F, LHORELAX_RI= F, LHORELAX_RG= F, LHORELAX_TKE= F, NRIMX = 0, NRIMY = 0, LVE_RELAX = T, XT4DIFU = 1500. / &NAM_ADVn CUVW_ADV_SCHEME="CEN4TH",CMET_ADV_SCHEME = "PPM_01", CSV_ADV_SCHEME = "PPM_01" CTEMP_SCHEME="LEFR"/ -&NAM_PARAMn CCLOUD = "KESS", CTURB = "TKEL", CRAD = "ECMW", CDCONV = "KAFR" / +&NAM_PARAMn CCLOUD = "KESS", CTURB = "TKEL", + CRAD = "ECMW", + !CRAD = "ECRA", + CDCONV = "KAFR" / &NAM_PARAM_RADn XDTRAD = 1800., XDTRAD_CLONLY = 1800., LCLEAR_SKY = F, NRAD_COLNBR = 400 / &NAM_PARAM_KAFRn XDTCONV = 300., NICE = 1, LREFRESH_ALL = T, diff --git a/MY_RUN/KTEST/007_16janvier/008_run2/run_mesonh_xyz b/MY_RUN/KTEST/007_16janvier/008_run2/run_mesonh_xyz index 9037483ec3ff202be89bc16c0cbeb03b16a0bc61..056e03e5d59195a194e20a2e9a32b79726f0ca18 100755 --- a/MY_RUN/KTEST/007_16janvier/008_run2/run_mesonh_xyz +++ b/MY_RUN/KTEST/007_16janvier/008_run2/run_mesonh_xyz @@ -5,11 +5,23 @@ #MNH_LIC for details. version 1. set -x set -e -#rm -f 16JAN* OUT* EXSEG?.nam -cp EXSEG1.nam.src EXSEG1.nam -cp EXSEG2.nam.src EXSEG2.nam + +rm -f 16JAN* OUT* EXSEG?.nam + ln -sf ../004_arp2lfi/16JAN_06_MNH.{des,lfi,nc} . ln -sf ../006_preal/16JAN_06_MNH2.{des,lfi,nc} . ln -sf ../003_nest/16JAN98_36km.neste1.{des,lfi,nc} . ln -sf ../003_nest/16JAN98_9km.neste1.{des,lfi,nc} . + +if [ "x${MNH_ECRAD}" != "x" ] ; then +ln -sf ${SRC_MESONH}/src/LIB/RAD/ecrad-1.0.1/data/RAD* . +ln -sf ${SRC_MESONH}/src/LIB/RAD/ecrad-1.0.1/data/*.nc . +sed -e's/ECMW/ECRA/g' EXSEG1.nam.src > EXSEG1.nam +sed -e's/ECMW/ECRA/g' EXSEG2.nam.src > EXSEG2.nam +else +cp EXSEG1.nam.src EXSEG1.nam +cp EXSEG2.nam.src EXSEG2.nam +fi + + time ${MPIRUN} MESONH${XYZ} diff --git a/MY_RUN/KTEST/007_16janvier/009_diag/run_diag_xyz b/MY_RUN/KTEST/007_16janvier/009_diag/run_diag_xyz index 4e95ef11d60b8731fe1fc619577346456ef9e5b3..27ffa99ea871b2f79b7d149dc36073667afa399b 100755 --- a/MY_RUN/KTEST/007_16janvier/009_diag/run_diag_xyz +++ b/MY_RUN/KTEST/007_16janvier/009_diag/run_diag_xyz @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash #MNH_LIC Copyright 1994-2014 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 @@ -13,6 +13,11 @@ ln -sf ../008_run2/16JAN.1.12B18.001.*{des,lfi,nc} . ln -sf ../003_nest/16JAN98_9km.neste1.* . ln -sf ../003_nest/16JAN98_36km.neste1.* . +if [ "x${MNH_ECRAD}" != "x" ] ; then +ln -sf ${SRC_MESONH}/src/LIB/RAD/ecrad-1.0.1/data/RAD* . +ln -sf ${SRC_MESONH}/src/LIB/RAD/ecrad-1.0.1/data/*.nc . +fi + cp DIAG1.nam1 DIAG1.nam time ${MPIRUN} DIAG${XYZ} #exit diff --git a/bin/spll b/bin/spll index 9d6da84562e85fe5c154fef36f30d5a3a07ec5cc..c8b0ada9e568862d70b7ffd1e3d8a9689e091453 100755 --- a/bin/spll +++ b/bin/spll @@ -25,7 +25,8 @@ ch_f77.fx90|nband_model.fx90|BASIC.f90|mode_tmat.f90|\ ini_cmfshall.f90|mode_double_double.f90|mode_fgau.f90|\ extern_usersurc_ll.f90|\ extern_userio.f90|fmreadwrit.f90|fm_read_ll.f90|poub.f90|\ -mode_glt.*.F90" +mode_glt.*.F90|\ +rrtm_.*.F90|srtm_.*.F90" # if [ "$SUF" = "f" ] diff --git a/conf/profile_mesonh.ihm b/conf/profile_mesonh.ihm index 24f07cea5d9c541c9474053ce7dd85bb01b34b72..576185e854d5b04ede432efe2d0251e5a33a8804 100755 --- a/conf/profile_mesonh.ihm +++ b/conf/profile_mesonh.ihm @@ -102,6 +102,11 @@ export MNH_FOREFIRE=${MNH_FOREFIRE} export MNH_RTTOV=${MNH_RTTOV} export VER_RTTOV=${VER_RTTOV} # +# ECRAD +# +export MNH_ECRAD=${MNH_ECRAD} +export VERSION_ECRAD=${VERSION_ECRAD} +# # OASIS # export VER_OASIS=${VER_OASIS} @@ -120,7 +125,7 @@ export VERSION_NCL=${VERSION_NCL} ########################################################## ########################################################## # -export XYZ="-\${ARCH}-R\${MNH_REAL}I\${MNH_INT}-\${VERSION_XYZ}\${VER_USER:+-\${VER_USER}}-\${VER_MPI}-\${OPTLEVEL}" +export XYZ="-\${ARCH}-R\${MNH_REAL}I\${MNH_INT}-\${VERSION_XYZ}\${MNH_ECRAD:+-ECRAD}\${VER_USER:+-\${VER_USER}}-\${VER_MPI}-\${OPTLEVEL}" #[ "x\${VER_USER}" != "x" ] && export XYZ="\${XYZ}-\${VER_USER}" # PATH to find tools like "makegen, etc ..." export BIN_TOOLS=${BIN_TOOLS} diff --git a/src/LIB/RAD/ECMWF_RAD/lwc.f90 b/src/LIB/RAD/ECMWF_RAD/lwc.f90 index 77ace7e12ec510d3b2f75883e143f33e1d007460..c10e3b17b56107dca51e84c21726c291ce309ce2 100644 --- a/src/LIB/RAD/ECMWF_RAD/lwc.f90 +++ b/src/LIB/RAD/ECMWF_RAD/lwc.f90 @@ -65,8 +65,8 @@ SUBROUTINE LWC & #include "tsmbkind.h" -USE YOERAD , ONLY : NOVLP -USE YOERDI , ONLY : REPCLC +USE OYOERAD , ONLY : NOVLP +USE OYOERDI , ONLY : REPCLC USE YOEOVLP , ONLY : RA1OVLP diff --git a/src/LIB/RAD/ECMWF_RAD/lwu.f90 b/src/LIB/RAD/ECMWF_RAD/lwu.f90 index 1bd44783aeb0960e6d855416192ca23b61abe8f8..adbf214cf3a2e58f33102fcb96bc52d63c5b502d 100644 --- a/src/LIB/RAD/ECMWF_RAD/lwu.f90 +++ b/src/LIB/RAD/ECMWF_RAD/lwu.f90 @@ -67,12 +67,12 @@ SUBROUTINE LWU & #include "tsmbkind.h" -USE YOMCST , ONLY : RG -USE YOESW , ONLY : RAER +USE OYOMCST , ONLY : RG +USE OYOESW , ONLY : RAER USE YOELW , ONLY : NSIL ,NUA ,NG1 ,NG1P1 ,& &ALWT ,BLWT ,RO3T ,RT1 ,TREF ,& &RVGCO2 ,RVGH2O ,RVGO3 -USE YOERDI , ONLY : RCH4 ,RN2O ,RCFC11 ,RCFC12 +USE OYOERDI , ONLY : RCH4 ,RN2O ,RCFC11 ,RCFC12 USE YOERDU , ONLY : R10E ,REPSCO ,REPSCQ diff --git a/src/LIB/RAD/ECMWF_RAD/olwc.f90 b/src/LIB/RAD/ECMWF_RAD/olwc.f90 index 03a43d5a9473abc409b60fad71dff3dfeeb39817..2e8f0f78289cb127e10cdd150183dcff8e2962d8 100644 --- a/src/LIB/RAD/ECMWF_RAD/olwc.f90 +++ b/src/LIB/RAD/ECMWF_RAD/olwc.f90 @@ -67,8 +67,8 @@ SUBROUTINE OLWC ( KIDIA,KFDIA,KLON,KLEV & #include "tsmbkind.h" -USE YOERAD , ONLY : NOVLP -USE YOERDI , ONLY : REPCLC +USE OYOERAD , ONLY : NOVLP +USE OYOERDI , ONLY : REPCLC USE YOEDBUG , ONLY : LDEBUG diff --git a/src/LIB/RAD/ECMWF_RAD/olwu.f90 b/src/LIB/RAD/ECMWF_RAD/olwu.f90 index f5ff733d896deea070d352a2e93e3a9cdcc07957..e6d2a9af597a86eebdb6a865f60c59fa0a58295a 100644 --- a/src/LIB/RAD/ECMWF_RAD/olwu.f90 +++ b/src/LIB/RAD/ECMWF_RAD/olwu.f90 @@ -62,12 +62,12 @@ SUBROUTINE OLWU ( KIDIA, KFDIA, KLON, KLEV & #include "tsmbkind.h" -USE YOMCST , ONLY : RG -USE YOESW , ONLY : RAER +USE OYOMCST , ONLY : RG +USE OYOESW , ONLY : RAER USE YOEOLW , ONLY : NISP ,NUA ,NG1 ,NG1P1 ,& &AT ,BT ,RT1 ,TREF ,OCT ,& &RVGCO2 ,RVGH2O ,RVGO3 -USE YOERDI , ONLY : RCH4 ,RN2O ,RCFC11 ,RCFC12 +USE OYOERDI , ONLY : RCH4 ,RN2O ,RCFC11 ,RCFC12 USE YOERDU , ONLY : R10E ,REPSCO ,REPSCQ USE YOEDBUG , ONLY : LDEBUG diff --git a/src/LIB/RAD/ECMWF_RAD/olwv.f90 b/src/LIB/RAD/ECMWF_RAD/olwv.f90 index 1afcb28c5f553c6468a44a40fd84d692f2c86f6f..100e51c84e8abdb526bd27566635c638d9a86bdb 100644 --- a/src/LIB/RAD/ECMWF_RAD/olwv.f90 +++ b/src/LIB/RAD/ECMWF_RAD/olwv.f90 @@ -85,7 +85,6 @@ INTEGER_M :: KFDIA INTEGER_M :: KIDIA INTEGER_M :: KLEV INTEGER_M :: KLON -INTEGER_M :: KTRAER INTEGER_M :: KUAER, KTRAER !----------------------------------------------------------------------- diff --git a/src/LIB/RAD/ECMWF_RAD/parrrtm.f90 b/src/LIB/RAD/ECMWF_RAD/oparrrtm.f90 similarity index 98% rename from src/LIB/RAD/ECMWF_RAD/parrrtm.f90 rename to src/LIB/RAD/ECMWF_RAD/oparrrtm.f90 index 43da9523d16936c4305df4730b9973f820c9a9ca..8fbe4897c6f25794954c2e8cb66e4cdf7627e62f 100644 --- a/src/LIB/RAD/ECMWF_RAD/parrrtm.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oparrrtm.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:36 !----------------------------------------------------------------- -MODULE PARRRTM +MODULE OPARRRTM #include "tsmbkind.h" @@ -68,4 +68,4 @@ INTEGER_M, PARAMETER :: NGS14 = 136 INTEGER_M, PARAMETER :: NGS15 = 138 ! ------------------------------------------------------------------ -END MODULE PARRRTM +END MODULE OPARRRTM diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb1.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb1.f90 similarity index 85% rename from src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb1.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb1.f90 index d99302b120cf9551e695377d0c90d77250c0acd8..33e0a9bdac2e4cd459ec0341a6209878bca390d5 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb1.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb1.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:36 !----------------------------------------------------------------- !*************************************************************************** -SUBROUTINE RRTM_CMBGB1 +SUBROUTINE ORRTM_CMBGB1 !*************************************************************************** ! The subroutines CMBGB1->CMBGB16 input the absorption coefficient @@ -21,12 +21,12 @@ SUBROUTINE RRTM_CMBGB1 ! Parameters #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG1 +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG1 -USE YOERRTO1 , ONLY : KAO, KBO, SELFREFO, FORREFO, FRACREFAO,FRACREFBO -USE YOERRTA1 , ONLY : KA , KB , SELFREF , FORREF , FRACREFA ,FRACREFB -USE YOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT -USE YOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT +USE OYOERRTO1 , ONLY : KAO, KBO, SELFREFO, FORREFO, FRACREFAO,FRACREFBO +USE OYOERRTA1 , ONLY : KA , KB , SELFREF , FORREF , FRACREFA ,FRACREFB +USE OYOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT +USE OYOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT IMPLICIT NONE @@ -110,4 +110,4 @@ DO IGC = 1,NGC(1) ENDDO RETURN -END SUBROUTINE RRTM_CMBGB1 +END SUBROUTINE ORRTM_CMBGB1 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb10.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb10.f90 similarity index 80% rename from src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb10.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb10.f90 index 0cd7e157aec4997e1c24c22ecda04b3ceba93578..7f69f2a2948106289e7efd1d6e7c16ab3eaa25b0 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb10.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb10.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:36 !----------------------------------------------------------------- !*************************************************************************** -SUBROUTINE RRTM_CMBGB10 +SUBROUTINE ORRTM_CMBGB10 !*************************************************************************** ! BAND 10: 1390-1480 cm-1 (low - H2O; high - H2O) @@ -14,12 +14,12 @@ SUBROUTINE RRTM_CMBGB10 ! Parameters #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG10 +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG10 -USE YOERRTO10, ONLY : KAO ,KBO ,FRACREFAO ,FRACREFBO -USE YOERRTA10, ONLY : KA ,KB ,FRACREFA ,FRACREFB -USE YOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT -USE YOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT +USE OYOERRTO10, ONLY : KAO ,KBO ,FRACREFAO ,FRACREFBO +USE OYOERRTA10, ONLY : KA ,KB ,FRACREFA ,FRACREFB +USE OYOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT +USE OYOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT IMPLICIT NONE @@ -86,4 +86,4 @@ DO IGC = 1,NGC(10) ENDDO RETURN -END SUBROUTINE RRTM_CMBGB10 +END SUBROUTINE ORRTM_CMBGB10 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb11.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb11.f90 similarity index 82% rename from src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb11.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb11.f90 index 960b3f70703ef41c471387b48f350e303758ec69..1161d0c56ff8cc48833e9fcea79b7d6104835d27 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb11.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb11.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:36 !----------------------------------------------------------------- !*************************************************************************** -SUBROUTINE RRTM_CMBGB11 +SUBROUTINE ORRTM_CMBGB11 !*************************************************************************** ! BAND 11: 1480-1800 cm-1 (low - H2O; high - H2O) @@ -14,12 +14,12 @@ SUBROUTINE RRTM_CMBGB11 ! Parameters #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG11 +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG11 -USE YOERRTO11, ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,FRACREFBO -USE YOERRTA11, ONLY : KA ,KB ,SELFREF ,FRACREFA ,FRACREFB -USE YOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT -USE YOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT +USE OYOERRTO11, ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,FRACREFBO +USE OYOERRTA11, ONLY : KA ,KB ,SELFREF ,FRACREFA ,FRACREFB +USE OYOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT +USE OYOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT IMPLICIT NONE @@ -100,4 +100,4 @@ DO IGC = 1,NGC(11) ENDDO RETURN -END SUBROUTINE RRTM_CMBGB11 +END SUBROUTINE ORRTM_CMBGB11 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb12.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb12.f90 similarity index 82% rename from src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb12.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb12.f90 index e7a169d5740c9897b390c09229cc9065858ac7b3..3f92b4999af861a8130ffb09e2442699f45a74ff 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb12.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb12.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:37 !----------------------------------------------------------------- !*************************************************************************** -SUBROUTINE RRTM_CMBGB12 +SUBROUTINE ORRTM_CMBGB12 !*************************************************************************** ! BAND 12: 1800-2080 cm-1 (low - H2O,CO2; high - nothing) @@ -14,12 +14,12 @@ SUBROUTINE RRTM_CMBGB12 ! Parameters #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG12 +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG12 -USE YOERRTO12, ONLY : KAO ,SELFREFO ,FRACREFAO -USE YOERRTA12, ONLY : KA ,SELFREF ,FRACREFA -USE YOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT -USE YOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT +USE OYOERRTO12, ONLY : KAO ,SELFREFO ,FRACREFAO +USE OYOERRTA12, ONLY : KA ,SELFREF ,FRACREFA +USE OYOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT +USE OYOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT IMPLICIT NONE @@ -91,4 +91,4 @@ DO JP = 1,8 ENDDO RETURN -END SUBROUTINE RRTM_CMBGB12 +END SUBROUTINE ORRTM_CMBGB12 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb13.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb13.f90 similarity index 82% rename from src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb13.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb13.f90 index 60e39c56e0cc5610873c8f1ea8460b79e1fffbad..1c4748ea23ff0727054b1d72b214d0f3675de542 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb13.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb13.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:37 !----------------------------------------------------------------- !*************************************************************************** -SUBROUTINE RRTM_CMBGB13 +SUBROUTINE ORRTM_CMBGB13 !*************************************************************************** ! BAND 13: 2080-2250 cm-1 (low - H2O,N2O; high - nothing) @@ -14,12 +14,12 @@ SUBROUTINE RRTM_CMBGB13 ! Parameters #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG13 +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG13 -USE YOERRTO13, ONLY : KAO ,SELFREFO ,FRACREFAO -USE YOERRTA13, ONLY : KA ,SELFREF ,FRACREFA -USE YOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT -USE YOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT +USE OYOERRTO13, ONLY : KAO ,SELFREFO ,FRACREFAO +USE OYOERRTA13, ONLY : KA ,SELFREF ,FRACREFA +USE OYOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT +USE OYOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT IMPLICIT NONE @@ -91,4 +91,4 @@ DO JP = 1,8 ENDDO RETURN -END SUBROUTINE RRTM_CMBGB13 +END SUBROUTINE ORRTM_CMBGB13 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb14.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb14.f90 similarity index 82% rename from src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb14.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb14.f90 index 554571dd07cdd8f7eae607a80255763ab906de5e..4b45f233b548e82b0d10167c56dc016866cb037c 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb14.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb14.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:37 !----------------------------------------------------------------- !*************************************************************************** -SUBROUTINE RRTM_CMBGB14 +SUBROUTINE ORRTM_CMBGB14 !*************************************************************************** ! BAND 14: 2250-2380 cm-1 (low - CO2; high - CO2) @@ -14,12 +14,12 @@ SUBROUTINE RRTM_CMBGB14 ! Parameters #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG14 +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG14 -USE YOERRTO14, ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,FRACREFBO -USE YOERRTA14, ONLY : KA ,KB ,SELFREF ,FRACREFA ,FRACREFB -USE YOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT -USE YOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT +USE OYOERRTO14, ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,FRACREFBO +USE OYOERRTA14, ONLY : KA ,KB ,SELFREF ,FRACREFA ,FRACREFB +USE OYOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT +USE OYOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT IMPLICIT NONE @@ -101,4 +101,4 @@ DO IGC = 1,NGC(14) ENDDO RETURN -END SUBROUTINE RRTM_CMBGB14 +END SUBROUTINE ORRTM_CMBGB14 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb15.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb15.f90 similarity index 82% rename from src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb15.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb15.f90 index cef2bb5a7e20b9d3c2001b7e8d6a5bf7befc70f9..82447a06b3d883581b349c162f0fafb47f527160 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb15.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb15.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:37 !----------------------------------------------------------------- !*************************************************************************** -SUBROUTINE RRTM_CMBGB15 +SUBROUTINE ORRTM_CMBGB15 !*************************************************************************** ! BAND 15: 2380-2600 cm-1 (low - N2O,CO2; high - nothing) @@ -14,12 +14,12 @@ SUBROUTINE RRTM_CMBGB15 ! Parameters #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG15 +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG15 -USE YOERRTO15, ONLY : KAO ,SELFREFO ,FRACREFAO -USE YOERRTA15, ONLY : KA ,SELFREF ,FRACREFA -USE YOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT -USE YOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT +USE OYOERRTO15, ONLY : KAO ,SELFREFO ,FRACREFAO +USE OYOERRTA15, ONLY : KA ,SELFREF ,FRACREFA +USE OYOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT +USE OYOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT IMPLICIT NONE @@ -91,4 +91,4 @@ DO JP = 1,8 ENDDO RETURN -END SUBROUTINE RRTM_CMBGB15 +END SUBROUTINE ORRTM_CMBGB15 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb16.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb16.f90 similarity index 82% rename from src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb16.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb16.f90 index 84fc3f57281a9acdcfc3e5c82d5daa1b192804a0..8ad40128f9c55499e3012652796a7212844df4cb 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb16.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb16.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:37 !----------------------------------------------------------------- !*************************************************************************** -SUBROUTINE RRTM_CMBGB16 +SUBROUTINE ORRTM_CMBGB16 !*************************************************************************** ! BAND 16: 2600-3000 cm-1 (low - H2O,CH4; high - nothing) @@ -14,12 +14,12 @@ SUBROUTINE RRTM_CMBGB16 ! Parameters #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG16 +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG16 -USE YOERRTO16, ONLY : KAO ,SELFREFO ,FRACREFAO -USE YOERRTA16, ONLY : KA ,SELFREF ,FRACREFA -USE YOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT -USE YOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT +USE OYOERRTO16, ONLY : KAO ,SELFREFO ,FRACREFAO +USE OYOERRTA16, ONLY : KA ,SELFREF ,FRACREFA +USE OYOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT +USE OYOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT IMPLICIT NONE @@ -92,4 +92,4 @@ DO JP = 1,8 ENDDO RETURN -END SUBROUTINE RRTM_CMBGB16 +END SUBROUTINE ORRTM_CMBGB16 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb2.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb2.f90 similarity index 85% rename from src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb2.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb2.f90 index b37d44b2fc08c956873a306c96b8572669af475f..41647b563fd2bafa1b76768f4cabefb20e3c5e4c 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb2.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb2.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:37 !----------------------------------------------------------------- !*************************************************************************** -SUBROUTINE RRTM_CMBGB2 +SUBROUTINE ORRTM_CMBGB2 !*************************************************************************** ! BAND 2: 250-500 cm-1 (low - H2O; high - H2O) @@ -14,14 +14,14 @@ SUBROUTINE RRTM_CMBGB2 ! Parameters #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG2 +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG2 -USE YOERRTO2 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO2 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO ,FORREFO -USE YOERRTA2 , ONLY : KA ,KB ,SELFREF ,FRACREFA ,& +USE OYOERRTA2 , ONLY : KA ,KB ,SELFREF ,FRACREFA ,& &FRACREFB ,FORREF ,REFPARAM -USE YOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT -USE YOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT +USE OYOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT +USE OYOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT IMPLICIT NONE @@ -125,4 +125,4 @@ DO IGC = 1,NGC(2) ENDDO RETURN -END SUBROUTINE RRTM_CMBGB2 +END SUBROUTINE ORRTM_CMBGB2 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb3.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb3.f90 similarity index 87% rename from src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb3.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb3.f90 index 15ceeadafeec438193990b8e291e9c1570df07cd..08d38a45e37cff337ae3b192d421f0b6fa93dfe7 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb3.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb3.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:37 !----------------------------------------------------------------- !*************************************************************************** -SUBROUTINE RRTM_CMBGB3 +SUBROUTINE ORRTM_CMBGB3 !*************************************************************************** ! BAND 3: 500-630 cm-1 (low - H2O,CO2; high - H2O,CO2) @@ -14,14 +14,14 @@ SUBROUTINE RRTM_CMBGB3 ! Parameters #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG3 +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG3 -USE YOERRTO3 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO3 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO ,FORREFO ,ABSN2OAO ,ABSN2OBO -USE YOERRTA3 , ONLY : KA ,KB ,SELFREF ,FRACREFA ,& +USE OYOERRTA3 , ONLY : KA ,KB ,SELFREF ,FRACREFA ,& &FRACREFB ,FORREF ,ABSN2OA ,ABSN2OB -USE YOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT -USE YOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT +USE OYOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT +USE OYOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT IMPLICIT NONE @@ -150,4 +150,4 @@ DO JP = 1,4 ENDDO RETURN -END SUBROUTINE RRTM_CMBGB3 +END SUBROUTINE ORRTM_CMBGB3 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb4.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb4.f90 similarity index 85% rename from src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb4.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb4.f90 index d63c3ed474034e3e14f82a4aaad9e3d38a4b5dc6..a40fdf66d106ceba8b8a1f1a67ba17856bcfa80d 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb4.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb4.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:37 !----------------------------------------------------------------- !*************************************************************************** -SUBROUTINE RRTM_CMBGB4 +SUBROUTINE ORRTM_CMBGB4 !*************************************************************************** ! BAND 4: 630-700 cm-1 (low - H2O,CO2; high - O3,CO2) @@ -14,12 +14,12 @@ SUBROUTINE RRTM_CMBGB4 ! Parameters #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG4 +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG4 -USE YOERRTO4 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,FRACREFBO -USE YOERRTA4 , ONLY : KA ,KB ,SELFREF ,FRACREFA ,FRACREFB -USE YOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT -USE YOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT +USE OYOERRTO4 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,FRACREFBO +USE OYOERRTA4 , ONLY : KA ,KB ,SELFREF ,FRACREFA ,FRACREFB +USE OYOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT +USE OYOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT IMPLICIT NONE @@ -135,4 +135,4 @@ DO JP = 1,5 ENDDO RETURN -END SUBROUTINE RRTM_CMBGB4 +END SUBROUTINE ORRTM_CMBGB4 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb5.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb5.f90 similarity index 87% rename from src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb5.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb5.f90 index 57e143f968b717e0ad7222cc30ea5f1b4e808900..b45472fc8f5641f5fc9d440006c1b5085fc1079a 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb5.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb5.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:37 !----------------------------------------------------------------- !*************************************************************************** -SUBROUTINE RRTM_CMBGB5 +SUBROUTINE ORRTM_CMBGB5 !*************************************************************************** ! BAND 5: 700-820 cm-1 (low - H2O,CO2; high - O3,CO2) @@ -14,14 +14,14 @@ SUBROUTINE RRTM_CMBGB5 ! Parameters #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG5 +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG5 -USE YOERRTO5 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO5 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO, CCL4O -USE YOERRTA5 , ONLY : KA ,KB ,SELFREF ,FRACREFA ,& +USE OYOERRTA5 , ONLY : KA ,KB ,SELFREF ,FRACREFA ,& &FRACREFB , CCL4 -USE YOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT -USE YOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT +USE OYOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT +USE OYOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT IMPLICIT NONE @@ -149,4 +149,4 @@ DO JP = 1,4 ENDDO RETURN -END SUBROUTINE RRTM_CMBGB5 +END SUBROUTINE ORRTM_CMBGB5 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb6.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb6.f90 similarity index 83% rename from src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb6.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb6.f90 index 7c36241245a1f64adca4f08d72c27e17a5486f3b..9c9f92d7a7c23d430e219cf71ede274665847f9f 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb6.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb6.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:37 !----------------------------------------------------------------- !*************************************************************************** -SUBROUTINE RRTM_CMBGB6 +SUBROUTINE ORRTM_CMBGB6 !*************************************************************************** ! BAND 6: 820-980 cm-1 (low - H2O; high - nothing) @@ -14,14 +14,14 @@ SUBROUTINE RRTM_CMBGB6 ! Parameters #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG6 +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG6 -USE YOERRTO6 , ONLY : KAO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO6 , ONLY : KAO ,SELFREFO ,FRACREFAO ,& &ABSCO2O ,CFC11ADJO,CFC12O -USE YOERRTA6 , ONLY : KA ,SELFREF ,FRACREFA ,& +USE OYOERRTA6 , ONLY : KA ,SELFREF ,FRACREFA ,& &ABSCO2 ,CFC11ADJ ,CFC12 -USE YOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT -USE YOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT +USE OYOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT +USE OYOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT IMPLICIT NONE @@ -97,4 +97,4 @@ DO IGC = 1,NGC(6) ENDDO RETURN -END SUBROUTINE RRTM_CMBGB6 +END SUBROUTINE ORRTM_CMBGB6 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb7.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb7.f90 similarity index 85% rename from src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb7.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb7.f90 index 03d1ed0fa5f2034883df90f5256aacb92f1b7b11..bd472da56850ddfefa40bcee502de3dd66bbf97b 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb7.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb7.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:37 !----------------------------------------------------------------- !*************************************************************************** -SUBROUTINE RRTM_CMBGB7 +SUBROUTINE ORRTM_CMBGB7 !*************************************************************************** ! BAND 7: 980-1080 cm-1 (low - H2O,O3; high - O3) @@ -14,14 +14,14 @@ SUBROUTINE RRTM_CMBGB7 ! Parameters #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG7 +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG7 -USE YOERRTO7 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO7 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO, ABSCO2O -USE YOERRTA7 , ONLY : KA ,KB ,SELFREF ,FRACREFA ,& +USE OYOERRTA7 , ONLY : KA ,KB ,SELFREF ,FRACREFA ,& &FRACREFB , ABSCO2 -USE YOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT -USE YOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT +USE OYOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT +USE OYOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT IMPLICIT NONE @@ -129,4 +129,4 @@ DO IGC = 1,NGC(7) ENDDO RETURN -END SUBROUTINE RRTM_CMBGB7 +END SUBROUTINE ORRTM_CMBGB7 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb8.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb8.f90 similarity index 86% rename from src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb8.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb8.f90 index 389749465294eec0ac3b51230116edb1da6c2620..305d9331a4807e9d026a665edb8dbffebe538397 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb8.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb8.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:37 !----------------------------------------------------------------- !*************************************************************************** -SUBROUTINE RRTM_CMBGB8 +SUBROUTINE ORRTM_CMBGB8 !*************************************************************************** ! BAND 8: 1080-1180 cm-1 (low (i.e.>~300mb) - H2O; high - O3) @@ -14,16 +14,16 @@ SUBROUTINE RRTM_CMBGB8 ! Parameters #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG8 +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG8 -USE YOERRTO8 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO8 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO, ABSCO2AO,ABSCO2BO,ABSN2OAO ,ABSN2OBO ,& &CFC12O , CFC22ADJO -USE YOERRTA8 , ONLY : KA ,KB ,SELFREF ,FRACREFA ,& +USE OYOERRTA8 , ONLY : KA ,KB ,SELFREF ,FRACREFA ,& &FRACREFB , ABSCO2A ,ABSCO2B ,ABSN2OA ,ABSN2OB ,& &CFC12 , CFC22ADJ -USE YOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT -USE YOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT +USE OYOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT +USE OYOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT IMPLICIT NONE @@ -110,4 +110,4 @@ DO IGC = 1,NGC(8) ENDDO RETURN -END SUBROUTINE RRTM_CMBGB8 +END SUBROUTINE ORRTM_CMBGB8 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb9.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb9.f90 similarity index 86% rename from src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb9.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb9.f90 index 8273646c353643b0d386db71bf7061f6474d9373..fe80a6e3964d04c2b2c648f658f2fbacfe3b1c2c 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_cmbgb9.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_cmbgb9.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:37 !----------------------------------------------------------------- !*************************************************************************** -SUBROUTINE RRTM_CMBGB9 +SUBROUTINE ORRTM_CMBGB9 !*************************************************************************** ! BAND 9: 1180-1390 cm-1 (low - H2O,CH4; high - CH4) @@ -14,14 +14,14 @@ SUBROUTINE RRTM_CMBGB9 ! Parameters #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG9 +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,NG9 -USE YOERRTO9 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO9 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO, ABSN2OO -USE YOERRTA9 , ONLY : KA ,KB ,SELFREF ,FRACREFA ,& +USE OYOERRTA9 , ONLY : KA ,KB ,SELFREF ,FRACREFA ,& &FRACREFB , ABSN2O -USE YOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT -USE YOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT +USE OYOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT +USE OYOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT IMPLICIT NONE @@ -141,4 +141,4 @@ DO IGC = 1,NGC(9) ENDDO RETURN -END SUBROUTINE RRTM_CMBGB9 +END SUBROUTINE ORRTM_CMBGB9 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_ecrt_140gp.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_ecrt_140gp.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/rrtm_ecrt_140gp.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_ecrt_140gp.f90 index 45fd967198e62a18a0b41fe3f8c458eb0f8a345e..b24494ea08983d9d2015048bb148d8e2cd03786d 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_ecrt_140gp.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_ecrt_140gp.f90 @@ -1,6 +1,6 @@ !****************** SUBROUTINE RRTM_ECRT_140GP ************************** -SUBROUTINE RRTM_ECRT_140GP & +SUBROUTINE ORRTM_ECRT_140GP & &( iplon, klon , klev, kcld & &, paer , paph , pap & &, pts , pth , pt & @@ -22,11 +22,11 @@ SUBROUTINE RRTM_ECRT_140GP & #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,JPLAY ,& +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,JPLAY ,& &JPINPX -USE YOERAD , ONLY : NOVLP -USE YOERDI , ONLY : RCARDI ,RCH4 ,RN2O ,RCFC11 ,RCFC12 -USE YOESW , ONLY : RAER +USE OYOERAD , ONLY : NOVLP +USE OYOERDI , ONLY : RCARDI ,RCH4 ,RN2O ,RCFC11 ,RCFC12 +USE OYOESW , ONLY : RAER !------------------------------Arguments-------------------------------- @@ -420,5 +420,5 @@ ENDIF ! ------------------------------------------------------------------ RETURN -END SUBROUTINE RRTM_ECRT_140GP +END SUBROUTINE ORRTM_ECRT_140GP diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_gasabs1a_140gp.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_gasabs1a_140gp.f90 similarity index 78% rename from src/LIB/RAD/ECMWF_RAD/rrtm_gasabs1a_140gp.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_gasabs1a_140gp.f90 index 0ec331027ae27939314ff2b99791b05b87574a42..a372b6d9bd58e24cca78cbdb1fb7aa43cc4376c6 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_gasabs1a_140gp.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_gasabs1a_140gp.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:37 !----------------------------------------------------------------- -SUBROUTINE RRTM_GASABS1A_140GP (KLEV,ATR1,OD,TF1,COLDRY,WX,& +SUBROUTINE ORRTM_GASABS1A_140GP (KLEV,ATR1,OD,TF1,COLDRY,WX,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,FORFAC,JP,JT,JT1,ONEMINUS,& &COLH2O,COLCO2,COLO3,COLN2O,COLCH4,COLO2,CO2MULT,& &LAYTROP,LAYSWTCH,LAYLOW,SELFFAC,SELFFRAC,INDSELF,PFRAC) @@ -13,25 +13,25 @@ SUBROUTINE RRTM_GASABS1A_140GP (KLEV,ATR1,OD,TF1,COLDRY,WX,& #include "tsmbkind.h" -USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC -USE YOERRTAB , ONLY : TRANS ,BPADE +USE OPARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC +USE OYOERRTAB , ONLY : TRANS ,BPADE ! -USE MODI_RRTM_TAUMOL1 -USE MODI_RRTM_TAUMOL2 -USE MODI_RRTM_TAUMOL3 -USE MODI_RRTM_TAUMOL4 -USE MODI_RRTM_TAUMOL5 -USE MODI_RRTM_TAUMOL6 -USE MODI_RRTM_TAUMOL7 -USE MODI_RRTM_TAUMOL8 -USE MODI_RRTM_TAUMOL9 -USE MODI_RRTM_TAUMOL10 -USE MODI_RRTM_TAUMOL11 -USE MODI_RRTM_TAUMOL12 -USE MODI_RRTM_TAUMOL13 -USE MODI_RRTM_TAUMOL14 -USE MODI_RRTM_TAUMOL15 -USE MODI_RRTM_TAUMOL16 +!USE MODI_ORRTM_TAUMOL1 +!USE MODI_ORRTM_TAUMOL2 +!USE MODI_ORRTM_TAUMOL3 +!USE MODI_ORRTM_TAUMOL4 +!USE MODI_ORRTM_TAUMOL5 +!USE MODI_ORRTM_TAUMOL6 +!USE MODI_ORRTM_TAUMOL7 +!USE MODI_ORRTM_TAUMOL8 +!USE MODI_ORRTM_TAUMOL9 +!USE MODI_ORRTM_TAUMOL10 +!USE MODI_ORRTM_TAUMOL11 +!USE MODI_ORRTM_TAUMOL12 +!USE MODI_ORRTM_TAUMOL13 +!USE MODI_ORRTM_TAUMOL14 +!USE MODI_ORRTM_TAUMOL15 +!USE MODI_ORRTM_TAUMOL16 ! IMPLICIT NONE @@ -95,52 +95,52 @@ REAL_B :: ODEPTH, SECANG, TF !- SECANG is equal to the secant of the diffusivity angle. SECANG = 1.66_JPRB -CALL RRTM_TAUMOL1 (KLEV,TAU,& +CALL ORRTM_TAUMOL1 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,FORFAC,JP,JT,JT1,& &COLH2O,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) -CALL RRTM_TAUMOL2 (KLEV,TAU,COLDRY,& +CALL ORRTM_TAUMOL2 (KLEV,TAU,COLDRY,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,FORFAC,JP,JT,JT1,& &COLH2O,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) -CALL RRTM_TAUMOL3 (KLEV,TAU,& +CALL ORRTM_TAUMOL3 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,FORFAC,JP,JT,JT1,ONEMINUS,& &COLH2O,COLCO2,COLN2O,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) -CALL RRTM_TAUMOL4 (KLEV,TAU,& +CALL ORRTM_TAUMOL4 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,FORFAC,JP,JT,JT1,ONEMINUS,& &COLH2O,COLCO2,COLO3,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) -CALL RRTM_TAUMOL5 (KLEV,TAU,WX,& +CALL ORRTM_TAUMOL5 (KLEV,TAU,WX,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,FORFAC,JP,JT,JT1,ONEMINUS,& &COLH2O,COLCO2,COLO3,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) -CALL RRTM_TAUMOL6 (KLEV,TAU,WX,& +CALL ORRTM_TAUMOL6 (KLEV,TAU,WX,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,& &COLH2O,CO2MULT,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) -CALL RRTM_TAUMOL7 (KLEV,TAU,& +CALL ORRTM_TAUMOL7 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,ONEMINUS,& &COLH2O,COLO3,CO2MULT,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) -CALL RRTM_TAUMOL8 (KLEV,TAU,WX,& +CALL ORRTM_TAUMOL8 (KLEV,TAU,WX,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,& &COLH2O,COLO3,COLN2O,CO2MULT,LAYSWTCH,SELFFAC,SELFFRAC,INDSELF,PFRAC) -CALL RRTM_TAUMOL9 (KLEV,TAU,& +CALL ORRTM_TAUMOL9 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,ONEMINUS,& &COLH2O,COLN2O,COLCH4,LAYTROP,LAYSWTCH,LAYLOW,SELFFAC,SELFFRAC,INDSELF,PFRAC) -CALL RRTM_TAUMOL10 (KLEV,TAU,& +CALL ORRTM_TAUMOL10 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,& &COLH2O,LAYTROP,PFRAC) -CALL RRTM_TAUMOL11 (KLEV,TAU,& +CALL ORRTM_TAUMOL11 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,& &COLH2O,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) -CALL RRTM_TAUMOL12 (KLEV,TAU,& +CALL ORRTM_TAUMOL12 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,ONEMINUS,& &COLH2O,COLCO2,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) -CALL RRTM_TAUMOL13 (KLEV,TAU,& +CALL ORRTM_TAUMOL13 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,ONEMINUS,& &COLH2O,COLN2O,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) -CALL RRTM_TAUMOL14 (KLEV,TAU,& +CALL ORRTM_TAUMOL14 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,& &COLCO2,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) -CALL RRTM_TAUMOL15 (KLEV,TAU,& +CALL ORRTM_TAUMOL15 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,ONEMINUS,& &COLH2O,COLCO2,COLN2O,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) -CALL RRTM_TAUMOL16 (KLEV,TAU,& +CALL ORRTM_TAUMOL16 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,ONEMINUS,& &COLH2O,COLCH4,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) @@ -162,4 +162,4 @@ ENDDO ! ----------------------------------------------------------------- RETURN -END SUBROUTINE RRTM_GASABS1A_140GP +END SUBROUTINE ORRTM_GASABS1A_140GP diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_init_140gp.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_init_140gp.f90 similarity index 67% rename from src/LIB/RAD/ECMWF_RAD/rrtm_init_140gp.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_init_140gp.f90 index e0c7c3b0bc960f23b5b01b2f815482b5b48b5805..baf6161f90c0b169f13d8cb7e58fc13b04d55c04 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_init_140gp.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_init_140gp.f90 @@ -5,36 +5,36 @@ ! ECMWF_RAD2 2003/02/19 13:36:37 !----------------------------------------------------------------- !*************************************************************************** -SUBROUTINE RRTM_INIT_140GP +SUBROUTINE ORRTM_INIT_140GP !*************************************************************************** ! Reformatted for F90 by JJMorcrette, ECMWF, 980714 ! Parameters #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB -USE YOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB +USE OYOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT ! Output -USE YOERRTBG2, ONLY : CORR1 ,CORR2 -USE YOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT +USE OYOERRTBG2, ONLY : CORR1 ,CORR2 +USE OYOERRTRWT, ONLY : FREFA ,FREFB ,FREFADF ,FREFBDF ,RWGT ! -USE MODI_RRTM_CMBGB1 -USE MODI_RRTM_CMBGB2 -USE MODI_RRTM_CMBGB3 -USE MODI_RRTM_CMBGB4 -USE MODI_RRTM_CMBGB5 -USE MODI_RRTM_CMBGB6 -USE MODI_RRTM_CMBGB7 -USE MODI_RRTM_CMBGB8 -USE MODI_RRTM_CMBGB9 -USE MODI_RRTM_CMBGB10 -USE MODI_RRTM_CMBGB11 -USE MODI_RRTM_CMBGB12 -USE MODI_RRTM_CMBGB13 -USE MODI_RRTM_CMBGB14 -USE MODI_RRTM_CMBGB15 -USE MODI_RRTM_CMBGB16 +!USE MODI_ORRTM_CMBGB1 +!USE MODI_ORRTM_CMBGB2 +!USE MODI_ORRTM_CMBGB3 +!USE MODI_ORRTM_CMBGB4 +!USE MODI_ORRTM_CMBGB5 +!USE MODI_ORRTM_CMBGB6 +!USE MODI_ORRTM_CMBGB7 +!USE MODI_ORRTM_CMBGB8 +!USE MODI_ORRTM_CMBGB9 +!USE MODI_ORRTM_CMBGB10 +!USE MODI_ORRTM_CMBGB11 +!USE MODI_ORRTM_CMBGB12 +!USE MODI_ORRTM_CMBGB13 +!USE MODI_ORRTM_CMBGB14 +!USE MODI_ORRTM_CMBGB15 +!USE MODI_ORRTM_CMBGB16 ! Local IMPLICIT NONE @@ -107,22 +107,22 @@ ENDDO ! Reduce g-points for relevant data in each LW spectral band. -CALL RRTM_CMBGB1 -CALL RRTM_CMBGB2 -CALL RRTM_CMBGB3 -CALL RRTM_CMBGB4 -CALL RRTM_CMBGB5 -CALL RRTM_CMBGB6 -CALL RRTM_CMBGB7 -CALL RRTM_CMBGB8 -CALL RRTM_CMBGB9 -CALL RRTM_CMBGB10 -CALL RRTM_CMBGB11 -CALL RRTM_CMBGB12 -CALL RRTM_CMBGB13 -CALL RRTM_CMBGB14 -CALL RRTM_CMBGB15 -CALL RRTM_CMBGB16 +CALL ORRTM_CMBGB1 +CALL ORRTM_CMBGB2 +CALL ORRTM_CMBGB3 +CALL ORRTM_CMBGB4 +CALL ORRTM_CMBGB5 +CALL ORRTM_CMBGB6 +CALL ORRTM_CMBGB7 +CALL ORRTM_CMBGB8 +CALL ORRTM_CMBGB9 +CALL ORRTM_CMBGB10 +CALL ORRTM_CMBGB11 +CALL ORRTM_CMBGB12 +CALL ORRTM_CMBGB13 +CALL ORRTM_CMBGB14 +CALL ORRTM_CMBGB15 +CALL ORRTM_CMBGB16 RETURN -END SUBROUTINE RRTM_INIT_140GP +END SUBROUTINE ORRTM_INIT_140GP diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb1.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb1.f90 similarity index 99% rename from src/LIB/RAD/ECMWF_RAD/rrtm_kgb1.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_kgb1.f90 index fa700083b169b6fd797ee71cd61dfb2753f32125..eca681089344fcc3ea348ce7b2084573b8d6fe3e 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb1.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb1.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:37 !----------------------------------------------------------------- !OCL SCALAR -SUBROUTINE RRTM_KGB1 +SUBROUTINE ORRTM_KGB1 ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. ! BAND 1: 10-250 cm-1 (low - H2O; high - H2O) @@ -15,7 +15,7 @@ SUBROUTINE RRTM_KGB1 #include "tsmbkind.h" -USE YOERRTO1 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO1 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO ,FORREFO ! ------------------------------------------------------------------ @@ -2045,4 +2045,4 @@ SELFREFO( :,16) = (/& ! ----------------------------------------------------------------- RETURN -END SUBROUTINE RRTM_KGB1 +END SUBROUTINE ORRTM_KGB1 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb10.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb10.f90 similarity index 99% rename from src/LIB/RAD/ECMWF_RAD/rrtm_kgb10.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_kgb10.f90 index 28fa4b25bd8289f2cdc02dd2927a13b627228d77..63bf1388d63655d4047938de7deacfb7db88b1bd 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb10.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb10.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:37 !----------------------------------------------------------------- !OCL SCALAR -SUBROUTINE RRTM_KGB10 +SUBROUTINE ORRTM_KGB10 ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. ! BAND 10: 1390-1480 cm-1 (low - H2O; high - H2O) @@ -15,7 +15,7 @@ SUBROUTINE RRTM_KGB10 #include "tsmbkind.h" -USE YOERRTO10, ONLY : KAO ,KBO ,FRACREFAO ,FRACREFBO +USE OYOERRTO10, ONLY : KAO ,KBO ,FRACREFAO ,FRACREFBO ! ------------------------------------------------------------------ @@ -1985,4 +1985,4 @@ KBO( :,59,16) = (/& ! ----------------------------------------------------------------- RETURN -END SUBROUTINE RRTM_KGB10 +END SUBROUTINE ORRTM_KGB10 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb11.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb11.f90 similarity index 99% rename from src/LIB/RAD/ECMWF_RAD/rrtm_kgb11.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_kgb11.f90 index e519f1948572df2d71d2d2973698cc72b09c2341..5352a47790700ca180de0a4f22a3f4c5f9c8faac 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb11.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb11.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:38 !----------------------------------------------------------------- !OCL SCALAR -SUBROUTINE RRTM_KGB11 +SUBROUTINE ORRTM_KGB11 ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. ! BAND 11: 1480-1800 cm-1 (low - H2O; high - H2O) @@ -15,7 +15,7 @@ SUBROUTINE RRTM_KGB11 #include "tsmbkind.h" -USE YOERRTO11, ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,FRACREFBO +USE OYOERRTO11, ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,FRACREFBO ! ------------------------------------------------------------------ @@ -2040,4 +2040,4 @@ SELFREFO( :,16) = (/& ! ----------------------------------------------------------------- RETURN -END SUBROUTINE RRTM_KGB11 +END SUBROUTINE ORRTM_KGB11 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb12.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb12.f90 similarity index 99% rename from src/LIB/RAD/ECMWF_RAD/rrtm_kgb12.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_kgb12.f90 index 383ef89acdcc91f44a7dc490c3873f4b044279b9..c295cb39cc3c875edc5b5226898e8a34b6f64803 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb12.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb12.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:38 !----------------------------------------------------------------- !OCL SCALAR -SUBROUTINE RRTM_KGB12 +SUBROUTINE ORRTM_KGB12 ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. ! BAND 12: 1800-2080 cm-1 (low - H2O,CO2; high - nothing) @@ -15,8 +15,8 @@ SUBROUTINE RRTM_KGB12 #include "tsmbkind.h" -USE YOERRTO12, ONLY : KAO ,SELFREFO ,FRACREFAO -USE YOERRTA12, ONLY : STRRAT +USE OYOERRTO12, ONLY : KAO ,SELFREFO ,FRACREFAO +USE OYOERRTA12, ONLY : STRRAT ! ------------------------------------------------------------------ @@ -3268,4 +3268,4 @@ FRACREFAO( : ,9) = (/& ! ----------------------------------------------------------------- RETURN -END SUBROUTINE RRTM_KGB12 +END SUBROUTINE ORRTM_KGB12 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb13.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb13.f90 similarity index 99% rename from src/LIB/RAD/ECMWF_RAD/rrtm_kgb13.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_kgb13.f90 index c005107813cb26bc23c0322f0a493cb3a79af161..9941d3464f0e5df1679652459df84803069f4f39 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb13.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb13.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:38 !----------------------------------------------------------------- !OCL SCALAR -SUBROUTINE RRTM_KGB13 +SUBROUTINE ORRTM_KGB13 ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. ! BAND 13: 2080-2250 cm-1 (low - H2O,N2O; high - nothing) @@ -15,8 +15,8 @@ SUBROUTINE RRTM_KGB13 #include "tsmbkind.h" -USE YOERRTO13, ONLY : KAO ,SELFREFO ,FRACREFAO -USE YOERRTA13, ONLY : STRRAT +USE OYOERRTO13, ONLY : KAO ,SELFREFO ,FRACREFAO +USE OYOERRTA13, ONLY : STRRAT ! ------------------------------------------------------------------ @@ -3268,4 +3268,4 @@ FRACREFAO( : , 9) = (/& ! ------------------------------------------------------------------ RETURN -END SUBROUTINE RRTM_KGB13 +END SUBROUTINE ORRTM_KGB13 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb14.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb14.f90 similarity index 99% rename from src/LIB/RAD/ECMWF_RAD/rrtm_kgb14.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_kgb14.f90 index 5901a221b81bce32ecbee9290a7fbf99802dc297..2dc9e74b2b6655286a135bf296e33dbecfb5d9f3 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb14.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb14.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:38 !----------------------------------------------------------------- !OCL SCALAR -SUBROUTINE RRTM_KGB14 +SUBROUTINE ORRTM_KGB14 ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. ! BAND 14: 2250-2380 cm-1 (low - CO2; high - CO2) @@ -15,7 +15,7 @@ SUBROUTINE RRTM_KGB14 #include "tsmbkind.h" -USE YOERRTO14, ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,FRACREFBO +USE OYOERRTO14, ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,FRACREFBO ! ------------------------------------------------------------------ @@ -2040,4 +2040,4 @@ SELFREFO( :,16) = (/& ! ----------------------------------------------------------------- RETURN -END SUBROUTINE RRTM_KGB14 +END SUBROUTINE ORRTM_KGB14 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb15.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb15.f90 similarity index 99% rename from src/LIB/RAD/ECMWF_RAD/rrtm_kgb15.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_kgb15.f90 index 9a1f9451e57efea59b7e3fd6a956d64a9bb6b482..01d32c9a010e6a575d73d894209d0c9f4019184f 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb15.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb15.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:38 !----------------------------------------------------------------- !OCL SCALAR -SUBROUTINE RRTM_KGB15 +SUBROUTINE ORRTM_KGB15 ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. ! BAND 15: 2380-2600 cm-1 (low - N2O,CO2; high - nothing) @@ -15,8 +15,8 @@ SUBROUTINE RRTM_KGB15 #include "tsmbkind.h" -USE YOERRTO15, ONLY : KAO ,SELFREFO ,FRACREFAO -USE YOERRTA15, ONLY : STRRAT +USE OYOERRTO15, ONLY : KAO ,SELFREFO ,FRACREFAO +USE OYOERRTA15, ONLY : STRRAT ! ------------------------------------------------------------------ @@ -3268,4 +3268,4 @@ FRACREFAO( :, 9) = (/& ! ----------------------------------------------------------------- RETURN -END SUBROUTINE RRTM_KGB15 +END SUBROUTINE ORRTM_KGB15 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb16.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb16.f90 similarity index 99% rename from src/LIB/RAD/ECMWF_RAD/rrtm_kgb16.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_kgb16.f90 index 4b2eec748ce62e2db66bcc350665c7c66104dabc..de7dd9041a44c526f0e1662f1b601478b2b528ec 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb16.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb16.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:39 !----------------------------------------------------------------- !OCL SCALAR -SUBROUTINE RRTM_KGB16 +SUBROUTINE ORRTM_KGB16 ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. ! BAND 16: 2600-3000 cm-1 (low - H2O,CH4; high - nothing) @@ -15,8 +15,8 @@ SUBROUTINE RRTM_KGB16 #include "tsmbkind.h" -USE YOERRTO16, ONLY : KAO ,SELFREFO ,FRACREFAO -USE YOERRTA16, ONLY : STRRAT +USE OYOERRTO16, ONLY : KAO ,SELFREFO ,FRACREFAO +USE OYOERRTA16, ONLY : STRRAT ! ------------------------------------------------------------------ @@ -3268,4 +3268,4 @@ FRACREFAO( :, 9) = (/& ! ----------------------------------------------------------------- RETURN -END SUBROUTINE RRTM_KGB16 +END SUBROUTINE ORRTM_KGB16 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb2.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb2.f90 similarity index 99% rename from src/LIB/RAD/ECMWF_RAD/rrtm_kgb2.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_kgb2.f90 index fb4bbbe8365887b5c2da49fd1596770d62670f78..d4d009ab8844131058ebaf9fdd8c90381f0cfcf8 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb2.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb2.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:39 !----------------------------------------------------------------- !OCL SCALAR -SUBROUTINE RRTM_KGB2 +SUBROUTINE ORRTM_KGB2 ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. ! BAND 2: 250-500 cm-1 (low - H2O; high - H2O) @@ -15,9 +15,9 @@ SUBROUTINE RRTM_KGB2 #include "tsmbkind.h" -USE YOERRTO2 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO2 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO ,FORREFO -USE YOERRTA2 , ONLY : REFPARAM +USE OYOERRTA2 , ONLY : REFPARAM ! ------------------------------------------------------------------ @@ -2117,4 +2117,4 @@ FRACREFAO( :,13) = (/& ! ----------------------------------------------------------------- RETURN -END SUBROUTINE RRTM_KGB2 +END SUBROUTINE ORRTM_KGB2 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb3.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb3.f90 similarity index 83% rename from src/LIB/RAD/ECMWF_RAD/rrtm_kgb3.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_kgb3.f90 index 1ba74a0613800cda0100029e50068b58f9d97732..cd199fa5574b904c732d4c6156ade51682752bba 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb3.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb3.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD1_MODIF_IDRIS 2003/02/19 13:36:32 !----------------------------------------------------------------- !OCL SCALAR -SUBROUTINE RRTM_KGB3 +SUBROUTINE ORRTM_KGB3 ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. ! BAND 3: 500-630 cm-1 (low - H2O,CO2; high - H2O,CO2) @@ -28,15 +28,15 @@ USE PARKIND1, ONLY :& ! -------------------------------------- -USE YOERRTO3 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO3 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO ,FORREFO ,ABSN2OAO ,ABSN2OBO -USE YOERRTA3 , ONLY : ABSN2OA ,ABSN2OB ,ETAREF ,H2OREF ,& +USE OYOERRTA3 , ONLY : ABSN2OA ,ABSN2OB ,ETAREF ,H2OREF ,& &N2OREF ,CO2REF ,STRRAT ! ------------------------------------------------------------------ -USE MODI_RRTM_KGB3_A -USE MODI_RRTM_KGB3_B -USE MODI_RRTM_KGB3_C +!USE MODI_RRTM_KGB3_A +!USE MODI_RRTM_KGB3_B +!USE MODI_RRTM_KGB3_C ! IMPLICIT NONE @@ -49,4 +49,4 @@ CALL RRTM_KGB3_C ! ----------------------------------------------------------------- RETURN -END SUBROUTINE RRTM_KGB3 +END SUBROUTINE ORRTM_KGB3 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb4.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb4.f90 similarity index 83% rename from src/LIB/RAD/ECMWF_RAD/rrtm_kgb4.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_kgb4.f90 index 7d3b746c12e17295f884d26750b55fd541ad3a10..d945da2b0fc6f2c165d06c881edfc4158eec7917 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb4.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb4.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD1_MODIF_IDRIS 2003/02/19 13:36:33 !----------------------------------------------------------------- !OCL SCALAR -SUBROUTINE RRTM_KGB4 +SUBROUTINE ORRTM_KGB4 ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. ! BAND 4: 630-700 cm-1 (low - H2O,CO2; high - O3,CO2) @@ -30,14 +30,14 @@ USE PARKIND1, ONLY :& ! -------------------------------------- -USE YOERRTO4 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,FRACREFBO -USE YOERRTA4 , ONLY : STRRAT1 ,STRRAT2 +USE OYOERRTO4 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,FRACREFBO +USE OYOERRTA4 , ONLY : STRRAT1 ,STRRAT2 ! ------------------------------------------------------------------ ! -USE MODI_RRTM_KGB4_A -USE MODI_RRTM_KGB4_B -USE MODI_RRTM_KGB4_C +!USE MODI_RRTM_KGB4_A +!USE MODI_RRTM_KGB4_B +!USE MODI_RRTM_KGB4_C ! @@ -50,4 +50,4 @@ CALL RRTM_KGB4_C !!!! JDJD Decoupage en 3 parties en raison de pbs de compilation IDRIS ! ----------------------------------------------------------------- RETURN -END SUBROUTINE RRTM_KGB4 +END SUBROUTINE ORRTM_KGB4 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb5.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb5.f90 similarity index 84% rename from src/LIB/RAD/ECMWF_RAD/rrtm_kgb5.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_kgb5.f90 index 5812ca12e4f3c0cadbbedbd8a8e7b9292de12f11..202a1b2ae1e927cc04d156fba342bb894ac68705 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb5.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb5.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD1_MODIF_IDRIS 2003/02/19 13:36:33 !----------------------------------------------------------------- !OCL SCALAR -SUBROUTINE RRTM_KGB5 +SUBROUTINE ORRTM_KGB5 ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. ! BAND 5: 700-820 cm-1 (low - H2O,CO2; high - O3,CO2) @@ -30,14 +30,14 @@ USE PARKIND1, ONLY :& ! -------------------------------------- -USE YOERRTO5 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO5 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO, CCL4O -USE YOERRTA5 , ONLY : STRRAT1 ,STRRAT2 +USE OYOERRTA5 , ONLY : STRRAT1 ,STRRAT2 ! ------------------------------------------------------------------ -USE MODI_RRTM_KGB5_A -USE MODI_RRTM_KGB5_B -USE MODI_RRTM_KGB5_C +!USE MODI_RRTM_KGB5_A +!USE MODI_RRTM_KGB5_B +!USE MODI_RRTM_KGB5_C ! IMPLICIT NONE @@ -49,4 +49,4 @@ CALL RRTM_KGB5_C !!!! JDJD Decoupage en 3 parties en raison de pbs de compilation IDRIS ! ----------------------------------------------------------------- RETURN -END SUBROUTINE RRTM_KGB5 +END SUBROUTINE ORRTM_KGB5 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb6.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb6.f90 similarity index 99% rename from src/LIB/RAD/ECMWF_RAD/rrtm_kgb6.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_kgb6.f90 index 02383bb0f3d925ddd9efeffec128564fbd45c967..528b09fca7530c407c87e3251f216b8b38232cc3 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb6.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb6.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:40 !----------------------------------------------------------------- !OCL SCALAR -SUBROUTINE RRTM_KGB6 +SUBROUTINE ORRTM_KGB6 ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. ! BAND 6: 820-980 cm-1 (low - H2O; high - nothing) @@ -15,7 +15,7 @@ SUBROUTINE RRTM_KGB6 #include "tsmbkind.h" -USE YOERRTO6 , ONLY : KAO ,SELFREFO ,FRACREFAO ,CFC11ADJO ,& +USE OYOERRTO6 , ONLY : KAO ,SELFREFO ,FRACREFAO ,CFC11ADJO ,& &CFC12O , ABSCO2O ! ------------------------------------------------------------------ @@ -536,4 +536,4 @@ SELFREFO( :,16) = (/& ! ----------------------------------------------------------------- RETURN -END SUBROUTINE RRTM_KGB6 +END SUBROUTINE ORRTM_KGB6 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb7.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb7.f90 similarity index 99% rename from src/LIB/RAD/ECMWF_RAD/rrtm_kgb7.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_kgb7.f90 index f1f697ebc757f9f9576b992d269dd4d56a8854bc..ed0743fbc4edece3facdd2865f08114803fc2392 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb7.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb7.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:41 !----------------------------------------------------------------- !OCL SCALAR -SUBROUTINE RRTM_KGB7 +SUBROUTINE ORRTM_KGB7 ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. ! BAND 7: 980-1080 cm-1 (low - H2O,O3; high - O3) @@ -15,9 +15,9 @@ SUBROUTINE RRTM_KGB7 #include "tsmbkind.h" -USE YOERRTO7 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO7 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO ,ABSCO2O -USE YOERRTA7 , ONLY : STRRAT +USE OYOERRTA7 , ONLY : STRRAT ! ------------------------------------------------------------------ @@ -4797,4 +4797,4 @@ FRACREFAO( :, 9) = (/& ! ----------------------------------------------------------------- RETURN -END SUBROUTINE RRTM_KGB7 +END SUBROUTINE ORRTM_KGB7 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb8.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb8.f90 similarity index 99% rename from src/LIB/RAD/ECMWF_RAD/rrtm_kgb8.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_kgb8.f90 index 17c4ffd9aff246166fc6520224d01ae6cf10cc95..2f837875580ccb977096bfe80e00c4b66625519a 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb8.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb8.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:41 !----------------------------------------------------------------- !OCL SCALAR -SUBROUTINE RRTM_KGB8 +SUBROUTINE ORRTM_KGB8 ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. ! BAND 8: 1080-1180 cm-1 (low (i.e.>~300mb) - H2O; high - O3) @@ -15,10 +15,10 @@ SUBROUTINE RRTM_KGB8 #include "tsmbkind.h" -USE YOERRTO8 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO8 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO, CFC12O ,CFC22ADJO ,ABSCO2AO ,ABSCO2BO ,& &ABSN2OAO , ABSN2OBO -USE YOERRTA8 , ONLY : H2OREF ,N2OREF ,O3REF +USE OYOERRTA8 , ONLY : H2OREF ,N2OREF ,O3REF ! ------------------------------------------------------------------ @@ -2130,4 +2130,4 @@ SELFREFO( :,16) = (/& ! ----------------------------------------------------------------- RETURN -END SUBROUTINE RRTM_KGB8 +END SUBROUTINE ORRTM_KGB8 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb9.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb9.f90 similarity index 99% rename from src/LIB/RAD/ECMWF_RAD/rrtm_kgb9.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_kgb9.f90 index 31765480d11e9fe7334c4a29971f35a869ba8437..5a96ccaf0ea8932ff3941344e69c789b4c1d603d 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb9.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_kgb9.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:41 !----------------------------------------------------------------- !OCL SCALAR -SUBROUTINE RRTM_KGB9 +SUBROUTINE ORRTM_KGB9 ! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. ! BAND 9: 1180-1390 cm-1 (low - H2O,CH4; high - CH4) @@ -15,9 +15,9 @@ SUBROUTINE RRTM_KGB9 #include "tsmbkind.h" -USE YOERRTO9 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO9 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO, ABSN2OO -USE YOERRTA9 , ONLY : N2OREF ,H2OREF ,CH4REF ,ETAREF ,STRRAT +USE OYOERRTA9 , ONLY : N2OREF ,H2OREF ,CH4REF ,ETAREF ,STRRAT ! ------------------------------------------------------------------ @@ -4830,4 +4830,4 @@ FRACREFAO( :, 9) = (/& ! ----------------------------------------------------------------- RETURN -END SUBROUTINE RRTM_KGB9 +END SUBROUTINE ORRTM_KGB9 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_setcoef_140gp.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_setcoef_140gp.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/rrtm_setcoef_140gp.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_setcoef_140gp.f90 index ed0334dd1d0758e230aa42c9793170155a24694f..dccad873858f7a22065e04c98e3860f7c7a7e17b 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_setcoef_140gp.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_setcoef_140gp.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:41 !----------------------------------------------------------------- -SUBROUTINE RRTM_SETCOEF_140GP (KLEV,COLDRY,WKL & +SUBROUTINE ORRTM_SETCOEF_140GP (KLEV,COLDRY,WKL & &, FAC00,FAC01,FAC10,FAC11,FORFAC,JP,JT,JT1 & &, COLH2O,COLCO2,COLO3,COLN2O,COLCH4,COLO2,CO2MULT & &, LAYTROP,LAYSWTCH,LAYLOW,PAVEL,TAVEL,SELFFAC,SELFFRAC,INDSELF) @@ -18,8 +18,8 @@ SUBROUTINE RRTM_SETCOEF_140GP (KLEV,COLDRY,WKL & #include "tsmbkind.h" -USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPINPX -USE YOERRTRF , ONLY : PREF ,PREFLOG ,TREF +USE OPARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPINPX +USE OYOERRTRF , ONLY : PREF ,PREFLOG ,TREF IMPLICIT NONE @@ -196,4 +196,4 @@ ENDDO IF (LAYLOW == 0) LAYLOW=1 RETURN -END SUBROUTINE RRTM_SETCOEF_140GP +END SUBROUTINE ORRTM_SETCOEF_140GP diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol1.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol1.f90 similarity index 98% rename from src/LIB/RAD/ECMWF_RAD/rrtm_taumol1.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_taumol1.f90 index 6d66ef4a90f1ba80d50958e13489610b12e22fcc..2994e8ff1bf60233eb96238ae48aa18cd7eccf37 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol1.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol1.f90 @@ -129,7 +129,7 @@ !****************************************************************************** -SUBROUTINE RRTM_TAUMOL1 (KLEV,TAU,& +SUBROUTINE ORRTM_TAUMOL1 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,FORFAC,JP,JT,JT1,& &COLH2O,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) @@ -146,9 +146,9 @@ SUBROUTINE RRTM_TAUMOL1 (KLEV,TAU,& #include "tsmbkind.h" -USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG1 -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB -USE YOERRTA1 , ONLY : ABSA ,ABSB ,FRACREFA, FRACREFB,& +USE OPARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG1 +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB +USE OYOERRTA1 , ONLY : ABSA ,ABSB ,FRACREFA, FRACREFB,& &FORREF ,KA ,KB ,SELFREF !#include "yoeratm.h" @@ -248,4 +248,4 @@ DO IG = 1, NG1 ENDDO RETURN -END SUBROUTINE RRTM_TAUMOL1 +END SUBROUTINE ORRTM_TAUMOL1 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol10.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol10.f90 similarity index 90% rename from src/LIB/RAD/ECMWF_RAD/rrtm_taumol10.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_taumol10.f90 index 28e23d9ceaa73378b408e7ed5f4a543cc9f53d78..9f3484f64612b331081a7a4e50e1a4d4d4b3eda3 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol10.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol10.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:41 !----------------------------------------------------------------- !******************************************************************************* -SUBROUTINE RRTM_TAUMOL10 (KLEV,TAU,& +SUBROUTINE ORRTM_TAUMOL10 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,& &COLH2O,LAYTROP,PFRAC) @@ -19,9 +19,9 @@ SUBROUTINE RRTM_TAUMOL10 (KLEV,TAU,& #include "tsmbkind.h" -USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG10 ,NGS9 -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB -USE YOERRTA10, ONLY : ABSA ,ABSB ,FRACREFA, FRACREFB, KA , KB +USE OPARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG10 ,NGS9 +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB +USE OYOERRTA10, ONLY : ABSA ,ABSB ,FRACREFA, FRACREFB, KA , KB ! Input !#include "yoeratm.h" @@ -106,4 +106,4 @@ DO IG = 1, NG10 ENDDO RETURN -END SUBROUTINE RRTM_TAUMOL10 +END SUBROUTINE ORRTM_TAUMOL10 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol11.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol11.f90 similarity index 92% rename from src/LIB/RAD/ECMWF_RAD/rrtm_taumol11.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_taumol11.f90 index 90e0374aee929a56fa6f7575facd28c096907fd2..6f5b423ce8a2bdddf6b74ecc76c1b3087fcba9ef 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol11.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol11.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:41 !----------------------------------------------------------------- !****************************************************************************** -SUBROUTINE RRTM_TAUMOL11 (KLEV,TAU,& +SUBROUTINE ORRTM_TAUMOL11 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,& &COLH2O,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) @@ -19,9 +19,9 @@ SUBROUTINE RRTM_TAUMOL11 (KLEV,TAU,& #include "tsmbkind.h" -USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG11 ,NGS10 -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB -USE YOERRTA11, ONLY : ABSA ,ABSB ,FRACREFA, FRACREFB,& +USE OPARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG11 ,NGS10 +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB +USE OYOERRTA11, ONLY : ABSA ,ABSB ,FRACREFA, FRACREFB,& &KA , KB ,SELFREF ! Input @@ -117,4 +117,4 @@ DO IG = 1, NG11 ENDDO RETURN -END SUBROUTINE RRTM_TAUMOL11 +END SUBROUTINE ORRTM_TAUMOL11 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol12.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol12.f90 similarity index 94% rename from src/LIB/RAD/ECMWF_RAD/rrtm_taumol12.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_taumol12.f90 index f5852888f526b61af1bdc7e5085efd852bc0ca73..7edfd30ea38ef4d0c64a1d1cb5f10c79c444291a 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol12.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol12.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:41 !----------------------------------------------------------------- !---------------------------------------------------------------------------- -SUBROUTINE RRTM_TAUMOL12 (KLEV,TAU,& +SUBROUTINE ORRTM_TAUMOL12 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,ONEMINUS,& &COLH2O,COLCO2,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) @@ -19,9 +19,9 @@ SUBROUTINE RRTM_TAUMOL12 (KLEV,TAU,& #include "tsmbkind.h" -USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG12 ,NGS11 -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB -USE YOERRTA12, ONLY : ABSA ,FRACREFA,KA ,SELFREF,STRRAT +USE OPARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG12 ,NGS11 +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB +USE OYOERRTA12, ONLY : ABSA ,FRACREFA,KA ,SELFREF,STRRAT ! Input !#include "yoeratm.h" @@ -157,4 +157,4 @@ DO IG = 1, NG12 ENDDO RETURN -END SUBROUTINE RRTM_TAUMOL12 +END SUBROUTINE ORRTM_TAUMOL12 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol13.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol13.f90 similarity index 94% rename from src/LIB/RAD/ECMWF_RAD/rrtm_taumol13.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_taumol13.f90 index 23c2cbc77543cc4f8c66f12f9eb87cb3f42ee711..00688716f4253ebfe7cdd89d9e68e707fcd8541f 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol13.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol13.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:42 !----------------------------------------------------------------- !---------------------------------------------------------------------------- -SUBROUTINE RRTM_TAUMOL13 (KLEV,TAU,& +SUBROUTINE ORRTM_TAUMOL13 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,ONEMINUS,& &COLH2O,COLN2O,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) @@ -18,9 +18,9 @@ SUBROUTINE RRTM_TAUMOL13 (KLEV,TAU,& #include "tsmbkind.h" -USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG13 ,NGS12 -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB -USE YOERRTA13, ONLY : ABSA ,FRACREFA,KA ,SELFREF,STRRAT +USE OPARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG13 ,NGS12 +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB +USE OYOERRTA13, ONLY : ABSA ,FRACREFA,KA ,SELFREF,STRRAT ! Input !#include "yoeratm.h" @@ -156,4 +156,4 @@ DO IG = 1, NG13 ENDDO RETURN -END SUBROUTINE RRTM_TAUMOL13 +END SUBROUTINE ORRTM_TAUMOL13 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol14.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol14.f90 similarity index 93% rename from src/LIB/RAD/ECMWF_RAD/rrtm_taumol14.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_taumol14.f90 index 2d99637fc86783b32b24f0ef2c15649091e893e1..8aff66045c459e940865efdcb8b2325d65473378 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol14.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol14.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:42 !----------------------------------------------------------------- !****************************************************************************** -SUBROUTINE RRTM_TAUMOL14 (KLEV,TAU,& +SUBROUTINE ORRTM_TAUMOL14 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,& &COLCO2,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) @@ -18,9 +18,9 @@ SUBROUTINE RRTM_TAUMOL14 (KLEV,TAU,& #include "tsmbkind.h" -USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG14 ,NGS13 -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB -USE YOERRTA14, ONLY : ABSA ,ABSB ,FRACREFA, FRACREFB,& +USE OPARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG14 ,NGS13 +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB +USE OYOERRTA14, ONLY : ABSA ,ABSB ,FRACREFA, FRACREFB,& &KA , KB ,SELFREF IMPLICIT NONE @@ -130,4 +130,4 @@ DO LAY = LAYTROP+1, KLEV ENDDO RETURN -END SUBROUTINE RRTM_TAUMOL14 +END SUBROUTINE ORRTM_TAUMOL14 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol15.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol15.f90 similarity index 95% rename from src/LIB/RAD/ECMWF_RAD/rrtm_taumol15.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_taumol15.f90 index d30c3f3f4e8301df8378deff576be05699f4f917..a496d73ec155182da3483d369d29828ca75e31bd 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol15.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol15.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:42 !----------------------------------------------------------------- !---------------------------------------------------------------------------- -SUBROUTINE RRTM_TAUMOL15 (KLEV,TAU,& +SUBROUTINE ORRTM_TAUMOL15 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,ONEMINUS,& &COLH2O,COLCO2,COLN2O,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) @@ -18,9 +18,9 @@ SUBROUTINE RRTM_TAUMOL15 (KLEV,TAU,& #include "tsmbkind.h" -USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG15 ,NGS14 -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB -USE YOERRTA15, ONLY : ABSA ,FRACREFA,KA ,SELFREF,STRRAT +USE OPARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG15 ,NGS14 +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB +USE OYOERRTA15, ONLY : ABSA ,FRACREFA,KA ,SELFREF,STRRAT IMPLICIT NONE @@ -172,4 +172,4 @@ DO LAY = LAYTROP+1, KLEV ENDDO RETURN -END SUBROUTINE RRTM_TAUMOL15 +END SUBROUTINE ORRTM_TAUMOL15 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol16.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol16.f90 similarity index 95% rename from src/LIB/RAD/ECMWF_RAD/rrtm_taumol16.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_taumol16.f90 index 4315bcda6a0e7cc30b1a4e45c603801edba76e75..6ec879a204ccbae6ab77b1b60c0307e3d68364a4 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol16.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol16.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:42 !----------------------------------------------------------------- !---------------------------------------------------------------------------- -SUBROUTINE RRTM_TAUMOL16 (KLEV,TAU,& +SUBROUTINE ORRTM_TAUMOL16 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,ONEMINUS,& &COLH2O,COLCH4,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) @@ -18,9 +18,9 @@ SUBROUTINE RRTM_TAUMOL16 (KLEV,TAU,& #include "tsmbkind.h" -USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG16 ,NGS15 -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB -USE YOERRTA16, ONLY : ABSA ,FRACREFA,KA ,SELFREF,STRRAT +USE OPARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG16 ,NGS15 +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB +USE OYOERRTA16, ONLY : ABSA ,FRACREFA,KA ,SELFREF,STRRAT IMPLICIT NONE @@ -171,4 +171,4 @@ DO LAY = LAYTROP+1, KLEV ENDDO RETURN -END SUBROUTINE RRTM_TAUMOL16 +END SUBROUTINE ORRTM_TAUMOL16 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol2.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol2.f90 similarity index 94% rename from src/LIB/RAD/ECMWF_RAD/rrtm_taumol2.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_taumol2.f90 index f7b317914381290a741cd50ffe505f2f3d00c6a7..0ad531c78f9787e329020af8f74c6abcaa3348aa 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol2.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol2.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:42 !----------------------------------------------------------------- !---------------------------------------------------------------------------- -SUBROUTINE RRTM_TAUMOL2 (KLEV,TAU,COLDRY,& +SUBROUTINE ORRTM_TAUMOL2 (KLEV,TAU,COLDRY,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,FORFAC,JP,JT,JT1,& &COLH2O,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) @@ -20,11 +20,11 @@ SUBROUTINE RRTM_TAUMOL2 (KLEV,TAU,COLDRY,& #include "tsmbkind.h" -USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG2 ,NGS1 -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB -USE YOERRTA2 , ONLY : ABSA ,ABSB ,FRACREFA, FRACREFB,& +USE OPARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG2 ,NGS1 +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB +USE OYOERRTA2 , ONLY : ABSA ,ABSB ,FRACREFA, FRACREFB,& &FORREF ,KA ,KB ,SELFREF , REFPARAM -USE YOERRTBG2, ONLY : CORR1 ,CORR2 +USE OYOERRTBG2, ONLY : CORR1 ,CORR2 ! Input !#include "yoeratm.h" @@ -182,4 +182,4 @@ DO IG = 1, NG2 ENDDO RETURN -END SUBROUTINE RRTM_TAUMOL2 +END SUBROUTINE ORRTM_TAUMOL2 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol3.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol3.f90 similarity index 96% rename from src/LIB/RAD/ECMWF_RAD/rrtm_taumol3.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_taumol3.f90 index b4afeb6776988447258a19486b7c0a4782744f85..6b9e2f06ae180c97817ca3a36c19697c54cbda7e 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol3.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol3.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:42 !----------------------------------------------------------------- !---------------------------------------------------------------------------- -SUBROUTINE RRTM_TAUMOL3 (KLEV,TAU,& +SUBROUTINE ORRTM_TAUMOL3 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,FORFAC,JP,JT,JT1,ONEMINUS,& &COLH2O,COLCO2,COLN2O,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) @@ -18,9 +18,9 @@ SUBROUTINE RRTM_TAUMOL3 (KLEV,TAU,& #include "tsmbkind.h" -USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG3 ,NGS2 -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB -USE YOERRTA3 , ONLY : ABSA ,ABSB ,FRACREFA, FRACREFB,& +USE OPARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG3 ,NGS2 +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB +USE OYOERRTA3 , ONLY : ABSA ,ABSB ,FRACREFA, FRACREFB,& &FORREF ,KA ,KB ,SELFREF , ABSN2OA ,& &ABSN2OB ,ETAREF ,H2OREF ,N2OREF , CO2REF ,& &STRRAT @@ -252,4 +252,4 @@ DO LAY = LAYTROP+1, KLEV ENDDO RETURN -END SUBROUTINE RRTM_TAUMOL3 +END SUBROUTINE ORRTM_TAUMOL3 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol4.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol4.f90 similarity index 96% rename from src/LIB/RAD/ECMWF_RAD/rrtm_taumol4.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_taumol4.f90 index ad38b4fa623cf6df772f56ab346be0fe3237df06..7e21a4201ccb32e884d00d48e52a90a2582929c8 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol4.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol4.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:42 !----------------------------------------------------------------- !---------------------------------------------------------------------------- -SUBROUTINE RRTM_TAUMOL4 (KLEV,TAU,& +SUBROUTINE ORRTM_TAUMOL4 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,FORFAC,JP,JT,JT1,ONEMINUS,& &COLH2O,COLCO2,COLO3,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) @@ -18,9 +18,9 @@ SUBROUTINE RRTM_TAUMOL4 (KLEV,TAU,& #include "tsmbkind.h" -USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG4 ,NGS3 -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB -USE YOERRTA4 , ONLY : ABSA ,ABSB ,FRACREFA, FRACREFB,& +USE OPARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG4 ,NGS3 +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB +USE OYOERRTA4 , ONLY : ABSA ,ABSB ,FRACREFA, FRACREFB,& &KA ,KB ,SELFREF,STRRAT1 , STRRAT2 ! Input @@ -211,4 +211,4 @@ DO LAY = LAYTROP+1, KLEV ENDDO RETURN -END SUBROUTINE RRTM_TAUMOL4 +END SUBROUTINE ORRTM_TAUMOL4 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol5.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol5.f90 similarity index 95% rename from src/LIB/RAD/ECMWF_RAD/rrtm_taumol5.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_taumol5.f90 index ed2dedadb593f44611a23c802365107eb38e7435..88effcd87fafa3aed660b81cdc8f7c8c0e9d00a1 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol5.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol5.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:42 !----------------------------------------------------------------- !---------------------------------------------------------------------------- -SUBROUTINE RRTM_TAUMOL5 (KLEV,TAU,WX,& +SUBROUTINE ORRTM_TAUMOL5 (KLEV,TAU,WX,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,FORFAC,JP,JT,JT1,ONEMINUS,& &COLH2O,COLCO2, COLO3,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) @@ -18,9 +18,9 @@ SUBROUTINE RRTM_TAUMOL5 (KLEV,TAU,WX,& #include "tsmbkind.h" -USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG5 ,NGS4 -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB -USE YOERRTA5 , ONLY : ABSA ,ABSB ,CCL4 , FRACREFA, FRACREFB,& +USE OPARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG5 ,NGS4 +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB +USE OYOERRTA5 , ONLY : ABSA ,ABSB ,CCL4 , FRACREFA, FRACREFB,& &KA ,KB ,SELFREF,STRRAT1, STRRAT2 ! Input @@ -206,4 +206,4 @@ DO LAY = LAYTROP+1, KLEV ENDDO RETURN -END SUBROUTINE RRTM_TAUMOL5 +END SUBROUTINE ORRTM_TAUMOL5 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol6.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol6.f90 similarity index 92% rename from src/LIB/RAD/ECMWF_RAD/rrtm_taumol6.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_taumol6.f90 index db168873de5f0a3f60886c168eaad7fde3848658..59b587b1561ccb83b0433932d911fff79c07feee 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol6.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol6.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:42 !----------------------------------------------------------------- !---------------------------------------------------------------------------- -SUBROUTINE RRTM_TAUMOL6 (KLEV,TAU,WX,& +SUBROUTINE ORRTM_TAUMOL6 (KLEV,TAU,WX,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,& &COLH2O,CO2MULT,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) @@ -19,9 +19,9 @@ SUBROUTINE RRTM_TAUMOL6 (KLEV,TAU,WX,& #include "tsmbkind.h" -USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG6 ,NGS5 -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB -USE YOERRTA6 , ONLY : ABSA ,ABSCO2 ,CFC11ADJ , CFC12 ,& +USE OPARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG6 ,NGS5 +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB +USE OYOERRTA6 , ONLY : ABSA ,ABSCO2 ,CFC11ADJ , CFC12 ,& &FRACREFA, KA ,SELFREF ! Input @@ -116,4 +116,4 @@ DO IG = 1, NG6 ENDDO RETURN -END SUBROUTINE RRTM_TAUMOL6 +END SUBROUTINE ORRTM_TAUMOL6 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol7.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol7.f90 similarity index 94% rename from src/LIB/RAD/ECMWF_RAD/rrtm_taumol7.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_taumol7.f90 index 39a320ba6dbf58670cc665ceec58a512486cf4cd..5a02fcb4a40d211d09a5f387347ca51357a4dfcf 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol7.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol7.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:42 !----------------------------------------------------------------- !---------------------------------------------------------------------------- -SUBROUTINE RRTM_TAUMOL7 (KLEV,TAU,& +SUBROUTINE ORRTM_TAUMOL7 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,ONEMINUS,& &COLH2O,COLO3,CO2MULT,LAYTROP,SELFFAC,SELFFRAC,INDSELF,PFRAC) @@ -18,9 +18,9 @@ SUBROUTINE RRTM_TAUMOL7 (KLEV,TAU,& #include "tsmbkind.h" -USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG7 ,NGS6 -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB -USE YOERRTA7 , ONLY : ABSA ,ABSB ,ABSCO2 ,FRACREFA ,FRACREFB,& +USE OPARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG7 ,NGS6 +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB +USE OYOERRTA7 , ONLY : ABSA ,ABSB ,ABSCO2 ,FRACREFA ,FRACREFB,& &KA ,KB ,SELFREF,STRRAT ! Input @@ -170,4 +170,4 @@ DO IG = 1, NG7 ENDDO RETURN -END SUBROUTINE RRTM_TAUMOL7 +END SUBROUTINE ORRTM_TAUMOL7 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol8.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol8.f90 similarity index 94% rename from src/LIB/RAD/ECMWF_RAD/rrtm_taumol8.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_taumol8.f90 index a0009819dc1f0bd7dae6c8c88be44f7ed74a3d62..82baf8b16bd4b875707509f375af1bd4399284e2 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol8.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol8.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:42 !----------------------------------------------------------------- !******************************************************************************* -SUBROUTINE RRTM_TAUMOL8 (KLEV,TAU,WX,& +SUBROUTINE ORRTM_TAUMOL8 (KLEV,TAU,WX,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,& &COLH2O,COLO3,COLN2O,CO2MULT,LAYSWTCH,SELFFAC,SELFFRAC,INDSELF,PFRAC) @@ -19,9 +19,9 @@ SUBROUTINE RRTM_TAUMOL8 (KLEV,TAU,WX,& #include "tsmbkind.h" -USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG8 ,NGS7 -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB -USE YOERRTA8 , ONLY : ABSA ,ABSB ,FRACREFA, FRACREFB,& +USE OPARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG8 ,NGS7 +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB +USE OYOERRTA8 , ONLY : ABSA ,ABSB ,FRACREFA, FRACREFB,& &KA , KB ,SELFREF,ABSCO2A , ABSCO2B ,& &ABSN2OA , ABSN2OB,CFC12 ,CFC22ADJ, H2OREF ,& &N2OREF , O3REF @@ -151,4 +151,4 @@ DO IG = 1, NG8 ENDDO RETURN -END SUBROUTINE RRTM_TAUMOL8 +END SUBROUTINE ORRTM_TAUMOL8 diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol9.f90 b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol9.f90 similarity index 96% rename from src/LIB/RAD/ECMWF_RAD/rrtm_taumol9.f90 rename to src/LIB/RAD/ECMWF_RAD/orrtm_taumol9.f90 index 24028d888c0aea3662bf8eb855a46c76e0eff8a8..784aa22323bb4d811d04c20eb4395a19b4d6b405 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_taumol9.f90 +++ b/src/LIB/RAD/ECMWF_RAD/orrtm_taumol9.f90 @@ -5,7 +5,7 @@ ! ECMWF_RAD2 2003/02/19 13:36:42 !----------------------------------------------------------------- !---------------------------------------------------------------------------- -SUBROUTINE RRTM_TAUMOL9 (KLEV,TAU,& +SUBROUTINE ORRTM_TAUMOL9 (KLEV,TAU,& &TAUAERL,FAC00,FAC01,FAC10,FAC11,JP,JT,JT1,ONEMINUS,& &COLH2O,COLN2O,COLCH4,LAYTROP,LAYSWTCH,LAYLOW,SELFFAC,SELFFRAC,INDSELF,PFRAC) @@ -19,9 +19,9 @@ SUBROUTINE RRTM_TAUMOL9 (KLEV,TAU,& #include "tsmbkind.h" -USE PARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG9 ,NGS8 -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB -USE YOERRTA9 , ONLY : ABSA ,ABSB ,FRACREFA, FRACREFB,& +USE OPARRRTM , ONLY : JPLAY ,JPBAND ,JPGPT ,JPXSEC ,NG9 ,NGS8 +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB +USE OYOERRTA9 , ONLY : ABSA ,ABSB ,FRACREFA, FRACREFB,& &KA , KB ,SELFREF,ABSN2O , CH4REF ,& &ETAREF , H2OREF ,N2OREF ,STRRAT @@ -212,4 +212,4 @@ DO IG = 1, NG9 ENDDO RETURN -END SUBROUTINE RRTM_TAUMOL9 +END SUBROUTINE ORRTM_TAUMOL9 diff --git a/src/LIB/RAD/ECMWF_RAD/surdi.f90 b/src/LIB/RAD/ECMWF_RAD/osurdi.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/surdi.f90 rename to src/LIB/RAD/ECMWF_RAD/osurdi.f90 index c670fab9837f7e093cd9c4b7f0ab91bf9720df03..906fdd6292536e8faadeee96fdfb739753d59a3e 100644 --- a/src/LIB/RAD/ECMWF_RAD/surdi.f90 +++ b/src/LIB/RAD/ECMWF_RAD/osurdi.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:46 !----------------------------------------------------------------- -SUBROUTINE SURDI +SUBROUTINE OSURDI !**** *SURDI* - INITIALIZE COMMON YOERDI CONTROLLING RADINT @@ -51,7 +51,7 @@ SUBROUTINE SURDI #include "tsmbkind.h" -USE YOERDI , ONLY : RRAE ,RALBSEAD ,& +USE OYOERDI , ONLY : RRAE ,RALBSEAD ,& &RALBICEVS_AR,RALBICENI_AR,RALBICEVS_AN,RALBICENI_AN,& &RALBSFO ,REMISD ,REMISL ,REMISN ,REMISS ,& &RCARDI ,RCH4 ,RN2O ,RO3 ,RCFC11 ,& @@ -131,4 +131,4 @@ REPALB=1.E-12_JPRB ! ----------------------------------------------------------------- RETURN -END SUBROUTINE SURDI +END SUBROUTINE OSURDI diff --git a/src/LIB/RAD/ECMWF_RAD/surrtab.f90 b/src/LIB/RAD/ECMWF_RAD/osurrtab.f90 similarity index 92% rename from src/LIB/RAD/ECMWF_RAD/surrtab.f90 rename to src/LIB/RAD/ECMWF_RAD/osurrtab.f90 index d08324fcdb17b611bc4b948022de7997b35c1d69..ec9ce07bb5aec4e503593d504f010d4d0de4b302 100644 --- a/src/LIB/RAD/ECMWF_RAD/surrtab.f90 +++ b/src/LIB/RAD/ECMWF_RAD/osurrtab.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:46 !----------------------------------------------------------------- -SUBROUTINE SURRTAB +SUBROUTINE OSURRTAB ! ----------------------------------------------------------------- ! * E.C.M.W.F. PHYSICS PACKAGE ** AER'S RRTM LW RADIATION ** @@ -15,7 +15,7 @@ SUBROUTINE SURRTAB #include "tsmbkind.h" -USE YOERRTAB , ONLY : TRANS, BPADE +USE OYOERRTAB , ONLY : TRANS, BPADE IMPLICIT NONE @@ -38,4 +38,4 @@ ENDDO ! ----------------------------------------------------------------- RETURN -END SUBROUTINE SURRTAB +END SUBROUTINE OSURRTAB diff --git a/src/LIB/RAD/ECMWF_RAD/surrtftr.f90 b/src/LIB/RAD/ECMWF_RAD/osurrtftr.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/surrtftr.f90 rename to src/LIB/RAD/ECMWF_RAD/osurrtftr.f90 index 9ecb06e731d69e2e84b1bd5cb66d2fc548fd32b9..c95eef85e430ee186fa258141e48248619bdfcf2 100644 --- a/src/LIB/RAD/ECMWF_RAD/surrtftr.f90 +++ b/src/LIB/RAD/ECMWF_RAD/osurrtftr.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:46 !----------------------------------------------------------------- -SUBROUTINE SURRTFTR +SUBROUTINE OSURRTFTR ! Adapted from Eli J. Mlawer, Atmospheric & Environmental Research. ! by JJMorcrette, ECMWF @@ -12,7 +12,7 @@ SUBROUTINE SURRTFTR #include "tsmbkind.h" -USE YOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT +USE OYOERRTFTR, ONLY : NGC ,NGS ,NGN ,NGB ,NGM , WT ! ------------------------------------------------------------------ @@ -85,4 +85,4 @@ WT( :) = (/& ! ----------------------------------------------------------------- RETURN -END SUBROUTINE SURRTFTR +END SUBROUTINE OSURRTFTR diff --git a/src/LIB/RAD/ECMWF_RAD/surrtpk.f90 b/src/LIB/RAD/ECMWF_RAD/osurrtpk.f90 similarity index 99% rename from src/LIB/RAD/ECMWF_RAD/surrtpk.f90 rename to src/LIB/RAD/ECMWF_RAD/osurrtpk.f90 index 438229dc4e149bf9dbe1976639e5fcde8aa255c0..a0cf66848b2613e16f01bf01563a45fae0359a5f 100644 --- a/src/LIB/RAD/ECMWF_RAD/surrtpk.f90 +++ b/src/LIB/RAD/ECMWF_RAD/osurrtpk.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:46 !----------------------------------------------------------------- -SUBROUTINE SURRTPK +SUBROUTINE OSURRTPK ! Adapted from Eli J. Mlawer, Atmospheric & Environmental Research. ! by JJMorcrette, ECMWF @@ -12,7 +12,7 @@ SUBROUTINE SURRTPK #include "tsmbkind.h" -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB ,WAVENUM1 ,& +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB ,WAVENUM1 ,& &WAVENUM2 ,DELWAVE ,TOTPLNK ,TOTPLK16 ! ------------------------------------------------------------------ @@ -747,4 +747,4 @@ TOTPLK16( :) = (/& &1.99016E-07_JPRB/) ! ----------------------------------------------------------------- RETURN -END SUBROUTINE SURRTPK +END SUBROUTINE OSURRTPK diff --git a/src/LIB/RAD/ECMWF_RAD/surrtrf.f90 b/src/LIB/RAD/ECMWF_RAD/osurrtrf.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/surrtrf.f90 rename to src/LIB/RAD/ECMWF_RAD/osurrtrf.f90 index 0ca2bf9b54e585d291b75c16d7cd7b33d7b45a46..3c91b63acdd24878b8780ca75530e86a1727cd36 100644 --- a/src/LIB/RAD/ECMWF_RAD/surrtrf.f90 +++ b/src/LIB/RAD/ECMWF_RAD/osurrtrf.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:46 !----------------------------------------------------------------- -SUBROUTINE SURRTRF +SUBROUTINE OSURRTRF ! Adapted from Eli J. Mlawer, Atmospheric & Environmental Research. ! by JJMorcrette, ECMWF @@ -12,7 +12,7 @@ SUBROUTINE SURRTRF #include "tsmbkind.h" -USE YOERRTRF , ONLY : PREF ,PREFLOG ,TREF +USE OYOERRTRF , ONLY : PREF ,PREFLOG ,TREF ! ------------------------------------------------------------------ @@ -67,4 +67,4 @@ TREF( :) = (/& ! ----------------------------------------------------------------- RETURN -END SUBROUTINE SURRTRF +END SUBROUTINE OSURRTRF diff --git a/src/LIB/RAD/ECMWF_RAD/yoerad.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerad.f90 similarity index 99% rename from src/LIB/RAD/ECMWF_RAD/yoerad.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerad.f90 index e843910ec5f1c782a31c595d2ea0b5323cc82ab6..174b0ef530891b152383a1c50d52ed6661fa4693 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerad.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerad.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2_OLD2NEW 2003/02/19 13:36:51 !----------------------------------------------------------------- -MODULE YOERAD +MODULE OYOERAD #include "tsmbkind.h" @@ -123,4 +123,4 @@ REAL_B :: RAOVLP, RBOVLP ! RAOVLP : REAL : COEFFICIENTS FOR ALPHA1 FACTOR IN HOGAN & ! RBOVLP : REAL : ILLINGWORTH's PARAMETRIZATION ! ------------------------------------------------------------------ -END MODULE YOERAD +END MODULE OYOERAD diff --git a/src/LIB/RAD/ECMWF_RAD/yoerdi.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerdi.f90 similarity index 98% rename from src/LIB/RAD/ECMWF_RAD/yoerdi.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerdi.f90 index 628a1c714ab69df52bb7421a48e4ff37b25cb7c4..016661cb532b3f5273a0c1f4dd5773fa6e3fd123 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerdi.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerdi.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:48 !----------------------------------------------------------------- -MODULE YOERDI +MODULE OYOERDI #include "tsmbkind.h" @@ -67,4 +67,4 @@ REAL_B :: REPH2O ! REPH2O : SECURITY TO AVOID WATER VAPOUR CONTENT IN A LAYER ! TO BE MORE THAN THE RESPECTIVE VALUE AT SATURATION. ! ----------------------------------------------------------------- -END MODULE YOERDI +END MODULE OYOERDI diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrta1.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrta1.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrta1.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrta1.f90 index a7b46eef9be7e1a1ba3a755d58f0c4b54b6f454a..9f0c1b4a7e583afbe7ab885f5a509005a4ec3710 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrta1.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrta1.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:48 !----------------------------------------------------------------- -MODULE YOERRTA1 +MODULE OYOERRTA1 #include "tsmbkind.h" @@ -43,4 +43,4 @@ EQUIVALENCE (KA(1,1,1),ABSA(1,1)), (KB(1,13,1),ABSB(1,1)) ! KB : REAL ! SELFREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTA1 +END MODULE OYOERRTA1 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrta10.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrta10.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrta10.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrta10.f90 index e951dd9088a628a8e4387a50ed68f5ede736edb9..2942c12d78b444ee80b348466bde9256dcfa9cc9 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrta10.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrta10.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:48 !----------------------------------------------------------------- -MODULE YOERRTA10 +MODULE OYOERRTA10 #include "tsmbkind.h" @@ -42,4 +42,4 @@ EQUIVALENCE (KA(1,1,1),ABSA(1,1)),(KB(1,13,1),ABSB(1,1)) ! KA : REAL ! KB : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTA10 +END MODULE OYOERRTA10 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrta11.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrta11.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrta11.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrta11.f90 index 8bbf9f5405cdfa1711335890a27a75135faf8ba1..b084e87a5a63dd53259051d492a61d2c4c1a3068 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrta11.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrta11.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:48 !----------------------------------------------------------------- -MODULE YOERRTA11 +MODULE OYOERRTA11 #include "tsmbkind.h" @@ -44,4 +44,4 @@ EQUIVALENCE (KA(1,1,1),ABSA(1,1)),(KB(1,13,1),ABSB(1,1)) ! KB : REAL ! SELFREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTA11 +END MODULE OYOERRTA11 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrta12.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrta12.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrta12.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrta12.f90 index 69b74baa8a71586031b9db7b117c298a42985a66..5bf1829862bdb1d1233514ad50190647db198380 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrta12.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrta12.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:48 !----------------------------------------------------------------- -MODULE YOERRTA12 +MODULE OYOERRTA12 #include "tsmbkind.h" @@ -42,4 +42,4 @@ EQUIVALENCE (KA(1,1,1,1),ABSA(1,1)) ! SELFREF : REAL ! STRRAT1 : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTA12 +END MODULE OYOERRTA12 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrta13.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrta13.f90 similarity index 96% rename from src/LIB/RAD/ECMWF_RAD/yoerrta13.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrta13.f90 index 998833433dbf17614f5a6219d0fb820dc9479231..136c8a8d78095cf8db703d55eecca257133ce9c3 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrta13.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrta13.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:48 !----------------------------------------------------------------- -MODULE YOERRTA13 +MODULE OYOERRTA13 #include "tsmbkind.h" @@ -40,4 +40,4 @@ EQUIVALENCE (KA(1,1,1,1),ABSA(1,1)) ! SELFREF : REAL ! STRRAT1 : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTA13 +END MODULE OYOERRTA13 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrta14.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrta14.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrta14.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrta14.f90 index 4f025deef469618b68ab877a4f2919d3d6296cc8..753e56e72834aed360b1dc0805a915b4c86d919f 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrta14.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrta14.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:48 !----------------------------------------------------------------- -MODULE YOERRTA14 +MODULE OYOERRTA14 #include "tsmbkind.h" @@ -42,6 +42,6 @@ EQUIVALENCE (KA(1,1,1),ABSA(1,1)), (KB(1,13,1),ABSB(1,1)) ! KB : REAL ! SELFREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTA14 +END MODULE OYOERRTA14 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrta15.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrta15.f90 similarity index 96% rename from src/LIB/RAD/ECMWF_RAD/yoerrta15.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrta15.f90 index 5a852ba496be73fd83b54ad10b58717820815db2..fd0ba7a2a1ed036e545f2d2a570c5482cc7152d1 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrta15.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrta15.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:48 !----------------------------------------------------------------- -MODULE YOERRTA15 +MODULE OYOERRTA15 #include "tsmbkind.h" @@ -40,4 +40,4 @@ EQUIVALENCE (KA(1,1,1,1),ABSA(1,1)) ! SELFREF : REAL ! STRRAT : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTA15 +END MODULE OYOERRTA15 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrta16.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrta16.f90 similarity index 96% rename from src/LIB/RAD/ECMWF_RAD/yoerrta16.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrta16.f90 index 3b301d6bc472617af1b05ff8428a9481aac370b2..1cd0c61a994c84f6585079954be0e391e1858906 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrta16.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrta16.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:48 !----------------------------------------------------------------- -MODULE YOERRTA16 +MODULE OYOERRTA16 #include "tsmbkind.h" @@ -40,4 +40,4 @@ EQUIVALENCE (KA(1,1,1,1),ABSA(1,1)) ! SELFREF : REAL ! STRRAT : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTA16 +END MODULE OYOERRTA16 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrta2.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrta2.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrta2.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrta2.f90 index 71bcb7e48f769329ecdb4b35aa6c670d24193ba2..9d86226d6536429222e4595e0b182e994978e215 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrta2.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrta2.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:48 !----------------------------------------------------------------- -MODULE YOERRTA2 +MODULE OYOERRTA2 #include "tsmbkind.h" @@ -46,6 +46,6 @@ EQUIVALENCE (KA(1,1,1),ABSA(1,1)),(KB(1,13,1),ABSB(1,1)) ! SELFREF : REAL ! FORREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTA2 +END MODULE OYOERRTA2 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrta3.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrta3.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrta3.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrta3.f90 index 154aedcb1af3e88256773865aee4bb33e363e278..3c75ed742bcd72e8d367a5442d29d3f0842c709f 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrta3.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrta3.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:48 !----------------------------------------------------------------- -MODULE YOERRTA3 +MODULE OYOERRTA3 #include "tsmbkind.h" @@ -59,4 +59,4 @@ EQUIVALENCE (KA(1,1,1,1),ABSA(1,1)),(KB(1,1,13,1),ABSB(1,1)) ! SELFREF : REAL ! STRRAT : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTA3 +END MODULE OYOERRTA3 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrta4.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrta4.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrta4.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrta4.f90 index f2e3b1b51170f6d0c993aaf998de6848c6009c13..3b694a09ecc871bdc512155cc966228a8497fa5e 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrta4.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrta4.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:48 !----------------------------------------------------------------- -MODULE YOERRTA4 +MODULE OYOERRTA4 #include "tsmbkind.h" @@ -44,4 +44,4 @@ EQUIVALENCE (KA(1,1,1,1),ABSA(1,1)),(KB(1,1,13,1),ABSB(1,1)) ! KB : REAL ! SELFREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTA4 +END MODULE OYOERRTA4 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrta5.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrta5.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrta5.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrta5.f90 index c4b0088bf9694c0b5a7c7ec30ea3bfcd43c74e69..b2c96b974d436ccec89f6867322832956ed6d16e 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrta5.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrta5.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:48 !----------------------------------------------------------------- -MODULE YOERRTA5 +MODULE OYOERRTA5 #include "tsmbkind.h" @@ -50,4 +50,4 @@ EQUIVALENCE (KA(1,1,1,1),ABSA(1,1)),(KB(1,1,13,1),ABSB(1,1)) ! STRRAT1 : REAL ! STRRAT2 : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTA5 +END MODULE OYOERRTA5 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrta6.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrta6.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrta6.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrta6.f90 index 9dc53e5dc1b56d90cc53d060b6fad18eb45e5f4b..c8930cc56dae08689847716c5516260c708381b2 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrta6.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrta6.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:48 !----------------------------------------------------------------- -MODULE YOERRTA6 +MODULE OYOERRTA6 #include "tsmbkind.h" @@ -47,4 +47,4 @@ EQUIVALENCE (KA(1,1,1),ABSA(1,1)) ! KA : REAL ! SELFREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTA6 +END MODULE OYOERRTA6 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrta7.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrta7.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrta7.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrta7.f90 index 81e71a60f1c2d21d968124d6113fdeae26736a59..b0f442c1d8a28e291b8e3dc47847c71681c4348d 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrta7.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrta7.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:48 !----------------------------------------------------------------- -MODULE YOERRTA7 +MODULE OYOERRTA7 #include "tsmbkind.h" @@ -49,4 +49,4 @@ EQUIVALENCE (KA(1,1,1,1),ABSA(1,1)),(KB(1,13,1),ABSB(1,1)) ! SELFREF : REAL ! STRRAT : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTA7 +END MODULE OYOERRTA7 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrta8.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrta8.f90 similarity index 98% rename from src/LIB/RAD/ECMWF_RAD/yoerrta8.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrta8.f90 index 095e470dfdffaf725ae9c6e396f05069f5228997..6c7e46c67b9aa6175dad4c72afb89866b2f185b7 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrta8.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrta8.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:48 !----------------------------------------------------------------- -MODULE YOERRTA8 +MODULE OYOERRTA8 #include "tsmbkind.h" @@ -62,4 +62,4 @@ EQUIVALENCE (KA(1,1,1),ABSA(1,1)),(KB(1,7,1),ABSB(1,1)) ! O3REF : REAL ! SELFREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTA8 +END MODULE OYOERRTA8 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrta9.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrta9.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrta9.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrta9.f90 index d312e7a36b9645d2ddf108de34ba563bf53a61e6..fe0fd95da9943fc86f99c9f8cdd8c772ae270a9e 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrta9.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrta9.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:48 !----------------------------------------------------------------- -MODULE YOERRTA9 +MODULE OYOERRTA9 #include "tsmbkind.h" @@ -58,4 +58,4 @@ EQUIVALENCE (KA(1,1,1,1),ABSA(1,1)),(KB(1,13,1),ABSB(1,1)) ! SELFREF : REAL ! STRRAT : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTA9 +END MODULE OYOERRTA9 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrtab.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrtab.f90 similarity index 96% rename from src/LIB/RAD/ECMWF_RAD/yoerrtab.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrtab.f90 index 710f6073b0e59e8ddd3402cc180355f9f65e4251..0419cefaf32a5517caa4ff1e2ab3eec3e0eddf47 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrtab.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrtab.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:48 !----------------------------------------------------------------- -MODULE YOERRTAB +MODULE OYOERRTAB #include "tsmbkind.h" @@ -30,6 +30,6 @@ REAL_B :: BPADE ! TRANS : REAL ! BPADE : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTAB +END MODULE OYOERRTAB diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrtbg2.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrtbg2.f90 similarity index 94% rename from src/LIB/RAD/ECMWF_RAD/yoerrtbg2.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrtbg2.f90 index a71d71e15d963a65e79cfebfb3b181ccb02b7f68..23d336ac63a8addaae3b638e6d8f5f73de5bed23 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrtbg2.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrtbg2.f90 @@ -4,11 +4,11 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTBG2 +MODULE OYOERRTBG2 #include "tsmbkind.h" -USE PARRRTM +USE OPARRRTM IMPLICIT NONE @@ -32,6 +32,6 @@ REAL_B :: CORR2(0:200) ! CORR1 : REAL : ! CORR2 : REAL : ! ------------------------------------------------------------------- -END MODULE YOERRTBG2 +END MODULE OYOERRTBG2 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrtftr.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrtftr.f90 similarity index 95% rename from src/LIB/RAD/ECMWF_RAD/yoerrtftr.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrtftr.f90 index 3aa34e9639565e942a2a35eaa2cbdda1ad0a6024..de02311aacc95946ec26ac42cda97f8ba8548b71 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrtftr.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrtftr.f90 @@ -4,11 +4,11 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTFTR +MODULE OYOERRTFTR #include "tsmbkind.h" -USE PARRRTM +USE OPARRRTM IMPLICIT NONE @@ -41,6 +41,6 @@ REAL_B :: WT(JPG) ! NGM : INTEGER : ! WT : REAL : ! ------------------------------------------------------------------- -END MODULE YOERRTFTR +END MODULE OYOERRTFTR diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrto1.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrto1.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrto1.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrto1.f90 index f84b9d98802d67d0980e6b2bc65947c70f47b145..5593d54c3fccec8c49221a90898a659965e9f77a 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrto1.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrto1.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTO1 +MODULE OYOERRTO1 #include "tsmbkind.h" @@ -39,4 +39,4 @@ REAL_B :: SELFREFO(10,NO1), FORREFO(NO1) ! KBO : REAL ! SELFREFO: REAL ! ----------------------------------------------------------------- -END MODULE YOERRTO1 +END MODULE OYOERRTO1 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrto10.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrto10.f90 similarity index 96% rename from src/LIB/RAD/ECMWF_RAD/yoerrto10.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrto10.f90 index 9f761294c6790fc9d3d83e994247efae1dc49cb4..ed12f57d968b73c6bf4b1d0de0795ca85068aebc 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrto10.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrto10.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTO10 +MODULE OYOERRTO10 #include "tsmbkind.h" @@ -38,4 +38,4 @@ REAL_B :: KBO(5,13:59,NO10) ! KA : REAL ! KB : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTO10 +END MODULE OYOERRTO10 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrto11.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrto11.f90 similarity index 96% rename from src/LIB/RAD/ECMWF_RAD/yoerrto11.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrto11.f90 index 1498871f2e1f02dfca08c0573ad2718bf00a6374..cbc83b515948c837342bf2871f144ba1173ccb02 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrto11.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrto11.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTO11 +MODULE OYOERRTO11 #include "tsmbkind.h" @@ -40,4 +40,4 @@ REAL_B :: SELFREFO(10,NO11) ! KB : REAL ! SELFREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTO11 +END MODULE OYOERRTO11 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrto12.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrto12.f90 similarity index 96% rename from src/LIB/RAD/ECMWF_RAD/yoerrto12.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrto12.f90 index cfe2a7b970d7e760a14f849b7950adc13226ecef..6667348d8962bef7bb13dd3a460f102906de455e 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrto12.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrto12.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTO12 +MODULE OYOERRTO12 #include "tsmbkind.h" @@ -35,4 +35,4 @@ REAL_B :: SELFREFO(10,NO12) ! KA : REAL ! SELFREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTO12 +END MODULE OYOERRTO12 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrto13.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrto13.f90 similarity index 96% rename from src/LIB/RAD/ECMWF_RAD/yoerrto13.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrto13.f90 index 041ee6c622f00159e3367a6e8b6758b9b3f9f38a..bb0f8e7831f9d2c84fb3d3031e19d8db8a7655c1 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrto13.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrto13.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTO13 +MODULE OYOERRTO13 #include "tsmbkind.h" @@ -36,4 +36,4 @@ REAL_B :: SELFREFO(10,NO13) ! KA : REAL ! SELFREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTO13 +END MODULE OYOERRTO13 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrto14.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrto14.f90 similarity index 96% rename from src/LIB/RAD/ECMWF_RAD/yoerrto14.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrto14.f90 index 5afc400ede2d4a9b56ebbed2a1ff3e597a88cd66..8652bb68987c9578d47b8da78116bca06f24df5e 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrto14.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrto14.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTO14 +MODULE OYOERRTO14 #include "tsmbkind.h" @@ -40,4 +40,4 @@ REAL_B :: SELFREFO(10,NO14) ! KB : REAL ! SELFREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTO14 +END MODULE OYOERRTO14 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrto15.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrto15.f90 similarity index 96% rename from src/LIB/RAD/ECMWF_RAD/yoerrto15.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrto15.f90 index 926d7e6d501c856456a3394df2caf214df3781e1..5ac99793fdd550e21001d6d7df9692889a32cf06 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrto15.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrto15.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTO15 +MODULE OYOERRTO15 #include "tsmbkind.h" @@ -36,4 +36,4 @@ REAL_B :: SELFREFO(10,NO15) ! KA : REAL ! SELFREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTO15 +END MODULE OYOERRTO15 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrto16.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrto16.f90 similarity index 96% rename from src/LIB/RAD/ECMWF_RAD/yoerrto16.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrto16.f90 index b05078f325c39012a4aedd54ff57e9af5f477607..aa64f69b7222099577577230a5e76bc1e2d108a3 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrto16.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrto16.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTO16 +MODULE OYOERRTO16 #include "tsmbkind.h" @@ -36,4 +36,4 @@ REAL_B :: SELFREFO(10,NO16) ! KA : REAL ! SELFREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTO16 +END MODULE OYOERRTO16 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrto2.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrto2.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrto2.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrto2.f90 index d47a8e111508674f602a9d10536691dc63e098b0..1970cce63a33ab5ea4b99643e468c98fe747f2df 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrto2.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrto2.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTO2 +MODULE OYOERRTO2 #include "tsmbkind.h" @@ -41,4 +41,4 @@ REAL_B :: SELFREFO(10,NO2) , FORREFO(NO2) ! SELFREFO: REAL ! FORREFO : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTO2 +END MODULE OYOERRTO2 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrto3.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrto3.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrto3.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrto3.f90 index ffb3a68a6bfa328f02a223288ff818b85ef3bc42..91cc0b0dbad6f3d5eaa0385dd50dcf22ddb6116c 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrto3.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrto3.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTO3 +MODULE OYOERRTO3 #include "tsmbkind.h" @@ -45,4 +45,4 @@ REAL_B :: SELFREFO(10,NO3) ! KBO : REAL ! SELFREFO: REAL ! ----------------------------------------------------------------- -END MODULE YOERRTO3 +END MODULE OYOERRTO3 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrto4.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrto4.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrto4.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrto4.f90 index 7ff81efe82e12659fa2ba9a5e3afbfd97149ae18..604f2f669378cc19027fca32611aab042c8b6d1b 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrto4.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrto4.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTO4 +MODULE OYOERRTO4 #include "tsmbkind.h" @@ -38,4 +38,4 @@ REAL_B :: SELFREFO(10,NO4) ! KB : REAL ! SELFREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTO4 +END MODULE OYOERRTO4 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrto5.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrto5.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrto5.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrto5.f90 index 6e91652e368012a920fca715351c2d214a0c5273..c5a2da3ee6ad3f7308a2f161ec95e5cbcf6184e9 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrto5.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrto5.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTO5 +MODULE OYOERRTO5 #include "tsmbkind.h" @@ -41,4 +41,4 @@ REAL_B :: SELFREFO(10,NO5) ! KB : REAL ! SELFREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTO5 +END MODULE OYOERRTO5 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrto6.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrto6.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrto6.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrto6.f90 index c8f635c6081101a600a6ad44fcac7c78f01db4fb..ac62af2adb5687718e06130c22e1f5baefccf0bb 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrto6.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrto6.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTO6 +MODULE OYOERRTO6 #include "tsmbkind.h" @@ -40,4 +40,4 @@ REAL_B :: SELFREFO(10,NO6) ! KA : REAL ! SELFREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTO6 +END MODULE OYOERRTO6 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrto7.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrto7.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrto7.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrto7.f90 index f03681afa62cb6dcbb14c137d9a292242964658a..51bc19327837f903ce6514395b568300b2065590 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrto7.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrto7.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTO7 +MODULE OYOERRTO7 #include "tsmbkind.h" @@ -41,4 +41,4 @@ REAL_B :: SELFREFO(10,NO7) ! KB : REAL ! SELFREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTO7 +END MODULE OYOERRTO7 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrto8.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrto8.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrto8.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrto8.f90 index 0f450b3b0a98062a2b8dd5c7ac7ba604d8eaeb6f..eed01883e158d2a50edd7686c18d264152cf2e9f 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrto8.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrto8.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTO8 +MODULE OYOERRTO8 #include "tsmbkind.h" @@ -52,4 +52,4 @@ REAL_B :: SELFREFO(10,NO8) ! KB : REAL ! SELFREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTO8 +END MODULE OYOERRTO8 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrto9.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrto9.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrto9.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrto9.f90 index 5a0b771c2c409744ab28adf44f916e588a0de00e..410ad8c582a2ba57d08be2f034651dd4883b659e 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrto9.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrto9.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTO9 +MODULE OYOERRTO9 #include "tsmbkind.h" @@ -48,4 +48,4 @@ REAL_B :: SELFREFO(10,NO9) ! KB : REAL ! SELFREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTO9 +END MODULE OYOERRTO9 diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrtrf.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrtrf.f90 similarity index 96% rename from src/LIB/RAD/ECMWF_RAD/yoerrtrf.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrtrf.f90 index 429ed63c27db20a284f48635e4c15cc6d56b2f4e..3366ece1fad930b49e8ab705063749962d581bda 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrtrf.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrtrf.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTRF +MODULE OYOERRTRF #include "tsmbkind.h" @@ -32,4 +32,4 @@ REAL_B , DIMENSION(59) :: TREF ! PREFLOG: REAL ! TREF : REAL ! ----------------------------------------------------------------- -END MODULE YOERRTRF +END MODULE OYOERRTRF diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrtrwt.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrtrwt.f90 similarity index 95% rename from src/LIB/RAD/ECMWF_RAD/yoerrtrwt.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrtrwt.f90 index 6f3b7adbe06b2e4cf5723db9dbe08d1abcbb5c8f..b55b15634cd8f56e4f014f93ed55403ae92c506b 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrtrwt.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrtrwt.f90 @@ -4,11 +4,11 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:49 !----------------------------------------------------------------- -MODULE YOERRTRWT +MODULE OYOERRTRWT #include "tsmbkind.h" -USE PARRRTM +USE OPARRRTM IMPLICIT NONE @@ -38,4 +38,4 @@ REAL_B :: RWGT (JPG*JPBAND) ! FREFBDF: REAL : ! RWT : REAL : ! ------------------------------------------------------------------- -END MODULE YOERRTRWT +END MODULE OYOERRTRWT diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrtwn.f90 b/src/LIB/RAD/ECMWF_RAD/oyoerrtwn.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yoerrtwn.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoerrtwn.f90 index 17e63592e4a2332edb4f1c5d41b2ee375234ae2e..af74682c58840382d59fc1386ff0cf0d536600ff 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrtwn.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoerrtwn.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:50 !----------------------------------------------------------------- -MODULE YOERRTWN +MODULE OYOERRTWN #include "tsmbkind.h" @@ -42,4 +42,4 @@ REAL_B , DIMENSION(181) :: TOTPLK16 ! TOTPLNK : REAL : ! TOTPLK16: REAL : ! ----------------------------------------------------------------- -END MODULE YOERRTWN +END MODULE OYOERRTWN diff --git a/src/LIB/RAD/ECMWF_RAD/yoesw.f90 b/src/LIB/RAD/ECMWF_RAD/oyoesw.f90 similarity index 99% rename from src/LIB/RAD/ECMWF_RAD/yoesw.f90 rename to src/LIB/RAD/ECMWF_RAD/oyoesw.f90 index df6e443d17d5307a84661093d3d3b0f663c91055..6e88d279260c4cad74568c8798e9ccfc568ab93d 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoesw.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyoesw.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:50 !----------------------------------------------------------------- -MODULE YOESW +MODULE OYOESW #include "tsmbkind.h" @@ -281,4 +281,4 @@ LOGICAL LO3ONLY ! for Antarctica ! RALBICE_AN : REAL : for Arctic ! ----------------------------------------------------------------- -END MODULE YOESW +END MODULE OYOESW diff --git a/src/LIB/RAD/ECMWF_RAD/yomcst.f90 b/src/LIB/RAD/ECMWF_RAD/oyomcst.f90 similarity index 97% rename from src/LIB/RAD/ECMWF_RAD/yomcst.f90 rename to src/LIB/RAD/ECMWF_RAD/oyomcst.f90 index 028c8023e2ed660fe1a86e154eb9b7690ef9c068..89f670f423ab315d229ca836ed27acc80c4f98af 100644 --- a/src/LIB/RAD/ECMWF_RAD/yomcst.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyomcst.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:50 !----------------------------------------------------------------- -MODULE YOMCST +MODULE OYOMCST #include "tsmbkind.h" @@ -77,4 +77,4 @@ REAL_B :: RGAMD ! ------------------------------------------------------------------ -END MODULE YOMCST +END MODULE OYOMCST diff --git a/src/LIB/RAD/ECMWF_RAD/yomlun.f90 b/src/LIB/RAD/ECMWF_RAD/oyomlun.f90 similarity index 99% rename from src/LIB/RAD/ECMWF_RAD/yomlun.f90 rename to src/LIB/RAD/ECMWF_RAD/oyomlun.f90 index b43a1bb7024ca6fcd0b38080bd94c800ccae032f..0b822889eee0cdc1aac7b3a712e61299436dd9d3 100644 --- a/src/LIB/RAD/ECMWF_RAD/yomlun.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyomlun.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:50 !----------------------------------------------------------------- -MODULE YOMLUN +MODULE OYOMLUN #include "tsmbkind.h" @@ -188,4 +188,4 @@ INTEGER_M :: NUO3CH1 INTEGER_M :: NUO3CH2 INTEGER_M :: NTCSR ! ------------------------------------------------------------------ -END MODULE YOMLUN +END MODULE OYOMLUN diff --git a/src/LIB/RAD/ECMWF_RAD/yomrip.f90 b/src/LIB/RAD/ECMWF_RAD/oyomrip.f90 similarity index 98% rename from src/LIB/RAD/ECMWF_RAD/yomrip.f90 rename to src/LIB/RAD/ECMWF_RAD/oyomrip.f90 index 9d017b753fbb1c2ea6fc90f4557aec78efb6e80e..82397e7796ea32af0654051bd3e6c9b905e65bf3 100644 --- a/src/LIB/RAD/ECMWF_RAD/yomrip.f90 +++ b/src/LIB/RAD/ECMWF_RAD/oyomrip.f90 @@ -4,7 +4,7 @@ ! $Source$ $Revision$ ! ECMWF_RAD2 2003/02/19 13:36:50 !----------------------------------------------------------------- -MODULE YOMRIP +MODULE OYOMRIP #include "tsmbkind.h" @@ -73,4 +73,4 @@ REAL_B :: RDTS62 REAL_B :: RDTS22 REAL_B :: RTDT ! ------------------------------------------------------------------ -END MODULE YOMRIP +END MODULE OYOMRIP diff --git a/src/LIB/RAD/ECMWF_RAD/rad1Driv_MACLATMOSPH_60LEVELS_ICRCCM3.f90 b/src/LIB/RAD/ECMWF_RAD/rad1Driv_MACLATMOSPH_60LEVELS_ICRCCM3.f90 index 8958756ed3657d26ea9ba737fbe2b66730e35ae5..f54aeb50bb325ea806f3c2edc53405961d031c7a 100644 --- a/src/LIB/RAD/ECMWF_RAD/rad1Driv_MACLATMOSPH_60LEVELS_ICRCCM3.f90 +++ b/src/LIB/RAD/ECMWF_RAD/rad1Driv_MACLATMOSPH_60LEVELS_ICRCCM3.f90 @@ -14,7 +14,7 @@ USE PARRTM1D , ONLY : JP_LON ,JP_IDIA ,JP_FDIA ,JP_TDIA ,& ! USE YOMLUN , ONLY : NULNAM -USE YOMCST , ONLY : RD ,RG ,RTT ,RSIGMA ,& +USE OYOMCST , ONLY : RD ,RG ,RTT ,RSIGMA ,& & RCPD ,RPI ,RDAY ,RCPD ,REA ,& & RI0 ,RSIGMA ,REPSM USE YOEAERD , ONLY : CVDAES ,CVDAEL ,CVDAEU ,CVDAED ,& @@ -25,19 +25,19 @@ USE YOELW , ONLY : NSIL ,NIPD ,NTRA ,NUA ,& & NG1 ,NG1P1 ,WG1 USE YOEOVLP , ONLY : RA1OVLP USE YOEPHLI , ONLY : LPHYLIN -USE YOERAD , ONLY : NAER ,NMODE ,NOZOCL ,& +USE OYOERAD , ONLY : NAER ,NMODE ,NOZOCL ,& & NRADFR ,NRADPFR ,NRADPLA ,NRINT ,NHOWINH ,& & NOVLP ,NRADF2C ,NRADC2F ,NLW ,NSW ,& & NTSW ,LERAD6H ,LERADHS ,LHVOLCA ,LNEWAER ,& & LONEWSW ,LOWASYF ,LOWHSSS ,LOIFUEC ,LRRTM ,& & LRADLP ,LINHOM ,RAOVLP ,RBOVLP ,& & NICEOPT ,NLIQOPT ,NRADIP ,NRADLP ,RMINICE -USE YOERDI , ONLY : RCARDI ,RCH4 ,RN2O ,RO3 ,& +USE OYOERDI , ONLY : RCARDI ,RCH4 ,RN2O ,RO3 ,& & RCFC11 ,RCFC12 ,REPCLC USE YOERDU , ONLY : NUAER ,NTRAER ,NIMP ,NOUT ,& & RCDAY ,R10E ,REPLOG ,REPSC ,REPSCO ,& & REPSCQ ,REPSCT ,REPSCW ,DIFF -USE YOESW , ONLY : LO3ONLY +USE OYOESW , ONLY : LO3ONLY USE YOETHF , ONLY : R2ES ,R3LES ,R3IES ,R4LES ,& & R4IES ,R5LES ,R5IES ,R5ALVCP ,R5ALSCP ,& & RALVDCP ,RALSDCP ,RTWAT ,RTICE ,RTICECU diff --git a/src/LIB/RAD/ECMWF_RAD/radaca.f90 b/src/LIB/RAD/ECMWF_RAD/radaca.f90 index 31a10f45054263529677e66d31e630f1bef03638..df45e504a2322028f2da6a98acc99c8bd3c706eb 100644 --- a/src/LIB/RAD/ECMWF_RAD/radaca.f90 +++ b/src/LIB/RAD/ECMWF_RAD/radaca.f90 @@ -65,14 +65,14 @@ SUBROUTINE RADACA ( KIDIA , KFDIA , KLON , KTDIA , KLEV & #include "tsmbkind.h" -USE YOMCST , ONLY : R ,RPI +USE OYOMCST , ONLY : R ,RPI USE YOEAERD , ONLY : CVDAES ,CVDAEL ,CVDAEU ,CVDAED ,& &RCAEOPS ,RCAEOPL ,RCAEOPU ,RCAEOPD ,RCTRBGA ,& &RCVOBGA ,RCSTBGA ,RCTRPT ,RAESC ,RAESS ,& &RAELC ,RAELS ,RAEUC ,RAEUS ,RAEDC ,& &RAEDS USE YOEOZOC , ONLY : COZQC ,COZQS ,COZHC ,COZHS -USE YOERAD , ONLY : LHVOLCA ,LNEWAER +USE OYOERAD , ONLY : LHVOLCA ,LNEWAER USE YOEAERC , ONLY : RSINCT ,RSINCV ,REPAER ,& &RTAEBC ,RTAEOR ,RTAESD ,RTAESS ,RTAESU , & &RTAEVO diff --git a/src/LIB/RAD/ECMWF_RAD/radlsw.f90 b/src/LIB/RAD/ECMWF_RAD/radlsw.f90 index c51b13960595cf3db9bc05c5d605c8f2ec8b2989..2f5332dabd6b746c7f111dc3761c8cac3ed04122 100644 --- a/src/LIB/RAD/ECMWF_RAD/radlsw.f90 +++ b/src/LIB/RAD/ECMWF_RAD/radlsw.f90 @@ -96,12 +96,12 @@ SUBROUTINE RADLSW & #include "tsmbkind.h" !USE YOMCT3 , ONLY : NSTEP -USE YOMCST , ONLY : RG ,RD ,RTT ,RPI -USE YOERAD , ONLY : NSW ,LRRTM ,LINHOM, & +USE OYOMCST , ONLY : RG ,RD ,RTT ,RPI +USE OYOERAD , ONLY : NSW ,LRRTM ,LINHOM, & &LOIFUEC, LTEMPDS, LOWASYF, LOWHSSS, NRADIP, NRADLP, & &NICEOPT, NLIQOPT, NOVLP , NHOWINH, RMINICE USE YOELW , ONLY : NSIL ,NTRA ,NUA ,TSTAND ,XP -USE YOESW , ONLY : RYFWCA ,RYFWCB ,RYFWCC ,RYFWCD ,& +USE OYOESW , ONLY : RYFWCA ,RYFWCB ,RYFWCC ,RYFWCD ,& &RYFWCE ,RYFWCF ,REBCUA ,REBCUB ,REBCUC ,& &REBCUD ,REBCUE ,REBCUF ,REBCUI ,REBCUJ ,& &REBCUG ,REBCUH ,RHSAVI ,RFULIO ,RFLAA0 ,& @@ -113,10 +113,10 @@ USE YOESW , ONLY : RYFWCA ,RYFWCB ,RYFWCC ,RYFWCD ,& &RASWCB ,RASWCC ,RASWCD ,RASWCE ,RASWCF ,& &RLINLI USE YOERDU , ONLY : NUAER ,NTRAER ,REPLOG ,REPSC ,DIFF -USE YOERDI , ONLY : REPCLC +USE OYOERDI , ONLY : REPCLC USE YOETHF , ONLY : RTICE USE YOEPHLI , ONLY : LPHYLIN -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB ,WAVENUM1 ,& +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB ,WAVENUM1 ,& &WAVENUM2 ,DELWAVE ,TOTPLNK ,TOTPLK16 USE YOEDBUG , ONLY : LDEBUG diff --git a/src/LIB/RAD/ECMWF_RAD/radozc.f90 b/src/LIB/RAD/ECMWF_RAD/radozc.f90 index 024ec4626688bbf66846b9014d1a662a97d88af8..007543cecefe4408eeb4ad4bdfe1e0b255c4d213 100644 --- a/src/LIB/RAD/ECMWF_RAD/radozc.f90 +++ b/src/LIB/RAD/ECMWF_RAD/radozc.f90 @@ -52,7 +52,7 @@ SUBROUTINE RADOZC ( KIDIA , KFDIA , KLON , KTDIA , KLEV & #include "tsmbkind.h" - USE YOMCST , ONLY : R + USE OYOMCST , ONLY : R USE YOEOZOC , ONLY : RSINC ,ROZT ,RPROC diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb3_a.f90 b/src/LIB/RAD/ECMWF_RAD/rrtm_kgb3_a.f90 index c3a441db7d74e5b83327814aeea7d14d88573d2f..db44cc8691970751fb31f07061489480dc4493fb 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb3_a.f90 +++ b/src/LIB/RAD/ECMWF_RAD/rrtm_kgb3_a.f90 @@ -72,9 +72,9 @@ USE PARKIND1, ONLY :& ! -------------------------------------- -USE YOERRTO3 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO3 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO ,FORREFO ,ABSN2OAO ,ABSN2OBO -USE YOERRTA3 , ONLY : ABSN2OA ,ABSN2OB ,ETAREF ,H2OREF ,& +USE OYOERRTA3 , ONLY : ABSN2OA ,ABSN2OB ,ETAREF ,H2OREF ,& &N2OREF ,CO2REF ,STRRAT ! ------------------------------------------------------------------ diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb3_b.f90 b/src/LIB/RAD/ECMWF_RAD/rrtm_kgb3_b.f90 index 101173678256f96fda865eb302b65d3888a41585..e82127f7843da9605666707e023add4cbd780eb4 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb3_b.f90 +++ b/src/LIB/RAD/ECMWF_RAD/rrtm_kgb3_b.f90 @@ -72,9 +72,9 @@ USE PARKIND1, ONLY :& ! -------------------------------------- -USE YOERRTO3 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO3 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO ,FORREFO ,ABSN2OAO ,ABSN2OBO -USE YOERRTA3 , ONLY : ABSN2OA ,ABSN2OB ,ETAREF ,H2OREF ,& +USE OYOERRTA3 , ONLY : ABSN2OA ,ABSN2OB ,ETAREF ,H2OREF ,& &N2OREF ,CO2REF ,STRRAT ! ------------------------------------------------------------------ diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb3_c.f90 b/src/LIB/RAD/ECMWF_RAD/rrtm_kgb3_c.f90 index 9bc253ae476ebafada85dc943ec063ca8bc81b34..52da3e3dbad680fa42b343f0860e11dd47b4021f 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb3_c.f90 +++ b/src/LIB/RAD/ECMWF_RAD/rrtm_kgb3_c.f90 @@ -72,9 +72,9 @@ USE PARKIND1, ONLY :& ! -------------------------------------- -USE YOERRTO3 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO3 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO ,FORREFO ,ABSN2OAO ,ABSN2OBO -USE YOERRTA3 , ONLY : ABSN2OA ,ABSN2OB ,ETAREF ,H2OREF ,& +USE OYOERRTA3 , ONLY : ABSN2OA ,ABSN2OB ,ETAREF ,H2OREF ,& &N2OREF ,CO2REF ,STRRAT ! ------------------------------------------------------------------ diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb4_a.f90 b/src/LIB/RAD/ECMWF_RAD/rrtm_kgb4_a.f90 index 1bcf74ee1b4ecfb7e9a96a2b0190c41396a47af6..56076ef7c13d137f67b9e8edaafb5adaec1999c5 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb4_a.f90 +++ b/src/LIB/RAD/ECMWF_RAD/rrtm_kgb4_a.f90 @@ -72,8 +72,8 @@ USE PARKIND1, ONLY :& ! -------------------------------------- -USE YOERRTO4 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,FRACREFBO -USE YOERRTA4 , ONLY : STRRAT1 ,STRRAT2 +USE OYOERRTO4 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,FRACREFBO +USE OYOERRTA4 , ONLY : STRRAT1 ,STRRAT2 ! ------------------------------------------------------------------ diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb4_b.f90 b/src/LIB/RAD/ECMWF_RAD/rrtm_kgb4_b.f90 index 3ec659309c76b8aae38c69e9f00e49c8ee250891..d900926d9a592d7fc1dcbb6edec0682fc24eb399 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb4_b.f90 +++ b/src/LIB/RAD/ECMWF_RAD/rrtm_kgb4_b.f90 @@ -72,8 +72,8 @@ USE PARKIND1, ONLY :& ! -------------------------------------- -USE YOERRTO4 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,FRACREFBO -USE YOERRTA4 , ONLY : STRRAT1 ,STRRAT2 +USE OYOERRTO4 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,FRACREFBO +USE OYOERRTA4 , ONLY : STRRAT1 ,STRRAT2 ! ------------------------------------------------------------------ diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb4_c.f90 b/src/LIB/RAD/ECMWF_RAD/rrtm_kgb4_c.f90 index c456450a7786b76736bd4698ebd543dc403229cd..a7071b7e0f01664206150227e8b1e8e97db7c133 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb4_c.f90 +++ b/src/LIB/RAD/ECMWF_RAD/rrtm_kgb4_c.f90 @@ -72,8 +72,8 @@ USE PARKIND1, ONLY :& ! -------------------------------------- -USE YOERRTO4 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,FRACREFBO -USE YOERRTA4 , ONLY : STRRAT1 ,STRRAT2 +USE OYOERRTO4 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,FRACREFBO +USE OYOERRTA4 , ONLY : STRRAT1 ,STRRAT2 ! ------------------------------------------------------------------ diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb5_a.f90 b/src/LIB/RAD/ECMWF_RAD/rrtm_kgb5_a.f90 index 30e4404d8da22a0b05d4cdb4605ceef9429f438c..c8fcf472fde11032774f0f51d7b941cb9ae1d2b1 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb5_a.f90 +++ b/src/LIB/RAD/ECMWF_RAD/rrtm_kgb5_a.f90 @@ -72,9 +72,9 @@ USE PARKIND1, ONLY :& ! -------------------------------------- -USE YOERRTO5 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO5 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO, CCL4O -USE YOERRTA5 , ONLY : STRRAT1 ,STRRAT2 +USE OYOERRTA5 , ONLY : STRRAT1 ,STRRAT2 ! ------------------------------------------------------------------ diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb5_b.f90 b/src/LIB/RAD/ECMWF_RAD/rrtm_kgb5_b.f90 index e28cf8001a933fb1aac17da16d269f380e424af7..549b937efa69dd91109cc3f244b633b1ef355f08 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb5_b.f90 +++ b/src/LIB/RAD/ECMWF_RAD/rrtm_kgb5_b.f90 @@ -72,9 +72,9 @@ USE PARKIND1, ONLY :& ! -------------------------------------- -USE YOERRTO5 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO5 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO, CCL4O -USE YOERRTA5 , ONLY : STRRAT1 ,STRRAT2 +USE OYOERRTA5 , ONLY : STRRAT1 ,STRRAT2 ! ------------------------------------------------------------------ diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb5_c.f90 b/src/LIB/RAD/ECMWF_RAD/rrtm_kgb5_c.f90 index 7df98b930b60261c48e6371b23ba026def205377..20827fb94e8fb34e48f639a604129bae94028f15 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_kgb5_c.f90 +++ b/src/LIB/RAD/ECMWF_RAD/rrtm_kgb5_c.f90 @@ -72,9 +72,9 @@ USE PARKIND1, ONLY :& ! -------------------------------------- -USE YOERRTO5 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& +USE OYOERRTO5 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& &FRACREFBO, CCL4O -USE YOERRTA5 , ONLY : STRRAT1 ,STRRAT2 +USE OYOERRTA5 , ONLY : STRRAT1 ,STRRAT2 ! ------------------------------------------------------------------ diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_rrtm_140gp.f90 b/src/LIB/RAD/ECMWF_RAD/rrtm_rrtm_140gp.f90 index 04aab830c94da166292397b99dd39ae2f6c5bb0e..eac6c18cb1e2e70dccafb2a41ed1d34a704ccd5b 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_rrtm_140gp.f90 +++ b/src/LIB/RAD/ECMWF_RAD/rrtm_rrtm_140gp.f90 @@ -61,14 +61,14 @@ SUBROUTINE RRTM_RRTM_140GP & #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,JPLAY ,& +USE OPARRRTM , ONLY : JPBAND ,JPG ,JPXSEC ,JPGPT ,JPLAY ,& &JPINPX -USE YOERRTWN , ONLY : WAVENUM1 ,WAVENUM2 ,DELWAVE ,NG ,NSPA ,NSPB +USE OYOERRTWN , ONLY : WAVENUM1 ,WAVENUM2 ,DELWAVE ,NG ,NSPA ,NSPB ! -USE MODI_RRTM_ECRT_140GP -USE MODI_RRTM_SETCOEF_140GP -USE MODI_RRTM_GASABS1A_140GP -USE MODI_RRTM_RTRN1A_140GP +!USE MODI_ORRTM_ECRT_140GP +!USE MODI_ORRTM_SETCOEF_140GP +!USE MODI_ORRTM_GASABS1A_140GP +!USE MODI_RRTM_RTRN1A_140GP ! !------------------------------Arguments-------------------------------- @@ -214,7 +214,7 @@ DO iplon = kidia,kfdia ! print *,'before RRTM_ECRT_140GP' - CALL RRTM_ECRT_140GP & + CALL ORRTM_ECRT_140GP & &( iplon, klon , klev, icld & &, paer , paph , pap & &, pts , pth , pt & @@ -235,14 +235,14 @@ DO iplon = kidia,kfdia ! print *,'before RRTM_SETCOEF_140GP' - CALL RRTM_SETCOEF_140GP (KLEV,COLDRY,WKL & + CALL ORRTM_SETCOEF_140GP (KLEV,COLDRY,WKL & &, FAC00,FAC01,FAC10,FAC11,FORFAC,JP,JT,JT1 & &, COLH2O,COLCO2,COLO3,COLN2O,COLCH4,COLO2,CO2MULT & &, LAYTROP,LAYSWTCH,LAYLOW,PAVEL,TAVEL,SELFFAC,SELFFRAC,INDSELF) ! print *,'before RRTM_GASABS1A_140GP' - CALL RRTM_GASABS1A_140GP (KLEV,ATR1,OD,TF1,COLDRY,WX & + CALL ORRTM_GASABS1A_140GP (KLEV,ATR1,OD,TF1,COLDRY,WX & &, TAUAERL,FAC00,FAC01,FAC10,FAC11,FORFAC,JP,JT,JT1,ONEMINUS & &, COLH2O,COLCO2,COLO3,COLN2O,COLCH4,COLO2,CO2MULT & &, LAYTROP,LAYSWTCH,LAYLOW,SELFFAC,SELFFRAC,INDSELF,PFRAC) diff --git a/src/LIB/RAD/ECMWF_RAD/rrtm_rtrn1a_140gp.f90 b/src/LIB/RAD/ECMWF_RAD/rrtm_rtrn1a_140gp.f90 index 7dacbe7d7680dd1a98401192797cb07599613aae..c7b8765156139f1920d101d69a47913301e6338b 100644 --- a/src/LIB/RAD/ECMWF_RAD/rrtm_rtrn1a_140gp.f90 +++ b/src/LIB/RAD/ECMWF_RAD/rrtm_rtrn1a_140gp.f90 @@ -30,10 +30,10 @@ SUBROUTINE RRTM_RTRN1A_140GP (KLEV,ISTART,IEND,ICLDLYR,CLDFRAC,TAUCLD,ABSS1 & #include "tsmbkind.h" -USE PARRRTM , ONLY : JPBAND ,JPGPT ,JPLAY -USE YOERRTAB , ONLY : BPADE -USE YOERRTWN , ONLY : TOTPLNK ,DELWAVE -USE YOERRTFTR, ONLY : NGB +USE OPARRRTM , ONLY : JPBAND ,JPGPT ,JPLAY +USE OYOERRTAB , ONLY : BPADE +USE OYOERRTWN , ONLY : TOTPLNK ,DELWAVE +USE OYOERRTFTR, ONLY : NGB IMPLICIT NONE diff --git a/src/LIB/RAD/ECMWF_RAD/satur.f90 b/src/LIB/RAD/ECMWF_RAD/satur.f90 index 4f1d83e030981ab025752d4fd014476b837591ff..ce69c426a864525dd4015ceb17a85615ee80aaf1 100644 --- a/src/LIB/RAD/ECMWF_RAD/satur.f90 +++ b/src/LIB/RAD/ECMWF_RAD/satur.f90 @@ -59,7 +59,7 @@ SUBROUTINE SATUR ( KIDIA , KFDIA , KLON , KTDIA , KLEV & #include "tsmbkind.h" -USE YOMCST , ONLY : RETV ,RLVTT ,RLSTT ,RTT +USE OYOMCST , ONLY : RETV ,RLVTT ,RLSTT ,RTT USE YOETHF , ONLY : R2ES ,R3LES ,R3IES ,R4LES ,& &R4IES ,R5LES ,R5IES ,R5ALVCP ,R5ALSCP ,& &RALVDCP ,RALSDCP ,RTWAT ,RTICE ,RTICECU diff --git a/src/LIB/RAD/ECMWF_RAD/suaerl.f90 b/src/LIB/RAD/ECMWF_RAD/suaerl.f90 index 7de96be1919a7101237276cedf9cffe790b20e6f..d1441142b20e98a1bc1a76ec7d7e1a1cd268aa0b 100644 --- a/src/LIB/RAD/ECMWF_RAD/suaerl.f90 +++ b/src/LIB/RAD/ECMWF_RAD/suaerl.f90 @@ -49,7 +49,7 @@ SUBROUTINE SUAERL #include "tsmbkind.h" -USE YOESW , ONLY : RAER +USE OYOESW , ONLY : RAER ! ---------------------------------------------------------------- diff --git a/src/LIB/RAD/ECMWF_RAD/suaersn.f90 b/src/LIB/RAD/ECMWF_RAD/suaersn.f90 index 0ce8d6910b334f6cc3ed2b164910a4230109d020..5b75c3c7c8dabf6c08feee4a604f6c26ac8daf04 100644 --- a/src/LIB/RAD/ECMWF_RAD/suaersn.f90 +++ b/src/LIB/RAD/ECMWF_RAD/suaersn.f90 @@ -51,7 +51,7 @@ SUBROUTINE SUAERSN (KTSW,KSW) #include "tsmbkind.h" -USE YOESW , ONLY : RTAUA ,RPIZA ,RCGA +USE OYOESW , ONLY : RTAUA ,RPIZA ,RCGA ! ---------------------------------------------------------------- diff --git a/src/LIB/RAD/ECMWF_RAD/sucldp.f90 b/src/LIB/RAD/ECMWF_RAD/sucldp.f90 index f4cb5ffa8987867ac7366532bd84aa7a2e889178..d354dea01f2dee05737727d83c50411a8b868b0e 100644 --- a/src/LIB/RAD/ECMWF_RAD/sucldp.f90 +++ b/src/LIB/RAD/ECMWF_RAD/sucldp.f90 @@ -51,7 +51,7 @@ SUBROUTINE SUCLDP #include "tsmbkind.h" -USE YOMCST , ONLY : RG +USE OYOMCST , ONLY : RG USE YOECLDP , ONLY : RAMID ,RCLDIFF ,RCLCRIT ,RKCONV ,& &RPRC1 ,RPRC2 ,RCLDMAX ,RPECONS ,RTAUMEL ,& &RENTRTU ,RENTRRA ,RAMIN ,RLMIN ,RASMICE ,& diff --git a/src/LIB/RAD/ECMWF_RAD/suclopn.f90 b/src/LIB/RAD/ECMWF_RAD/suclopn.f90 index 874a940b3ac3c4a9cc935fa5c8bcb9b67847ac78..6b15feb8cd090bb5374de2d9255563055df4318b 100644 --- a/src/LIB/RAD/ECMWF_RAD/suclopn.f90 +++ b/src/LIB/RAD/ECMWF_RAD/suclopn.f90 @@ -61,7 +61,7 @@ SUBROUTINE SUCLOPN (KTSW,KSW , KLEV) #include "tsmbkind.h" -USE YOESW , ONLY : RYFWCA ,RYFWCB ,RYFWCC ,RYFWCD ,& +USE OYOESW , ONLY : RYFWCA ,RYFWCB ,RYFWCC ,RYFWCD ,& &RYFWCE ,RYFWCF ,REBCUA ,REBCUB ,REBCUC ,& &REBCUD ,REBCUE ,REBCUF ,REBCUG ,REBCUH ,& &REBCUI ,REBCUJ ,RASWCA ,RASWCB ,RASWCC ,& @@ -74,7 +74,7 @@ USE YOESW , ONLY : RYFWCA ,RYFWCB ,RYFWCC ,RYFWCD ,& &RFLBB1 ,RFLBB2 ,RFLBB3 ,RFLCC0 ,RFLCC1 ,& &RFLCC2 ,RFLCC3 ,RFLDD0 ,RFLDD1 ,RFLDD2 ,& &RFLDD3 ,RLINLI ,RTIW ,RRIW -USE YOERAD , ONLY : RAOVLP ,RBOVLP +USE OYOERAD , ONLY : RAOVLP ,RBOVLP IMPLICIT NONE diff --git a/src/LIB/RAD/ECMWF_RAD/sucst.f90 b/src/LIB/RAD/ECMWF_RAD/sucst.f90 index 1c9509e80de9fc83293273040c9031db490b33b2..557f0766314ec644c8c5f6f3718f764debb126d1 100644 --- a/src/LIB/RAD/ECMWF_RAD/sucst.f90 +++ b/src/LIB/RAD/ECMWF_RAD/sucst.f90 @@ -55,7 +55,7 @@ SUBROUTINE SUCST() #include "tsmbkind.h" -USE YOMCST , ONLY : RPI ,RCLUM ,RHPLA ,RKBOL ,& +USE OYOMCST , ONLY : RPI ,RCLUM ,RHPLA ,RKBOL ,& &RNAVO ,RDAY ,REA ,REPSM ,RSIYEA ,& &RSIDAY ,ROMEGA ,RA ,RG ,R1SA ,& &RSIGMA ,RI0 ,R ,RMD ,RMV ,& @@ -65,7 +65,7 @@ USE YOMCST , ONLY : RPI ,RCLUM ,RHPLA ,RKBOL ,& &RLMLT ,RTT ,RATM ,RDT ,RESTT ,& &RALPW ,RBETW ,RGAMW ,RALPS ,RBETS ,& &RGAMS ,RALPD ,RBETD ,RGAMD -USE YOMRIP , ONLY : RTIMST ,RTIMTR +USE OYOMRIP , ONLY : RTIMST ,RTIMTR IMPLICIT NONE diff --git a/src/LIB/RAD/ECMWF_RAD/suecaec.f90 b/src/LIB/RAD/ECMWF_RAD/suecaec.f90 index 8c5c747279bf72c57992b306eb8286564b51448b..4ee45fa5fad60ce6d6517c7883aebfadb51c4dfe 100644 --- a/src/LIB/RAD/ECMWF_RAD/suecaec.f90 +++ b/src/LIB/RAD/ECMWF_RAD/suecaec.f90 @@ -67,7 +67,7 @@ SUBROUTINE SUECAEC ( KINDAT, KMINUT ) #include "tsmbkind.h" -USE YOMCST , ONLY : RPI , RDAY +USE OYOMCST , ONLY : RPI , RDAY USE YOEAERC , ONLY : RAERBC, RAEROR, RAERSD, RAERSS, RAERSU,& &REPAER, RSINCT, RSINCV,& &RTAEBC, RTAEOR, RTAESD, RTAESS, RTAESU, RTAEVO diff --git a/src/LIB/RAD/ECMWF_RAD/suecozc.f90 b/src/LIB/RAD/ECMWF_RAD/suecozc.f90 index e04eda664ca320d26e39822903d2cb08b654ff66..88e395d77eca68e1132b7ca614c9b9817d7ca36e 100644 --- a/src/LIB/RAD/ECMWF_RAD/suecozc.f90 +++ b/src/LIB/RAD/ECMWF_RAD/suecozc.f90 @@ -53,8 +53,8 @@ SUBROUTINE SUECOZC ( KINDAT, KMINUT ) #include "tsmbkind.h" -USE YOMCST , ONLY : RPI ,RDAY -USE YOERDI , ONLY : RO3 +USE OYOMCST , ONLY : RPI ,RDAY +USE OYOERDI , ONLY : RO3 USE YOEOZOC , ONLY : RSINC ,ROZT ,RPROC diff --git a/src/LIB/RAD/ECMWF_RAD/suovlp.f90 b/src/LIB/RAD/ECMWF_RAD/suovlp.f90 index 43bb5384469b2e62ee2c4622491ad1cd858c5ff9..88e1d577d511c4b8bdb6c52c025d94ac0a1fb968 100644 --- a/src/LIB/RAD/ECMWF_RAD/suovlp.f90 +++ b/src/LIB/RAD/ECMWF_RAD/suovlp.f90 @@ -28,7 +28,7 @@ SUBROUTINE SUOVLP ( KLEV, PAZ ) #include "tsmbkind.h" -USE YOERAD , ONLY : RAOVLP, RBOVLP +USE OYOERAD , ONLY : RAOVLP, RBOVLP USE YOEOVLP , ONLY : RA1OVLP IMPLICIT NONE diff --git a/src/LIB/RAD/ECMWF_RAD/susw.f90 b/src/LIB/RAD/ECMWF_RAD/susw.f90 index 56ecae27a223cfba018e052bc4554ef861d63bcf..b08fa3f1b8c05902dcffdae4b983fa6aa08ced64 100644 --- a/src/LIB/RAD/ECMWF_RAD/susw.f90 +++ b/src/LIB/RAD/ECMWF_RAD/susw.f90 @@ -48,8 +48,8 @@ SUBROUTINE SUSW #include "tsmbkind.h" -USE YOMCST , ONLY : RG -USE YOESW , ONLY : APAD ,BPAD ,RRAY ,RSUN ,& +USE OYOMCST , ONLY : RG +USE OYOESW , ONLY : APAD ,BPAD ,RRAY ,RSUN ,& &RPDH1 ,RPDU1 ,RPNH ,RPNU ,RSWCE ,& &RSWCP ,RTDH2O ,RTDUMG ,RTH2O ,RTUMG ,D diff --git a/src/LIB/RAD/ECMWF_RAD/suswn.f90 b/src/LIB/RAD/ECMWF_RAD/suswn.f90 index 012eb7e0c2a0e70fca2e0382b537dcd6ee1a080c..e4c3a53c4c8034d42f5bd3c48d0a31ffb5bc0746 100644 --- a/src/LIB/RAD/ECMWF_RAD/suswn.f90 +++ b/src/LIB/RAD/ECMWF_RAD/suswn.f90 @@ -54,9 +54,9 @@ SUBROUTINE SUSWN (KTSW,KSW) #include "tsmbkind.h" -USE YOMCST , ONLY : RG -USE YOERAD , ONLY : NTSW ,LONEWSW -USE YOESW , ONLY : APAD ,BPAD ,RRAY ,RSUN ,& +USE OYOMCST , ONLY : RG +USE OYOERAD , ONLY : NTSW ,LONEWSW +USE OYOESW , ONLY : APAD ,BPAD ,RRAY ,RSUN ,& &RPDH1 ,RPDU1 ,RPNH ,RPNU ,RSWCE ,& &RSWCP ,RTDH2O ,RTDUMG ,RTH2O ,RTUMG ,& &D ,RROMA ,RROMB ,RRASY ,RHSRA ,& diff --git a/src/LIB/RAD/ECMWF_RAD/sw.f90 b/src/LIB/RAD/ECMWF_RAD/sw.f90 index ed4a5cc04a50328dec584bff6887f791b89d35dc..6b82f33f46aed135eb7c53cc2b53b1eee5d4d430 100644 --- a/src/LIB/RAD/ECMWF_RAD/sw.f90 +++ b/src/LIB/RAD/ECMWF_RAD/sw.f90 @@ -66,10 +66,10 @@ SUBROUTINE SW & #include "tsmbkind.h" -USE YOERAD , ONLY : NSW +USE OYOERAD , ONLY : NSW USE YOERDU , ONLY : RCDAY !++MODIF_MESONH -USE YOERAD , ONLY : NOVLP +USE OYOERAD , ONLY : NOVLP !--MODIF_MESONH USE MODI_SWU USE MODI_SW1S @@ -242,6 +242,12 @@ DO JK = 1 , KLEV+1 ENDDO ENDDO +! PRINT*,"sw PDIFFS,PDIRFS" +! +! PRINT*,PDIFFS +! +! PRINT*,PDIRFS + DO JNU = INUIR , NSW !++MODIF_MESONH @@ -256,8 +262,14 @@ DO JNU = INUIR , NSW &, PTAUREL_DST(:,:,JNU) & &) !--MODIF_MESONH + + DO JL=KIDIA,KFDIA +! PRINT*,JL,JNU +! PRINT*,"SW" +! PRINT*,ZDIFF2(JL,1) + PDIFFS(JL,JNU)=ZDIFF2(JL,1)*ZFACT(JL) PDIRFS(JL,JNU)=ZDIRF2(JL,1)*ZFACT(JL) ENDDO @@ -273,6 +285,14 @@ DO JNU = INUIR , NSW ZSUDU2T(JL)=ZSUDU2T(JL)+ZSUDU2(JL) ENDDO ENDDO +! +! PRINT*,"sw PDIFFS,PDIRFS" +! +! PRINT*,PDIFFS +! +! PRINT*,PDIRFS +! +! pause ! ------------------------------------------------------------------ diff --git a/src/LIB/RAD/ECMWF_RAD/sw1s.f90 b/src/LIB/RAD/ECMWF_RAD/sw1s.f90 index 77e1e50b58f07133c19d96c660b7b24bab1b390c..70061980643f6f00e3f51a10a125ab4b151a1c4a 100644 --- a/src/LIB/RAD/ECMWF_RAD/sw1s.f90 +++ b/src/LIB/RAD/ECMWF_RAD/sw1s.f90 @@ -66,9 +66,9 @@ SUBROUTINE SW1S & #include "tsmbkind.h" -USE YOESW , ONLY : RRAY ,RSUN +USE OYOESW , ONLY : RRAY ,RSUN !++MODIF_MESONH -USE YOERAD , ONLY : NSW , NOVLP +USE OYOERAD , ONLY : NSW , NOVLP !--MODIF_MESONH USE MODI_SWCLR USE MODI_SWR @@ -84,7 +84,7 @@ INTEGER_M :: KFDIA INTEGER_M :: KIDIA INTEGER_M :: KLEV INTEGER_M :: KLON -INTEGER_M :: KNU ! index of wl +INTEGER_M :: KNU @@ -102,9 +102,9 @@ REAL_B :: PAER(KLON,6,KLEV)& &, PRMU(KLON) , PSEC(KLON)& &, PTAU(KLON,NSW,KLEV) , PUD(KLON,5,KLEV+1) -REAL_B :: PFD(KLON,KLEV+1) , PFU(KLON,KLEV+1)& ! Fluxes down and up - &, PCD(KLON,KLEV+1) , PCU(KLON,KLEV+1)& ! Fluxes clear down and up - &, PSUDU1(KLON) , PDIFF(KLON,KLEV)& +REAL_B :: PFD(KLON,KLEV+1) , PFU(KLON,KLEV+1)& + &, PCD(KLON,KLEV+1) , PCU(KLON,KLEV+1)& + &, PSUDU1(KLON) , PDIFF(KLON,KLEV)& &, PDIRF(KLON,KLEV) !++MODIF_MESONH @@ -136,12 +136,10 @@ REAL_B :: ZCGAZ(KLON,KLEV)& &, ZTRA1(KLON,KLEV+1), ZTRA2(KLON,KLEV+1)& &, ZTRCLD(KLON) , ZTRCLR(KLON)& &, ZW6(KLON,6) , ZW4(KLON,4), ZO(KLON,2) ,ZT(KLON,2) - + REAL_B :: ZTA1(KLON), ZTO1(KLON) -REAL_B :: ZCLDIR +REAL_B :: ZCLDIR - - ! LOCAL INTEGER SCALARS INTEGER_M :: IKL, IKM1, JAJ, JK, JL @@ -157,18 +155,12 @@ INTEGER_M :: IKL, IKM1, JAJ, JK, JL !* 1.1 OPTICAL THICKNESS FOR RAYLEIGH SCATTERING ! ----------------------------------------- -! PRINT *,"PCLEAR ",PCLEAR -! PAUSE - -! Rayleigh optical depth (Deschamps 1983) DO JL = KIDIA,KFDIA ZRAYL(JL) = RRAY(KNU,1) + PRMU(JL) * (RRAY(KNU,2) + PRMU(JL)& &* (RRAY(KNU,3) + PRMU(JL) * (RRAY(KNU,4) + PRMU(JL)& &* (RRAY(KNU,5) + PRMU(JL) * RRAY(KNU,6) )))) ENDDO -! PRINT *,"SW1S.F90 ZRAYL ", ZRAYL(1) -! PRINT *,"YEAH" ! ------------------------------------------------------------------ @@ -188,28 +180,17 @@ ENDDO &, ODUST , PPIZA_DST,PCGA_DST & &, PTAUREL_DST ) !--MODIF_MESONH -! ZRJ0 and ZRK0 are downard and upward fluxes - -! PRINT *,"SW1S.F90 ZTAUAZ ",ZTAUAZ(1,1),ZTAUAZ(1,2) !* 2.2 CLOUDY FRACTION OF THE COLUMN ! ----------------------------- -! PTAU is cloud optical depth -! PAER is aerosol optical depth -! ZRAYL is rayleigh optical depth -! NB : cloudy columns are further splitted into cloudy and clear portions + CALL SWR & &( KIDIA ,KFDIA ,KLON ,KLEV , KNU & &, PALBD ,PCG ,PCLD ,POMEGA, PSEC , PTAU & &, ZCGAZ ,ZPIZAZ,ZRAY1 ,ZRAY2 , ZREFZ, ZRJ ,ZRK , ZRMUE & &, ZTAUAZ,ZTRA1 ,ZTRA2 ,ZTRCLD & &) -! PRINT *,"SW1S.F90 ZTAUAZ ",ZTAUAZ(1,1) -! PRINT *,"ZRJ ",ZRJ(1,3,5),ZRK(1,3,5) -! PRINT *,"ZRMU0 ",ZRMU0(1,1) -! -! PRINT*,"ZTRCLD ZTRCLR ",ZTRCLD(:5),ZTRCLR(:5) ! ------------------------------------------------------------------ @@ -272,16 +253,13 @@ IF (NSW <= 4) THEN PCD(JL,IKL) = ZDIRF(JL) * RSUN(KNU) ENDDO ENDDO - - + DO JL=KIDIA,KFDIA - ZDIFT(JL) = ZR6(JL,1)*ZR6(JL,2)*ZR6(JL,3)*ZTRCLD(JL) ! t for true ? - ZDIRT(JL) = ZR6(JL,4)*ZR6(JL,5)*ZR6(JL,6)*ZTRCLR(JL) - PSUDU1(JL) = ((_ONE_-PCLEAR(JL)) * ZDIFT(JL)& ! quantity not used by ECMWF_VERSION_2 + ZDIFT(JL) = ZR6(JL,1)*ZR6(JL,2)*ZR6(JL,3)*ZTRCLD(JL) + ZDIRT(JL) = ZR6(JL,4)*ZR6(JL,5)*ZR6(JL,6)*ZTRCLR(JL) + PSUDU1(JL) = ((_ONE_-PCLEAR(JL)) * ZDIFT(JL)& &+PCLEAR(JL) * ZDIRT(JL)) * RSUN(KNU) ENDDO - - !* 3.1.2 UPWARD FLUXES @@ -405,20 +383,9 @@ ELSE IF (NSW == 6) THEN PDIFF(JL,IKL) = PFD(JL,IKL) - PDIRF(JL,IKL) ! Quentin -! PRINT *,"IKL",IKL -! PRINT *,"SW1.f90 PDIFF ",PDIFF(:5,1) -! PRINT *,"SW1.f90 PDIRF ",PDIRF(:5,1) ENDDO - ENDDO -! PRINT *,"SW1.f90 PDIFF ",PDIFF(:5,1) -! PRINT *,"SW1.f90 PDIRF ",PDIRF(:5,1) -! PRINT *,"SW1.f90 ZDIFF ",ZDIFF(1) -! PRINT *,"SW1.f90 ZDIRF ",ZDIRF(1) -! PRINT *,"SW1.f90 RSUN ",RSUN(KNU) -! PRINT *,"SW1.f90 PCLEAR ",PCLEAR(1) -! PRINT *,"SW1.f90 SIZE(PDIFF,1) ",SIZE(PDIFF,1),SIZE(PDIFF,2) - + DO JL=KIDIA,KFDIA ZDIFT(JL) = ZR4(JL,1)*ZR4(JL,2)*ZT(JL,1)*ZTRCLD(JL) ! true components with corrected cloudiness ZDIRT(JL) = ZR4(JL,3)*ZR4(JL,4)*ZT(JL,2)*ZTRCLR(JL) @@ -426,7 +393,6 @@ ELSE IF (NSW == 6) THEN &+PCLEAR(JL) * ZDIRT(JL)) * RSUN(KNU) ENDDO - !* 3.2.2 UPWARD FLUXES ! ------------- diff --git a/src/LIB/RAD/ECMWF_RAD/sw2s.f90 b/src/LIB/RAD/ECMWF_RAD/sw2s.f90 index 308244e5a694105a69d8a674293f68c1e7504b77..e3297996ddb7e1e0105c26934578174c7a575c6b 100644 --- a/src/LIB/RAD/ECMWF_RAD/sw2s.f90 +++ b/src/LIB/RAD/ECMWF_RAD/sw2s.f90 @@ -67,7 +67,7 @@ SUBROUTINE SW2S ( KIDIA, KFDIA, KLON , KLEV , KAER, KNU & #include "tsmbkind.h" -USE YOESW , ONLY : RRAY ,RSUN +USE OYOESW , ONLY : RRAY ,RSUN USE YOERDU , ONLY : REPLOG diff --git a/src/LIB/RAD/ECMWF_RAD/swclr.f90 b/src/LIB/RAD/ECMWF_RAD/swclr.f90 index c9c801de301734a1be9a30208d12125bddd7b5d7..ea7146f33af8ab11ec28fc9f4215c709b06546e6 100644 --- a/src/LIB/RAD/ECMWF_RAD/swclr.f90 +++ b/src/LIB/RAD/ECMWF_RAD/swclr.f90 @@ -60,9 +60,9 @@ SUBROUTINE SWCLR & #include "tsmbkind.h" -USE YOESW , ONLY : RTAUA ,RPIZA ,RCGA -USE YOERAD , ONLY : NOVLP ,NSW -USE YOERDI , ONLY : REPCLC +USE OYOESW , ONLY : RTAUA ,RPIZA ,RCGA +USE OYOERAD , ONLY : NOVLP ,NSW +USE OYOERDI , ONLY : REPCLC USE YOERDU , ONLY : REPSCT @@ -226,14 +226,14 @@ DO JK = 1 , KLEV DO JL = KIDIA,KFDIA IF (KAER /= 0) THEN ZTRAY = PRAYL(JL) * PDSIG(JL,JK) - ZRATIO =PPIZAZ(JL,JK)+ZTRAY + ZRATIO =PPIZAZ(JL,JK)+ZTRAY ! wi*ti+1*tr !Ponderation G**2 ZFACOA_NEW(JL,JK)= ZFACOA_NEW(JL,JK)/ZRATIO !Ponderation w PPIZAZ(JL,JK)=ZRATIO/(PTAUAZ(JL,JK)+ZTRAY) !Ponderation g PCGAZ(JL,JK)=PCGAZ(JL,JK)/ZRATIO - !Ponderation+delta-modified parameters tau + !Ponderation+delta-modified parameters tau - applies delta-Eddington to the complete phase function PTAUAZ(JL,JK)=(ZTRAY+PTAUAZ(JL,JK))*& (_ONE_-PPIZAZ(JL,JK)*ZFACOA_NEW(JL,JK)) !delta-modified parameters w diff --git a/src/LIB/RAD/ECMWF_RAD/swde.f90 b/src/LIB/RAD/ECMWF_RAD/swde.f90 index 07975c9f9e22328fa899a66f4147337465adf664..ec77caa4ea728a9ee46aa7b8ab4d354b87b7df96 100644 --- a/src/LIB/RAD/ECMWF_RAD/swde.f90 +++ b/src/LIB/RAD/ECMWF_RAD/swde.f90 @@ -72,7 +72,7 @@ SUBROUTINE SWDE & #include "tsmbkind.h" -USE YOERAD , ONLY : NOVLP +USE OYOERAD , ONLY : NOVLP IMPLICIT NONE diff --git a/src/LIB/RAD/ECMWF_RAD/swni.f90 b/src/LIB/RAD/ECMWF_RAD/swni.f90 index e91319144adb6f9496e5751fa43513eae61d66ab..138967d0a2820661aaf4949de30abf6d116e634a 100644 --- a/src/LIB/RAD/ECMWF_RAD/swni.f90 +++ b/src/LIB/RAD/ECMWF_RAD/swni.f90 @@ -68,9 +68,9 @@ SUBROUTINE SWNI & #include "tsmbkind.h" -USE YOERAD , ONLY : NOVLP -USE YOESW , ONLY : RRAY ,RSUN ,RSWCE ,RSWCP -USE YOERAD , ONLY : NSW +USE OYOERAD , ONLY : NOVLP +USE OYOESW , ONLY : RRAY ,RSUN ,RSWCE ,RSWCP +USE OYOERAD , ONLY : NSW USE YOERDU , ONLY : REPLOG ! USE MODI_SWCLR @@ -113,11 +113,11 @@ REAL_B :: PFDOWN(KLON,KLEV+1) , PFUP(KLON,KLEV+1)& &, PCDOWN(KLON,KLEV+1) , PCUP(KLON,KLEV+1)& &, PSUDU2(KLON) , PDIFF(KLON,KLEV)& &, PDIRF(KLON,KLEV) - + !Quentin REAL_B :: ZCLDIR -REAL_B :: ZTA1(KLON) - +REAL_B :: ZTA1(KLON) + !++MODIF_MESONH LOGICAL :: ODUST ! flag for DUST REAL_B :: PPIZA_DST(KLON,KLEV) !wvl ssa dust for current wavelength @@ -579,7 +579,12 @@ DO JK = 1 , KLEV ! PDIRF(JL,IKL)=ZFD(JL,IKL)*RSUN(KNU)* PCLEAR(JL) ENDDO ENDDO - +! +! PRINT*,"SWNI,PDIFF,PDIRF" +! print*, KLEV,shape(PDIRF),shape(PFDOWN) +! PRINT*,PDIRF(1,:)-PFDOWN(1,1:KLEV) +! PRINT*,PDIFF(:,1) +! PRINT*,PDIRF(:,1) !* 6.2 UPWARD FLUXES ! ------------- diff --git a/src/LIB/RAD/ECMWF_RAD/swr.f90 b/src/LIB/RAD/ECMWF_RAD/swr.f90 index 5e0e33438f91d784880af47797f0020a131ed418..714e971c87dc3739c8dd81b6527e5e11582dee73 100644 --- a/src/LIB/RAD/ECMWF_RAD/swr.f90 +++ b/src/LIB/RAD/ECMWF_RAD/swr.f90 @@ -56,7 +56,7 @@ SUBROUTINE SWR & #include "tsmbkind.h" -USE YOERAD , ONLY : NOVLP ,NSW +USE OYOERAD , ONLY : NOVLP ,NSW USE YOECLD , ONLY : REPSEC USE YOEOVLP , ONLY : RA1OVLP ! diff --git a/src/LIB/RAD/ECMWF_RAD/swtt.f90 b/src/LIB/RAD/ECMWF_RAD/swtt.f90 index ea784bbe29b9dca34a64e7991aa407134d296a6f..df34a9870d17910865f40050c910a70dc6dd6bf0 100644 --- a/src/LIB/RAD/ECMWF_RAD/swtt.f90 +++ b/src/LIB/RAD/ECMWF_RAD/swtt.f90 @@ -59,7 +59,7 @@ SUBROUTINE SWTT ( KIDIA, KFDIA, KLON, KNU, KA , PU, PTR) #include "tsmbkind.h" -USE YOESW , ONLY : APAD ,BPAD ,D +USE OYOESW , ONLY : APAD ,BPAD ,D IMPLICIT NONE diff --git a/src/LIB/RAD/ECMWF_RAD/swtt1.f90 b/src/LIB/RAD/ECMWF_RAD/swtt1.f90 index 3151cfb1c9b650db1220dd941a93e11ce7bb6b0b..a3d7433e4059d68ab0d81ca22809a8cc24504f97 100644 --- a/src/LIB/RAD/ECMWF_RAD/swtt1.f90 +++ b/src/LIB/RAD/ECMWF_RAD/swtt1.f90 @@ -60,7 +60,7 @@ SUBROUTINE SWTT1 ( KIDIA,KFDIA,KLON,KNU,KABS,KIND, PU, PTR ) #include "tsmbkind.h" -USE YOESW , ONLY : APAD ,BPAD ,D +USE OYOESW , ONLY : APAD ,BPAD ,D IMPLICIT NONE diff --git a/src/LIB/RAD/ECMWF_RAD/swu.f90 b/src/LIB/RAD/ECMWF_RAD/swu.f90 index e23b436aba247826fa6a4d943f78e8eda9565c77..15c8123fc878783d22adcdd78a30048a7564d636 100644 --- a/src/LIB/RAD/ECMWF_RAD/swu.f90 +++ b/src/LIB/RAD/ECMWF_RAD/swu.f90 @@ -54,9 +54,9 @@ SUBROUTINE SWU & #include "tsmbkind.h" USE YOECLD , ONLY : REPSEC -USE YOERAD , ONLY : NOVLP ,NSW +USE OYOERAD , ONLY : NOVLP ,NSW USE YOERDU , ONLY : REPSCQ -USE YOESW , ONLY : RPDH1 ,RPDU1 ,RPNH ,RPNU ,& +USE OYOESW , ONLY : RPDH1 ,RPDU1 ,RPNH ,RPNU ,& &RTDH2O ,RTDUMG ,RTH2O ,RTUMG USE YOEOVLP , ONLY : RA1OVLP ! diff --git a/src/LIB/RAD/ECMWF_RAD/swuvo3.f90 b/src/LIB/RAD/ECMWF_RAD/swuvo3.f90 index dcbb077e3f8fa9f4edfaa7f5a80b620b78e60ad8..172f7378611fcb9b13e1d1d75eeb23145a831196 100644 --- a/src/LIB/RAD/ECMWF_RAD/swuvo3.f90 +++ b/src/LIB/RAD/ECMWF_RAD/swuvo3.f90 @@ -60,7 +60,7 @@ SUBROUTINE SWUVO3 & #include "tsmbkind.h" -USE YOESW , ONLY : NEXPO3, REXPO3 +USE OYOESW , ONLY : NEXPO3, REXPO3 IMPLICIT NONE diff --git a/src/LIB/RAD/ECMWF_RAD/yoerrtam.f90 b/src/LIB/RAD/ECMWF_RAD/yoerrtam.f90 index bc6b16a63d32f090e7390cccb2406bd40bae3e62..201c90e98ed8e9f92c551b732056d0b5253c840c 100644 --- a/src/LIB/RAD/ECMWF_RAD/yoerrtam.f90 +++ b/src/LIB/RAD/ECMWF_RAD/yoerrtam.f90 @@ -8,7 +8,7 @@ MODULE YOERRTAM #include "tsmbkind.h" -USE PARRRTM +USE OPARRRTM IMPLICIT NONE diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/cloud_overlap_decorr_len.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/cloud_overlap_decorr_len.F90 new file mode 100644 index 0000000000000000000000000000000000000000..a0c35ec7763081afce3ccaaa91ade2576f2f8193 --- /dev/null +++ b/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/cloud_overlap_decorr_len.F90 @@ -0,0 +1,140 @@ +! ################################# + MODULE MODI_CLOUD_OVERLAP_DECORR_LEN +! ################################# +INTERFACE + +SUBROUTINE CLOUD_OVERLAP_DECORR_LEN & + & (KIDIA, KFDIA, KLON, PGEMU, NDECOLAT, & + & PDECORR_LEN_EDGES_KM, PDECORR_LEN_WATER_KM, PDECORR_LEN_RATIO) + +USE PARKIND1 , ONLY : JPIM, JPRB + +INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA ! Start column to process +INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA ! End column to process +INTEGER(KIND=JPIM),INTENT(IN) :: KLON ! Number of columns +REAL(KIND=JPRB), INTENT(IN) :: PGEMU(KLON) ! Sine of latitude +INTEGER(KIND=JPIM),INTENT(IN) :: NDECOLAT +REAL(KIND=JPRB), INTENT(OUT) :: PDECORR_LEN_EDGES_KM(KLON) +REAL(KIND=JPRB), INTENT(OUT), OPTIONAL :: PDECORR_LEN_WATER_KM(KLON) +REAL(KIND=JPRB), INTENT(OUT), OPTIONAL :: PDECORR_LEN_RATIO + +END SUBROUTINE CLOUD_OVERLAP_DECORR_LEN +END INTERFACE +END MODULE MODI_CLOUD_OVERLAP_DECORR_LEN + +SUBROUTINE CLOUD_OVERLAP_DECORR_LEN & + & (KIDIA, KFDIA, KLON, PGEMU, NDECOLAT, & + & PDECORR_LEN_EDGES_KM, PDECORR_LEN_WATER_KM, PDECORR_LEN_RATIO) + +! CLOUD_OVERLAP_DECORR_LEN +! +! PURPOSE +! ------- +! Calculate the cloud overlap decorrelation length as a function of +! latitude for use in the radiation scheme +! +! INTERFACE +! --------- +! CLOUD_OVERLAP_DECORR_LEN is called from RADLSWR and RADIATION_SCHEME +! +! AUTHOR +! ------ +! Robin Hogan, ECMWF (using code extracted from radlswr.F90) +! Original: 2016-02-16 +! +! MODIFICATIONS +! ------------- +! +! ------------------------------------------------------------------- + +USE PARKIND1 , ONLY : JPIM, JPRB +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMCST , ONLY : RPI +USE MODD_PARAM_ECRAD_N , ONLY : XDECORR_CF,XDECORR_CW + +! ------------------------------------------------------------------- + +IMPLICIT NONE + +! INPUT ARGUMENTS + +! *** Array dimensions and ranges +INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA ! Start column to process +INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA ! End column to process +INTEGER(KIND=JPIM),INTENT(IN) :: KLON ! Number of columns + +! *** Single-level variables +REAL(KIND=JPRB), INTENT(IN) :: PGEMU(KLON) ! Sine of latitude + +! *** Configuration variable controlling the overlap scheme +INTEGER(KIND=JPIM),INTENT(IN) :: NDECOLAT + +! OUTPUT ARGUMENTS + +! *** Decorrelation lengths for cloud edges and cloud water content, +! *** in km +REAL(KIND=JPRB), INTENT(OUT) :: PDECORR_LEN_EDGES_KM(KLON) +REAL(KIND=JPRB), INTENT(OUT), OPTIONAL :: PDECORR_LEN_WATER_KM(KLON) + +! Ratio of water-content to cloud-edge decorrelation lengths +REAL(KIND=JPRB), INTENT(OUT), OPTIONAL :: PDECORR_LEN_RATIO + +! LOCAL VARIABLES + +REAL(KIND=JPRB) :: ZRADIANS_TO_DEGREES, ZABS_LAT_DEG, ZCOS_LAT + +INTEGER(KIND=JPIM) :: JL + +REAL(KIND=JPRB) :: ZHOOK_HANDLE + +! ------------------------------------------------------------------- + +IF (LHOOK) CALL DR_HOOK('CLOUD_OVERLAP_DECORR_LEN',0,ZHOOK_HANDLE) + +! ------------------------------------------------------------------- +IF (NDECOLAT == 0) THEN + + ! Decorrelation lengths are constant values + PDECORR_LEN_EDGES_KM(KIDIA:KFDIA) = XDECORR_CF + IF (PRESENT(PDECORR_LEN_WATER_KM)) THEN + PDECORR_LEN_WATER_KM(KIDIA:KFDIA) = XDECORR_CW + ENDIF + IF (PRESENT(PDECORR_LEN_RATIO)) THEN + PDECORR_LEN_RATIO = XDECORR_CW / XDECORR_CF + ENDIF + +ELSE + + ZRADIANS_TO_DEGREES = 180.0_JPRB / RPI + + IF (NDECOLAT == 1) THEN + ! Shonk et al. (2010) Eq. 13 formula + DO JL = KIDIA,KFDIA + ZABS_LAT_DEG = ABS(ASIN(PGEMU(JL)) * ZRADIANS_TO_DEGREES) + PDECORR_LEN_EDGES_KM(JL) = 2.899_JPRB - 0.02759_JPRB * ZABS_LAT_DEG + ENDDO + ELSE ! NDECOLAT == 2 + DO JL = KIDIA,KFDIA + ! Shonk et al. (2010) but smoothed over the equator + ZCOS_LAT = COS(ASIN(PGEMU(JL))) + PDECORR_LEN_EDGES_KM(JL) = 0.75_JPRB + 2.149_JPRB * ZCOS_LAT*ZCOS_LAT + ENDDO + ENDIF + + ! Both NDECOLAT = 1 and 2 assume that the decorrelation length for + ! cloud water content is half that for cloud edges + IF (PRESENT(PDECORR_LEN_WATER_KM)) THEN + PDECORR_LEN_WATER_KM(KIDIA:KFDIA) = PDECORR_LEN_EDGES_KM(KIDIA:KFDIA) * 0.5_JPRB + ENDIF + + IF (PRESENT(PDECORR_LEN_RATIO)) THEN + PDECORR_LEN_RATIO = 0.5_JPRB + ENDIF + +ENDIF + +! ------------------------------------------------------------------- + +IF (LHOOK) CALL DR_HOOK('CLOUD_OVERLAP_DECORR_LEN',1,ZHOOK_HANDLE) + +END SUBROUTINE CLOUD_OVERLAP_DECORR_LEN diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/cos_sza.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/cos_sza.F90 new file mode 100644 index 0000000000000000000000000000000000000000..f02aeb1dc0d8b66f526824678b7bcea1428cb5f0 --- /dev/null +++ b/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/cos_sza.F90 @@ -0,0 +1,345 @@ +SUBROUTINE COS_SZA(KSTART,KEND,KCOL,PGEMU,PGELAM,LDRADIATIONTIMESTEP,PMU0) + +!**** *COS_SZA* + +! Purpose. +! -------- +! Compute the cosine of the solar zenith angle. Note that this +! is needed for three different things: (1) as input to the +! radiation scheme in which it is used to compute the path +! length of the direct solar beam through the atmosphere, (2) +! every timestep to scale the solar fluxes by the incoming +! solar radiation at top-of-atmosphere, and (3) to compute the +! albedo of the ocean. For (1) we ideally want an average +! value for the duration of a radiation timestep while for (2) +! we want an average value for the duration of a model +! timestep. + +!** Interface. +! ---------- +! *CALL* *COS_SZA(...) + +! Explicit arguments : +! ------------------ +! PGEMU - Sine of latitude +! PGELAM - Geographic longitude in radians +! LDRadiationTimestep - Is this for a radiation timestep? +! PMU0 - Output cosine of solar zenith angle + +! Implicit arguments : +! -------------------- +! YRRIP%RWSOVR, RWSOVRM - Solar time for model/radiation timesteps +! RCODECM, RSIDECM - Sine/cosine of solar declination +! YRERAD%LAverageSZA - Average solar zenith angle in time interval? +! YRRIP%TSTEP - Model timestep in seconds +! YRERAD%NRADFR - Radiation frequency in timesteps + +! Method. +! ------- +! Compute cosine of the solar zenith angle, mu0, from lat, lon +! and solar time using standard formula. If +! YRERAD%LAverageSZA=FALSE then this is done at a single time, +! which is assumed to be the mid-point of either the model or +! the radiation timestep. If YRERAD%LAverageSZA=TRUE then we +! compute the average over the model timestep exactly by first +! computing sunrise/sunset times. For radiation timesteps, mu0 +! is to be used to compute the path length of the direct solar +! beam through the atmosphere, and the fluxes are subsequently +! weighted by mu0. Therefore night-time values are not used, +! so we average mu0 only when the sun is above the horizon. + +! Externals. +! ---------- + +! Reference. +! ---------- +! ECMWF Research Department documentation of the IFS +! +! See also: Zhou, L., M. Zhang, Q. Bao, and Y. Liu (2015), On +! the incident solar radiation in CMIP5 +! models. Geophys. Res. Lett., 42, 1930–1935. doi: +! 10.1002/2015GL063239. + +! Author. +! ------- +! Robin Hogan, ECMWF, May 2015 + +! Modifications: +! -------------- + +USE PARKIND1 , ONLY : JPIM, JPRB +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMCST , ONLY : RPI, RDAY +! USE YOMRIP , ONLY : YRRIP +USE MODD_RADIATIONS_N , ONLY : XCOSDEL, XSINDEL, XZENITH ! no difference between yoerip and yomrip here +! USE YOERIP , ONLY : YRERIP +USE MODD_PARAM_ECRAD_N , ONLY : NRADFR, LCENTREDTIMESZA, LAVERAGESZA +USE YOMLUN , ONLY : NULOUT + +USE MODD_PARAM_RAD_n, ONLY : XDTRAD +USE MODD_RADIATIONS_n, ONLY : XSINDEL, XCOSDEL, XTSIDER +USE MODD_TIME_n, ONLY : TDTRAD_FULL +USE MODD_DYN_n, ONLY : XTSTEP + +! ------------------------------------------------------------------ + +IMPLICIT NONE + +INTEGER(KIND=JPIM),INTENT(IN) :: KSTART ! Start column to process +INTEGER(KIND=JPIM),INTENT(IN) :: KEND ! Last column to process +INTEGER(KIND=JPIM),INTENT(IN) :: KCOL ! Number of columns in arrays +REAL(KIND=JPRB), INTENT(IN) :: PGEMU(KCOL) ! Sine of latitude +REAL(KIND=JPRB), INTENT(IN) :: PGELAM(KCOL)! Longitude in radians +LOGICAL, INTENT(IN) :: LDRADIATIONTIMESTEP ! Is this for a radiation timestep? +REAL(KIND=JPRB), INTENT(OUT) :: PMU0(KCOL) ! Cosine of solar zenith angle + +! Solar time at the start and end of the time interval +REAL(KIND=JPRB) :: ZSOLARTIMESTART, ZSOLARTIMEEND + +! The time of half a model/radiation timestep, in radians +REAL(KIND=JPRB) :: ZHALFTIMESTEP + +! For efficiency we precompute sin(solar declination)*sin(latitude) +REAL(KIND=JPRB) :: ZSINDECSINLAT(KSTART:KEND) +!...and cos(solar declination)*cos(latitude) +REAL(KIND=JPRB) :: ZCOSDECCOSLAT(KSTART:KEND) +! ...and cosine of latitude +REAL(KIND=JPRB) :: ZCOSLAT(KSTART:KEND) + +! Tangent of solar declination +REAL(KIND=JPRB) :: ZTANDEC + +! Hour angles (=local solar time in radians plus pi) +REAL(KIND=JPRB) :: ZHOURANGLESTART, ZHOURANGLEEND +REAL(KIND=JPRB) :: ZHOURANGLESUNSET, ZCOSHOURANGLESUNSET + +INTEGER(KIND=JPIM) :: JCOL ! Column index + +REAL(KIND=JPRB) :: ZHOOK_HANDLE + +REAL(KIND=JPRB) :: ZTIME,ZUT +REAL(KIND=JPRB) :: ZTUT,ZSOLANG + +! ------------------------------------------------------------------ +IF (LHOOK) CALL DR_HOOK('COS_SZA',0,ZHOOK_HANDLE) + +! An average solar zenith angle can only be computed if the solar time +! is centred on the time interval +IF (LAVERAGESZA .AND. .NOT. LCENTREDTIMESZA) THEN + WRITE(NULOUT,*) 'ERROR IN COS_SZA: LAverageSZA=TRUE but LCentredTimeSZA=FALSE' + CALL ABOR1('COS_SZA: ABOR1 CALLED') +ENDIF + +DO JCOL = KSTART,KEND + ZCOSLAT(JCOL) = SQRT(1.0_JPRB - PGEMU(JCOL)**2) +ENDDO + +! Computation of solar hour angle from sunposn +ZTIME = TDTRAD_FULL%TIME + 0.5*XDTRAD +ZUT = MOD( 24.0+MOD(ZTIME/3600.,24.0),24.0 ) +ZTUT = ZUT - XTSIDER +ZSOLANG = (ZTUT-12.0)*15.0*(RPI/180.) ! hour angle in radians + +IF (LDRADIATIONTIMESTEP) THEN + ! Compute the effective cosine of solar zenith angle for a radiation + ! timestep + + ! Precompute quantities that may be used more than once + DO JCOL = KSTART,KEND + ZSINDECSINLAT(JCOL) = XSINDEL * PGEMU(JCOL) ! this is the current declination, not that of radiation (averaged over time step) + ZCOSDECCOSLAT(JCOL) = XCOSDEL * ZCOSLAT(JCOL) + ENDDO + + IF (.NOT. LAVERAGESZA) THEN + ! Original method: compute the value at the centre of the + ! radiation timestep (assuming that LCentredTimeSZA=TRUE - see + ! updtim.F90) + DO JCOL = KSTART,KEND + ! It would be more efficient to do it like this... + ! PMU0(JCOL)=MAX(0.0_JPRB, ZSinDecSinLat(JCOL) & + ! & - ZCosDecCosLat(JCOL) * COS(YRERIP%RWSOVRM + PGELAM(JCOL))) + ! ...but for bit reproducibility with previous cycle we do it + ! like this: + PMU0(JCOL) = MAX(0.0_JPRB, ZSINDECSINLAT(JCOL) & + & - XCOSDEL*COS(ZSOLANG)*ZCOSLAT(JCOL)*COS(PGELAM(JCOL)) & + & + XCOSDEL*SIN(ZSOLANG)*ZCOSLAT(JCOL)*SIN(PGELAM(JCOL))) + ENDDO + + ELSE + ! Compute the average MU0 for the period of the radiation + ! timestep, excluding times when the sun is below the horizon + + ! First compute the sine and cosine of the times of the start and + ! end of the radiation timestep + ZHALFTIMESTEP = XTSTEP * REAL(NRADFR) * RPI / RDAY + ZSOLARTIMESTART = ZSOLANG - ZHALFTIMESTEP + ZSOLARTIMEEND = ZSOLANG + ZHALFTIMESTEP + + ! Compute tangent of solar declination, with check in case someone + ! simulates a planet completely tipped over + ZTANDEC = XSINDEL / MAX(XCOSDEL, 1.0E-12) + + DO JCOL = KSTART,KEND + ! Sunrise equation: cos(hour angle at sunset) = + ! -tan(declination)*tan(latitude) + ZCOSHOURANGLESUNSET = -ZTANDEC * PGEMU(JCOL) & + & / MAX(ZCOSLAT(JCOL), 1.0E-12) + IF (ZCOSHOURANGLESUNSET > 1.0) THEN + ! Perpetual darkness + PMU0(JCOL) = 0.0_JPRB + ELSE + ! Compute hour angle at start and end of time interval, + ! ensuring that the hour angle of the centre of the time + ! window is in the range -PI to +PI (equivalent to ensuring + ! that local solar time = solar time + longitude is in the + ! range 0 to 2PI) + IF (ZSOLANG + PGELAM(JCOL) < 2.0_JPRB*RPI) THEN + ZHOURANGLESTART = ZSOLARTIMESTART + PGELAM(JCOL) - RPI + ZHOURANGLEEND = ZSOLARTIMEEND + PGELAM(JCOL) - RPI + ELSE + ZHOURANGLESTART = ZSOLARTIMESTART + PGELAM(JCOL) - 3.0_JPRB*RPI + ZHOURANGLEEND = ZSOLARTIMEEND + PGELAM(JCOL) - 3.0_JPRB*RPI + ENDIF + + IF (ZCOSHOURANGLESUNSET >= -1.0) THEN + ! Not perpetual daylight or perpetual darkness, so we need + ! to check for sunrise or sunset lying within the time + ! interval + ZHOURANGLESUNSET = ACOS(ZCOSHOURANGLESUNSET) + IF (ZHOURANGLEEND <= -ZHOURANGLESUNSET & + & .OR. ZHOURANGLESTART >= ZHOURANGLESUNSET) THEN + ! The time interval is either completely before sunrise or + ! completely after sunset + PMU0(JCOL) = 0.0_JPRB + CYCLE + ENDIF + + ! Bound the start and end hour angles by sunrise and sunset + ZHOURANGLESTART = MAX(-ZHOURANGLESUNSET, & + & MIN(ZHOURANGLESTART, ZHOURANGLESUNSET)) + ZHOURANGLEEND = MAX(-ZHOURANGLESUNSET, & + & MIN(ZHOURANGLEEND, ZHOURANGLESUNSET)) + ENDIF + + IF (ZHOURANGLEEND - ZHOURANGLESTART > 1.0E-8) THEN + ! Compute average MU0 in the interval ZHourAngleStart to + ! ZHourAngleEnd + PMU0(JCOL) = ZSINDECSINLAT(JCOL) & + & + (ZCOSDECCOSLAT(JCOL) & + & * (SIN(ZHOURANGLEEND) - SIN(ZHOURANGLESTART))) & + & / (ZHOURANGLEEND - ZHOURANGLESTART) + + ! Just in case... + IF (PMU0(JCOL) < 0.0_JPRB) THEN + PMU0(JCOL) = 0.0_JPRB + ENDIF + ELSE + ! Too close to sunrise/sunset for a reliable calculation + PMU0(JCOL) = 0.0_JPRB + ENDIF + + ENDIF + ENDDO + ENDIF + +ELSE + ! Compute the cosine of solar zenith angle for a model timestep + + ! Precompute quantities that may be used more than once + DO JCOL = KSTART,KEND + ZSINDECSINLAT(JCOL) = XSINDEL * PGEMU(JCOL) + ZCOSDECCOSLAT(JCOL) = XCOSDEL * ZCOSLAT(JCOL) + ENDDO + + IF (.NOT. LAVERAGESZA) THEN + ! Original method: compute the value at the centre of the + ! model timestep + DO JCOL = KSTART,KEND + ! It would be more efficient to do it like this... + ! PMU0(JCOL) = MAX(0.0_JPRB, ZSinDecSinLat(JCOL) & + ! & - ZCosDecCosLat(JCOL)*COS(YRRIP%RWSOVR + PGELAM(JCOL))) + ! ...but for bit reproducibility with previous cycle we do it + ! like this: + PMU0(JCOL) = MAX(0.0_JPRB, ZSINDECSINLAT(JCOL) & + & - XCOSDEL*COS(ZSOLANG)*ZCOSLAT(JCOL)*COS(PGELAM(JCOL)) & + & + XCOSDEL*SIN(ZSOLANG)*ZCOSLAT(JCOL)*SIN(PGELAM(JCOL))) + ENDDO + + ELSE + ! Compute the average MU0 for the period of the model timestep + + ! First compute the sine and cosine of the times of the start and + ! end of the model timestep + ZHALFTIMESTEP = XTSTEP * RPI / RDAY + ZSOLARTIMESTART = ZSOLANG - ZHALFTIMESTEP + ZSOLARTIMEEND = ZSOLANG + ZHALFTIMESTEP + + ! Compute tangent of solar declination, with check in case someone + ! simulates a planet completely tipped over + ZTANDEC = XSINDEL / MAX(XCOSDEL, 1.0E-12) + + DO JCOL = KSTART,KEND + ! Sunrise equation: cos(hour angle at sunset) = + ! -tan(declination)*tan(latitude) + ZCOSHOURANGLESUNSET = -ZTANDEC * PGEMU(JCOL) & + & / MAX(ZCOSLAT(JCOL), 1.0E-12) + IF (ZCOSHOURANGLESUNSET > 1.0) THEN + ! Perpetual darkness + PMU0(JCOL) = 0.0_JPRB + ELSE + ! Compute hour angle at start and end of time interval, + ! ensuring that the hour angle of the centre of the time + ! window is in the range -PI to +PI (equivalent to ensuring + ! that local solar time = solar time + longitude is in the + ! range 0 to 2PI) + IF (ZSOLANG + PGELAM(JCOL) < 2.0_JPRB*RPI) THEN + ZHOURANGLESTART = ZSOLARTIMESTART + PGELAM(JCOL) - RPI + ZHOURANGLEEND = ZSOLARTIMEEND + PGELAM(JCOL) - RPI + ELSE + ZHOURANGLESTART = ZSOLARTIMESTART + PGELAM(JCOL) - 3.0_JPRB*RPI + ZHOURANGLEEND = ZSOLARTIMEEND + PGELAM(JCOL) - 3.0_JPRB*RPI + ENDIF + + IF (ZCOSHOURANGLESUNSET >= -1.0) THEN + ! Not perpetual daylight or perpetual darkness, so we need + ! to check for sunrise or sunset lying within the time + ! interval + ZHOURANGLESUNSET = ACOS(ZCOSHOURANGLESUNSET) + IF (ZHOURANGLEEND <= -ZHOURANGLESUNSET & + & .OR. ZHOURANGLESTART >= ZHOURANGLESUNSET) THEN + ! The time interval is either completely before sunrise or + ! completely after sunset + PMU0(JCOL) = 0.0_JPRB + CYCLE + ENDIF + + ! Bound the start and end hour angles by sunrise and sunset + ZHOURANGLESTART = MAX(-ZHOURANGLESUNSET, & + & MIN(ZHOURANGLESTART, ZHOURANGLESUNSET)) + ZHOURANGLEEND = MAX(-ZHOURANGLESUNSET, & + & MIN(ZHOURANGLEEND, ZHOURANGLESUNSET)) + ENDIF + + ! Compute average MU0 in the model timestep, although the + ! numerator considers only the time from ZHourAngleStart to + ! ZHourAngleEnd that the sun is above the horizon + PMU0(JCOL) = (ZSINDECSINLAT(JCOL) * (ZHOURANGLEEND-ZHOURANGLESTART) & + & + ZCOSDECCOSLAT(JCOL)*(SIN(ZHOURANGLEEND)-SIN(ZHOURANGLESTART))) & + & / (2.0_JPRB * ZHALFTIMESTEP) + + ! This shouldn't ever result in negative values, but just in + ! case + IF (PMU0(JCOL) < 0.0_JPRB) THEN + PMU0(JCOL) = 0.0_JPRB + ENDIF + + ENDIF + ENDDO + ENDIF + +ENDIF + + +! ------------------------------------------------------------------ +IF (LHOOK) CALL DR_HOOK('COS_SZA',1,ZHOOK_HANDLE) +END SUBROUTINE COS_SZA diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/ice_effective_radius.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/ice_effective_radius.F90 new file mode 100644 index 0000000000000000000000000000000000000000..8d078cca1e9be027612fc25162d4c1b1ff36ea82 --- /dev/null +++ b/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/ice_effective_radius.F90 @@ -0,0 +1,196 @@ +! ################################# + MODULE MODI_ICE_EFFECTIVE_RADIUS +! ################################# +INTERFACE + +SUBROUTINE ICE_EFFECTIVE_RADIUS & + & (KIDIA, KFDIA, KLON, KLEV, & + & PPRESSURE, PTEMPERATURE, PCLOUD_FRAC, PQ_ICE, PQ_SNOW, PGEMU, & + & PRE_UM) + +USE PARKIND1 , ONLY : JPIM, JPRB +! INPUT ARGUMENTS + +! *** Array dimensions and ranges +INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA ! Start column to process +INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA ! End column to process +INTEGER(KIND=JPIM),INTENT(IN) :: KLON ! Number of columns +INTEGER(KIND=JPIM),INTENT(IN) :: KLEV ! Number of levels + +! *** Variables on model levels +REAL(KIND=JPRB), INTENT(IN) :: PPRESSURE(KLON,KLEV) ! (Pa) +REAL(KIND=JPRB), INTENT(IN) :: PTEMPERATURE(KLON,KLEV) ! (K) +REAL(KIND=JPRB), INTENT(IN) :: PCLOUD_FRAC(KLON,KLEV) ! (kg/kg) +REAL(KIND=JPRB), INTENT(IN) :: PQ_ICE(KLON,KLEV) ! (kg/kg) +REAL(KIND=JPRB), INTENT(IN) :: PQ_SNOW(KLON,KLEV) ! (kg/kg) + +! *** Single level variable +REAL(KIND=JPRB), INTENT(IN) :: PGEMU(KLON) ! Sine of latitude + +! OUTPUT ARGUMENT +! Effective radius +REAL(KIND=JPRB), INTENT(OUT) :: PRE_UM(KLON,KLEV) ! (microns) + +END SUBROUTINE ICE_EFFECTIVE_RADIUS +END INTERFACE +END MODULE MODI_ICE_EFFECTIVE_RADIUS + +SUBROUTINE ICE_EFFECTIVE_RADIUS & + & (KIDIA, KFDIA, KLON, KLEV, & + & PPRESSURE, PTEMPERATURE, PCLOUD_FRAC, PQ_ICE, PQ_SNOW, PGEMU, & + & PRE_UM) + +! ICE_EFFECTIVE_RADIUS +! +! PURPOSE +! ------- +! Calculate effective radius of ice clouds +! +! AUTHOR +! ------ +! Robin Hogan, ECMWF (using code extracted from radlswr.F90) +! Original: 2016-02-24 +! +! MODIFICATIONS +! ------------- +! +! +! ------------------------------------------------------------------- +USE PARKIND1 , ONLY : JPIM, JPRB +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +! USE YOERAD , ONLY : YRERAD +USE YOM_YGFL , ONLY : YGFL +! USE YOECLDP , ONLY : YRECLDP +USE YOERDU , ONLY : REPLOG, REPSCW +USE YOMLUN , ONLY : NULERR +USE YOMCST , ONLY : RD, RPI, RTT +USE MODD_PARAM_ECRAD_n , ONLY : NRADIP +! INPUT ARGUMENTS + +! *** Array dimensions and ranges +INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA ! Start column to process +INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA ! End column to process +INTEGER(KIND=JPIM),INTENT(IN) :: KLON ! Number of columns +INTEGER(KIND=JPIM),INTENT(IN) :: KLEV ! Number of levels + +! *** Variables on model levels +REAL(KIND=JPRB), INTENT(IN) :: PPRESSURE(KLON,KLEV) ! (Pa) +REAL(KIND=JPRB), INTENT(IN) :: PTEMPERATURE(KLON,KLEV) ! (K) +REAL(KIND=JPRB), INTENT(IN) :: PCLOUD_FRAC(KLON,KLEV) ! (kg/kg) +REAL(KIND=JPRB), INTENT(IN) :: PQ_ICE(KLON,KLEV) ! (kg/kg) +REAL(KIND=JPRB), INTENT(IN) :: PQ_SNOW(KLON,KLEV) ! (kg/kg) + +! *** Single level variable +REAL(KIND=JPRB), INTENT(IN) :: PGEMU(KLON) ! Sine of latitude + +! OUTPUT ARGUMENT +! Effective radius +REAL(KIND=JPRB), INTENT(OUT) :: PRE_UM(KLON,KLEV) ! (microns) + +! LOCAL VARIABLES + +REAL(KIND=JPRB) :: ZIWC_INCLOUD_GM3 ! In-cloud ice+snow water content in g m-3 +REAL(KIND=JPRB) :: ZAIR_DENSITY_GM3 ! Air density in g m-3 + +REAL(KIND=JPRB) :: ZTEMPERATURE_C ! Temperature, degrees Celcius +REAL(KIND=JPRB) :: ZTEMP_FACTOR ! Temperature, Kelvin minus 83.15 +REAL(KIND=JPRB) :: ZAIWC, ZBIWC ! Factors in empirical relationship +REAL(KIND=JPRB) :: ZDEFAULT_RE_UM ! Default effective radius in microns +REAL(KIND=JPRB) :: ZDIAMETER_UM ! Effective diameter in microns + +! Min effective diameter in microns; may vary with latitude +REAL(KIND=JPRB) :: ZMIN_DIAMETER_UM(KLON) + +INTEGER :: JL, JK + +REAL(KIND=JPRB) :: ZHOOK_HANDLE + +! ------------------------------------------------------------------- + +#include "abor1.intfb.h" + +! ------------------------------------------------------------------- + +IF (LHOOK) CALL DR_HOOK('ICE_EFFECTIVE_RADIUS',0,ZHOOK_HANDLE) + +! ------------------------------------------------------------------- +SELECT CASE(NRADIP) +CASE(0) + ! Ice effective radius fixed at 40 microns + PRE_UM(KIDIA:KFDIA,:) = 40.0_JPRB + +CASE(1,2) + ! Ice effective radius from Liou and Ou (1994) + DO JK = 1,KLEV + DO JL = KIDIA,KFDIA + ! Convert Kelvin to Celcius, preventing positive numbers + ZTEMPERATURE_C = MIN(PTEMPERATURE(JL,JK) - RTT, -0.1) + ! Liou and Ou's empirical formula + PRE_UM(JL,JK) = 326.3_JPRB + ZTEMPERATURE_C * (12.42_JPRB & + & + ZTEMPERATURE_C * (0.197_JPRB + ZTEMPERATURE_C * 0.0012_JPRB)) + IF (NRADIP == 1) THEN + ! Original Liou and Ou (1994) bounds of 40-130 microns + PRE_UM(JL,JK) = MAX(PRE_UM(JL,JK), 40.0_JPRB) + PRE_UM(JL,JK) = MIN(PRE_UM(JL,JK),130.0_JPRB) + ELSE + ! Formulation following Jakob, Klein modifications to ice + ! content + PRE_UM(JL,JK) = MAX(PRE_UM(JL,JK), 30.0_JPRB) + PRE_UM(JL,JK) = MIN(PRE_UM(JL,JK), 60.0_JPRB) + ENDIF + ENDDO + ENDDO + +CASE(3) + ! Ice effective radius = f(T,IWC) from Sun and Rikus (1999), revised + ! by Sun (2001) + + ! Default effective radius is computed from an effective diameter of + ! 80 microns; note that multiplying by re2de actually converts from + ! effective diameter to effective radius. + ZDEFAULT_RE_UM = 80.0_JPRB * XRE2DE + + ! Minimum effective diameter may vary with latitude + IF (NMINICE == 0) THEN + ! Constant effective diameter + ZMIN_DIAMETER_UM(KIDIA:KFDIA) = XRMINICE + ELSE + ! Ice effective radius varies with latitude, smaller at poles + DO JL = KIDIA,KFDIA + ZMIN_DIAMETER_UM(JL) = 20.0_JPRB + (XRMINICE - 20.0_JPRB) & + & * COS(ASIN(PGEMU(JL))) + ENDDO + ENDIF + + DO JK = 1,KLEV + DO JL = KIDIA,KFDIA + IF (PCLOUD_FRAC(JL,JK) > 0.001_JPRB & + & .AND. (PQ_ICE(JL,JK)+PQ_SNOW(JL,JK)) > 0.0_JPRB) THEN + ZAIR_DENSITY_GM3 = 1000.0_JPRB * PPRESSURE(JL,JK) / (RD*PTEMPERATURE(JL,JK)) + ZIWC_INCLOUD_GM3 = ZAIR_DENSITY_GM3 * (PQ_ICE(JL,JK) + PQ_SNOW(JL,JK)) & + & / PCLOUD_FRAC(JL,JK) + ZTEMPERATURE_C = PTEMPERATURE(JL,JK) - RTT + ! Sun, 2001 (corrected from Sun & Rikus, 1999) + ZAIWC = 45.8966_JPRB * ZIWC_INCLOUD_GM3**0.2214_JPRB + ZBIWC = 0.7957_JPRB * ZIWC_INCLOUD_GM3**0.2535_JPRB + ZDIAMETER_UM = (1.2351_JPRB + 0.0105_JPRB * ZTEMPERATURE_C) & + & * (ZAIWC + ZBIWC*(PTEMPERATURE(JL,JK) - 83.15_JPRB)) + ZDIAMETER_UM = MIN ( MAX( ZDIAMETER_UM, ZMIN_DIAMETER_UM(JL)), 155.0_JPRB) + PRE_UM(JL,JK) = ZDIAMETER_UM * XRE2DE + ELSE + PRE_UM(JL,JK) = ZDEFAULT_RE_UM + ENDIF + ENDDO + ENDDO + +CASE DEFAULT + WRITE(NULERR,'(A,I0,A)') 'ICE EFFECTIVE RADIUS OPTION NRADLP=',NRADIP,' NOT AVAILABLE' + CALL ABOR1('ERROR IN ICE_EFFECTIVE_RADIUS') + +END SELECT + +! ------------------------------------------------------------------- + +IF (LHOOK) CALL DR_HOOK('ICE_EFFECTIVE_RADIUS',1,ZHOOK_HANDLE) + +END SUBROUTINE ICE_EFFECTIVE_RADIUS diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/liquid_effective_radius.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/liquid_effective_radius.F90 new file mode 100644 index 0000000000000000000000000000000000000000..7a1348ad92996ce8ca3a900ed37b7914994ac00f --- /dev/null +++ b/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/liquid_effective_radius.F90 @@ -0,0 +1,300 @@ +MODULE MODI_LIQUID_EFFECTIVE_RADIUS + +INTERFACE + +SUBROUTINE LIQUID_EFFECTIVE_RADIUS & + & (KIDIA, KFDIA, KLON, KLEV, & + & PPRESSURE, PTEMPERATURE, PCLOUD_FRAC, PQ_LIQ, PQ_RAIN, & + & PLAND_FRAC, PCCN_LAND, PCCN_SEA, & + & PRE_UM) + + +USE PARKIND1 , ONLY : JPIM, JPRB + + +! INPUT ARGUMENTS + +! *** Array dimensions and ranges +INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA ! Start column to process +INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA ! End column to process +INTEGER(KIND=JPIM),INTENT(IN) :: KLON ! Number of columns +INTEGER(KIND=JPIM),INTENT(IN) :: KLEV ! Number of levels + +! *** Variables on model levels +REAL(KIND=JPRB), INTENT(IN) :: PPRESSURE(KLON,KLEV) ! (Pa) +REAL(KIND=JPRB), INTENT(IN) :: PTEMPERATURE(KLON,KLEV) ! (K) +REAL(KIND=JPRB), INTENT(IN) :: PCLOUD_FRAC(KLON,KLEV) +REAL(KIND=JPRB), INTENT(IN) :: PQ_LIQ(KLON,KLEV) ! (kg/kg) +REAL(KIND=JPRB), INTENT(IN) :: PQ_RAIN(KLON,KLEV) ! (kg/kg) + +! *** Single-level variables +REAL(KIND=JPRB), INTENT(IN) :: PLAND_FRAC(KLON) ! 1=land, 0=sea +REAL(KIND=JPRB), INTENT(IN) :: PCCN_LAND(KLON) +REAL(KIND=JPRB), INTENT(IN) :: PCCN_SEA(KLON) + +! OUTPUT ARGUMENT + +! Effective radius +REAL(KIND=JPRB), INTENT(OUT) :: PRE_UM(KLON,KLEV) ! (microns) + +END SUBROUTINE LIQUID_EFFECTIVE_RADIUS +END INTERFACE +END MODULE MODI_LIQUID_EFFECTIVE_RADIUS + +SUBROUTINE LIQUID_EFFECTIVE_RADIUS & + & (KIDIA, KFDIA, KLON, KLEV, & + & PPRESSURE, PTEMPERATURE, PCLOUD_FRAC, PQ_LIQ, PQ_RAIN, & + & PLAND_FRAC, PCCN_LAND, PCCN_SEA, & + & PRE_UM) + +! LIQUID_EFFECTIVE_RADIUS +! +! PURPOSE +! ------- +! Calculate effective radius of liquid clouds +! +! AUTHOR +! ------ +! Robin Hogan, ECMWF (using code extracted from radlswr.F90) +! Original: 2015-09-24 +! +! MODIFICATIONS +! ------------- +! +! +! ------------------------------------------------------------------- + +USE PARKIND1 , ONLY : JPIM, JPRB +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +!USE YOERAD , ONLY : YRERAD +USE MODD_PARAM_ECRAD_n , ONLY : NRADLP, NAERMACC, NMCVAR, XCCNSEA, XCCNLND, NAERCLD, & + & NACTAERO, LCCNO, LCCNL + +USE YOM_YGFL , ONLY : YGFL +! USE YOECLDP , ONLY : YRECLDP +USE YOERDU , ONLY : REPLOG, REPSCW +USE YOMLUN , ONLY : NULERR +USE YOMCST , ONLY : RD, RPI + +! ------------------------------------------------------------------- + +IMPLICIT NONE + +! INPUT ARGUMENTS + +! *** Array dimensions and ranges +INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA ! Start column to process +INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA ! End column to process +INTEGER(KIND=JPIM),INTENT(IN) :: KLON ! Number of columns +INTEGER(KIND=JPIM),INTENT(IN) :: KLEV ! Number of levels + +! *** Variables on model levels +REAL(KIND=JPRB), INTENT(IN) :: PPRESSURE(KLON,KLEV) ! (Pa) +REAL(KIND=JPRB), INTENT(IN) :: PTEMPERATURE(KLON,KLEV) ! (K) +REAL(KIND=JPRB), INTENT(IN) :: PCLOUD_FRAC(KLON,KLEV) +REAL(KIND=JPRB), INTENT(IN) :: PQ_LIQ(KLON,KLEV) ! (kg/kg) +REAL(KIND=JPRB), INTENT(IN) :: PQ_RAIN(KLON,KLEV) ! (kg/kg) + +! *** Single-level variables +REAL(KIND=JPRB), INTENT(IN) :: PLAND_FRAC(KLON) ! 1=land, 0=sea +REAL(KIND=JPRB), INTENT(IN) :: PCCN_LAND(KLON) +REAL(KIND=JPRB), INTENT(IN) :: PCCN_SEA(KLON) + +! OUTPUT ARGUMENT + +! Effective radius +REAL(KIND=JPRB), INTENT(OUT) :: PRE_UM(KLON,KLEV) ! (microns) + +! PARAMETERS + +! Minimum and maximum effective radius, in microns +REAL(KIND=JPRB), PARAMETER :: PP_MIN_RE_UM = 4.0_JPRB +REAL(KIND=JPRB), PARAMETER :: PP_MAX_RE_UM = 30.0_JPRB + +! LOCAL VARIABLES +INTEGER :: IRADLP ! ID of effective radius scheme to use +INTEGER :: NACTIVE_AEROSOL ! Number of active aerosol +REAL(KIND=JPRB) :: ZCCN ! CCN concentration (units?) + +REAL(KIND=JPRB) :: ZSPECTRAL_DISPERSION +REAL(KIND=JPRB) :: ZNTOT_CM3 ! Number conc in cm-3 +REAL(KIND=JPRB) :: ZRE_CUBED +REAL(KIND=JPRB) :: ZLWC_GM3, ZRWC_GM3 ! In-cloud liquid, rain content in g m-3 +REAL(KIND=JPRB) :: ZAIR_DENSITY_GM3 ! Air density in g m-3 +REAL(KIND=JPRB) :: ZRAIN_RATIO ! Ratio of rain to liquid water content +REAL(KIND=JPRB) :: ZWOOD_FACTOR, ZRATIO +REAL(KIND=JPRB) :: ZNUM, ZDEN, ZNTOT,ZD + +INTEGER :: JL, JK + +REAL(KIND=JPRB) :: ZHOOK_HANDLE + +! ------------------------------------------------------------------- + +#include "abor1.intfb.h" + +! ------------------------------------------------------------------- + +IF (LHOOK) CALL DR_HOOK('LIQUID_EFFECTIVE_RADIUS',0,ZHOOK_HANDLE) + +! ------------------------------------------------------------------- + +! Reproduce logic from RADLSWR +NACTIVE_AEROSOL = NACTAERO +IF (NACTAERO == 0 .AND. NAERMACC == 1) NACTIVE_AEROSOL = NMCVAR +IRADLP = NRADLP +IF (NACTIVE_AEROSOL >= 12 .AND. NAERCLD > 0 ) IRADLP=3 + +SELECT CASE(IRADLP) +CASE(0) + ! Very old parameterization as a function of pressure, used in ERA-15 + PRE_UM(KIDIA:KFDIA,:) = 10.0_JPRB & + & + (100000.0_JPRB-PPRESSURE(KIDIA:KFDIA,:))*3.5_JPRB + +CASE(1) + ! Simple distinction between land (10um) and ocean (13um) by Zhang + ! and Rossow + DO JL = KIDIA,KFDIA + IF (PLAND_FRAC(JL) < 0.5_JPRB) THEN + PRE_UM(JL,:) = 13.0_JPRB + ELSE + PRE_UM(JL,:) = 10.0_JPRB + ENDIF + ENDDO + +CASE(2) + ! Martin et al. (JAS 1994) + ! Old ECMWF version + DO JL = KIDIA,KFDIA + IF (PLAND_FRAC(JL) < 0.5_JPRB) THEN + ZCCN=150. + ZD=0.33 + ZNTOT=-1.15E-03*ZCCN*ZCCN+0.963*ZCCN+5.30 + ELSE + ZCCN=900. + ZD=0.43 + ZNTOT=-2.10E-04*ZCCN*ZCCN+0.568*ZCCN-27.9 + ENDIF + + ! Only consider cloudy regions + DO JK = 1,KLEV + IF (PCLOUD_FRAC(JL,JK) >= 0.001_JPRB & + & .AND. (PQ_LIQ(JL,JK)+PQ_RAIN(JL,JK)) > 0.0_JPRB) THEN + + ! Compute liquid and rain water contents + ZAIR_DENSITY_GM3 = 1000.0_JPRB * PPRESSURE(JL,JK) & + & / (RD*PTEMPERATURE(JL,JK)) + ! In-cloud mean water contents found by dividing by cloud + ! fraction + ZLWC_GM3 = ZAIR_DENSITY_GM3 * PQ_LIQ(JL,JK) / PCLOUD_FRAC(JL,JK) + ZRWC_GM3 = ZAIR_DENSITY_GM3 * PQ_RAIN(JL,JK) / PCLOUD_FRAC(JL,JK) + + ZNUM=3.*(ZLWC_GM3+ZRWC_GM3)*(1.+3.*ZD*ZD)**2 ! conversion mixing ratio into LWC + ZDEN=4.*RPI*ZNTOT*(1.+ZD*ZD)**3 + PRE_UM(JL,JK) =100.*(ZNUM/ZDEN)**0.333 + PRE_UM(JL,JK)=MAX(PRE_UM(JL,JK), 4.) + PRE_UM(JL,JK)=MIN(PRE_UM(JL,JK),16.) + ENDIF + ENDDO + + ENDDO +! print*, "PRE_UM" +! print*, PRE_UM +! pause +! +! print*, "PQ_LIQ+PQ_RAIN" +! print*, PQ_LIQ+PQ_RAIN +! pause + + +CASE(3) + ! Improved version in ECRAD + DO JL = KIDIA,KFDIA + ! First compute the cloud droplet concentration + IF (PLAND_FRAC(JL) < 0.5_JPRB) THEN + ! Sea case + IF (LCCNO) THEN + ZCCN = PCCN_SEA(JL) + ELSE + ZCCN = XCCNSEA + ENDIF + ZSPECTRAL_DISPERSION = 0.77_JPRB + ! Cloud droplet concentration in cm-3 (activated CCN) over + ! ocean + ZNTOT_CM3 = -1.15E-03_JPRB*ZCCN*ZCCN + 0.963_JPRB*ZCCN + 5.30_JPRB + ELSE + ! Land case + IF (LCCNL) THEN + ZCCN=PCCN_LAND(JL) + ELSE + ZCCN=XCCNLND + ENDIF + ZSPECTRAL_DISPERSION = 0.69_JPRB + ! Cloud droplet concentration in cm-3 (activated CCN) over + ! land + ZNTOT_CM3 = -2.10E-04_JPRB*ZCCN*ZCCN + 0.568_JPRB*ZCCN - 27.9_JPRB + ENDIF + + ZRATIO = (0.222_JPRB/ZSPECTRAL_DISPERSION)**0.333_JPRB + + DO JK = 1,KLEV + + ! Only consider cloudy regions + IF (PCLOUD_FRAC(JL,JK) >= 0.001_JPRB & + & .AND. (PQ_LIQ(JL,JK)+PQ_RAIN(JL,JK)) > 0.0_JPRB) THEN + + ! Compute liquid and rain water contents + ZAIR_DENSITY_GM3 = 1000.0_JPRB * PPRESSURE(JL,JK) & + & / (RD*PTEMPERATURE(JL,JK)) + ! In-cloud mean water contents found by dividing by cloud + ! fraction + ZLWC_GM3 = ZAIR_DENSITY_GM3 * PQ_LIQ(JL,JK) / PCLOUD_FRAC(JL,JK) + ZRWC_GM3 = ZAIR_DENSITY_GM3 * PQ_RAIN(JL,JK) / PCLOUD_FRAC(JL,JK) + + ! Wood's (2000, eq. 19) adjustment to Martin et al's + ! parameterization + IF (ZLWC_GM3 > REPSCW) THEN + ZRAIN_RATIO = ZRWC_GM3 / ZLWC_GM3 + ZWOOD_FACTOR = ((1.0_JPRB + ZRAIN_RATIO)**0.666_JPRB) & + & / (1.0_JPRB + 0.2_JPRB * ZRATIO*ZRAIN_RATIO) + ELSE + ZWOOD_FACTOR = 1.0_JPRB + ENDIF + + ! g m-3 and cm-3 units cancel out with density of water + ! 10^6/(1000*1000); need a factor of 10^6 to convert to + ! microns and cubed root is factor of 100 which appears in + ! equation below + ZRE_CUBED = (3.0_JPRB * (ZLWC_GM3 + ZRWC_GM3)) & + & / (4.0_JPRB*RPI*ZNTOT_CM3*ZSPECTRAL_DISPERSION) + IF (ZRE_CUBED > REPLOG) THEN + PRE_UM(JL,JK) = ZWOOD_FACTOR*100.0_JPRB*EXP(0.333_JPRB*LOG(ZRE_CUBED)) + ! Make sure effective radius is bounded in range 4-30 microns + PRE_UM(JL,JK) = MAX(PP_MIN_RE_UM, MIN(PRE_UM(JL,JK), PP_MAX_RE_UM)) + ELSE + PRE_UM(JL,JK) = PP_MIN_RE_UM + ENDIF + + ELSE + ! Cloud fraction or liquid+rain water content too low to + ! consider this a cloud + PRE_UM(JL,JK) = PP_MIN_RE_UM + + ENDIF + + ENDDO + + ENDDO + + + +CASE DEFAULT + WRITE(NULERR,'(A,I0,A)') 'LIQUID EFFECTIVE RADIUS OPTION IRADLP=',IRADLP,' NOT AVAILABLE' + CALL ABOR1('ERROR IN LIQUID_EFFECTIVE_RADIUS') +END SELECT + +! ------------------------------------------------------------------- + +IF (LHOOK) CALL DR_HOOK('LIQUID_EFFECTIVE_RADIUS',1,ZHOOK_HANDLE) + +END SUBROUTINE LIQUID_EFFECTIVE_RADIUS diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/radiation_scheme.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/radiation_scheme.F90 new file mode 100644 index 0000000000000000000000000000000000000000..e33efcc997adf884a0ff00b69bf8300c17a276ae --- /dev/null +++ b/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/radiation_scheme.F90 @@ -0,0 +1,621 @@ +!MNH_LIC Copyright 1994-2014 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. +!----------------------------------------------------------------- +!--------------- special set of characters for RCS information +!----------------------------------------------------------------- +! $Source: /home/cvsroot/MNH-VX-Y-Z/src/MNH/ecmwf_radiation_vers2.f90,v $ $Revision: 1.3.2.4.2.2.2.1 $ +! masdev4_7 BUG1 2007/06/15 17:47:17 +!----------------------------------------------------------------- +! ################################# + MODULE MODI_RADIATION_SCHEME +! ################################# + +CONTAINS + +SUBROUTINE RADIATION_SCHEME & + & (KIDIA, KFDIA, KLON, KLEV, KAEROSOL, & + & PSOLAR_IRRADIANCE, & + & PMU0, PTEMPERATURE_SKIN, PALBEDO_DIF, PALBEDO_DIR, & + & PEMIS, PEMIS_WINDOW, & + & PCCN_LAND, PCCN_SEA, & + & PGELAM, PGEMU, PLAND_SEA_MASK, & + & PPRESSURE, PTEMPERATURE, & + & PPRESSURE_H, PTEMPERATURE_H, & + & PQ, PCO2, PCH4, PN2O, PNO2, PCFC11, PCFC12, PHCFC22, PCCL4, PO3_DP, & + & PCLOUD_FRAC, PQ_LIQUID, PQ_ICE, PQ_RAIN, PQ_SNOW, & + & PAEROSOL_OLD, PAEROSOL, & + & PFLUX_SW, PFLUX_LW, PFLUX_SW_CLEAR, PFLUX_LW_CLEAR, & + & PFLUX_SW_SURF, PFLUX_LW_SURF, PFLUX_SW_SURF_CLEAR, PFLUX_LW_SURF_CLEAR, & + & PFLUX_DIR_SURF, PFLUX_DIR_SURF_CLEAR, PFLUX_DIR_SURF_INTO_SUN, & + & PFLUX_UV, PFLUX_PAR, PFLUX_PAR_CLEAR, & + & PFLUX_SW_DN_TOA,PFLUX_SW_UP_TOA,PFLUX_LW_UP_TOA, & + & PFLUX_SW_UP_TOA_CLEAR,PFLUX_LW_UP_TOA_CLEAR, & + & PFLUX_SW_DN, PFLUX_LW_DN, PFLUX_SW_UP, PFLUX_LW_UP, & + & PFLUX_SW_DN_CLEAR, PFLUX_LW_DN_CLEAR, PFLUX_SW_UP_CLEAR, PFLUX_LW_UP_CLEAR, & + & PRE_LIQUID_UM, PRE_ICE_UM, & + & PEMIS_OUT, PLWDERIVATIVE, & + & PSWDIFFUSEBAND, PSWDIRECTBAND) + +! RADIATION_SCHEME - Interface to modular radiation scheme +! +! PURPOSE +! ------- +! The modular radiation scheme is contained in a separate +! library. This routine puts the the IFS arrays into appropriate +! objects, computing the additional data that is required, and sends +! it to the radiation scheme. It returns net fluxes and surface +! flux components needed by the rest of the model. +! +! Lower case is used for variables and types taken from the +! radiation library +! +! INTERFACE +! --------- +! RADIATION_SCHEME is called from RADLSWR. The +! SETUP_RADIATION_SCHEME routine (in the RADIATION_SETUP module) +! should have been run first. +! +! AUTHOR +! ------ +! Robin Hogan, ECMWF +! Original: 2015-09-16 +! +! MODIFICATIONS +! ------------- +! +! TO DO +! ----- +! +!----------------------------------------------------------------------- + +! Modules from ifs or ifsaux libraries +USE PARKIND1 , ONLY : JPIM, JPRB +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +! USE YOERAD , ONLY : YRERAD ! does not exist in MNH + +! MNH +USE MODD_PARAM_ECRAD_n, ONLY : NAERMACC, NDECOLAT, XCLOUD_FRAC_STD, & ! replace YRERAD to get attributes + & LAPPROXLWUPDATE, LAPPROXSWUPDATE +USE MODD_RADIATIONS_n , ONLY : NSWB_MNH,NSWB_OLD +USE MODE_THERMO ! , ONLY QSATW_2D +USE MODD_DYN_n , ONLY : XTSTEP, NSTOP +USE MODD_TIME , ONLY : TDTEXP +USE MODD_TIME_n , ONLY : TDTMOD,TDTCUR +USE MODI_ICE_EFFECTIVE_RADIUS +USE MODI_LIQUID_EFFECTIVE_RADIUS +USE MODI_CLOUD_OVERLAP_DECORR_LEN +! MNH + +USE RADIATION_SETUP, ONLY : rad_config, & + & NWEIGHT_UV, IBAND_UV, WEIGHT_UV, & + & NWEIGHT_PAR, IBAND_PAR, WEIGHT_PAR, & + & ITYPE_TROP_BG_AER, TROP_BG_AER_MASS_EXT, & + & ITYPE_STRAT_BG_AER, STRAT_BG_AER_MASS_EXT + +! USE YOMRIP0 , ONLY : NINDAT ! does not exist in MNH +! USE YOMCT3 , ONLY : NSTEP ! does not exist in MNH +! USE YOMRIP , ONLY : YRRIP ! does not exist in MNH +USE YOMCST , ONLY : RSIGMA ! Stefan-Boltzmann constant + + +! Modules from radiation library +USE radiation_single_level, ONLY : single_level_type +USE radiation_thermodynamics, ONLY : thermodynamics_type +USE radiation_gas +USE radiation_cloud, ONLY : cloud_type +USE radiation_aerosol, ONLY : aerosol_type +USE radiation_flux, ONLY : flux_type +USE radiation_interface, ONLY : radiation, set_gas_units +USE radiation_save, ONLY : save_inputs + +IMPLICIT NONE + +! INPUT ARGUMENTS + +! *** Array dimensions and ranges +INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA ! Start column to process +INTEGER(KIND=JPIM),INTENT(IN) :: KFDIA ! End column to process +INTEGER(KIND=JPIM),INTENT(IN) :: KLON ! Number of columns +INTEGER(KIND=JPIM),INTENT(IN) :: KLEV ! Number of levels +INTEGER(KIND=JPIM),INTENT(IN) :: KAEROSOL ! Number of aerosol types + +! *** Single-level fields +REAL(KIND=JPRB), INTENT(IN) :: PSOLAR_IRRADIANCE ! (W m-2) +REAL(KIND=JPRB), INTENT(IN) :: PMU0(KLON) ! Cosine of solar zenith ang +REAL(KIND=JPRB), INTENT(IN) :: PTEMPERATURE_SKIN(KLON) ! (K) +! Diffuse and direct components of surface shortwave albedo +REAL(KIND=JPRB), INTENT(IN) :: PALBEDO_DIF(KLON,NSWB_OLD) +REAL(KIND=JPRB), INTENT(IN) :: PALBEDO_DIR(KLON,NSWB_OLD) +! Longwave emissivity outside and inside the window region +REAL(KIND=JPRB), INTENT(IN) :: PEMIS(KLON) +REAL(KIND=JPRB), INTENT(IN) :: PEMIS_WINDOW(KLON) +! Longitude (radians), sine of latitude +REAL(KIND=JPRB), INTENT(IN) :: PGELAM(KLON) +REAL(KIND=JPRB), INTENT(IN) :: PGEMU(KLON) +! Land-sea mask +REAL(KIND=JPRB), INTENT(IN) :: PLAND_SEA_MASK(KLON) + +! *** Variables on full levels +REAL(KIND=JPRB), INTENT(IN) :: PPRESSURE(KLON,KLEV) ! (Pa) +REAL(KIND=JPRB), INTENT(IN) :: PTEMPERATURE(KLON,KLEV) ! (K) +! *** Variables on half levels +REAL(KIND=JPRB), INTENT(IN) :: PPRESSURE_H(KLON,KLEV+1) ! (Pa) +REAL(KIND=JPRB), INTENT(IN) :: PTEMPERATURE_H(KLON,KLEV+1) ! (K) + +! *** Gas mass mixing ratios on full levels +REAL(KIND=JPRB), INTENT(IN) :: PQ(KLON,KLEV) +REAL(KIND=JPRB), INTENT(IN) :: PCO2(KLON,KLEV) +REAL(KIND=JPRB), INTENT(IN) :: PCH4(KLON,KLEV) +REAL(KIND=JPRB), INTENT(IN) :: PN2O(KLON,KLEV) +REAL(KIND=JPRB), INTENT(IN) :: PNO2(KLON,KLEV) +REAL(KIND=JPRB), INTENT(IN) :: PCFC11(KLON,KLEV) +REAL(KIND=JPRB), INTENT(IN) :: PCFC12(KLON,KLEV) +REAL(KIND=JPRB), INTENT(IN) :: PHCFC22(KLON,KLEV) +REAL(KIND=JPRB), INTENT(IN) :: PCCL4(KLON,KLEV) +REAL(KIND=JPRB), INTENT(IN) :: PO3_DP(KLON,KLEV) ! (Pa*kg/kg) ! + +! *** Cloud fraction and hydrometeor mass mixing ratios +REAL(KIND=JPRB), INTENT(IN) :: PCLOUD_FRAC(KLON,KLEV) +REAL(KIND=JPRB), INTENT(IN) :: PQ_LIQUID(KLON,KLEV) +REAL(KIND=JPRB), INTENT(IN) :: PQ_ICE(KLON,KLEV) +REAL(KIND=JPRB), INTENT(IN) :: PQ_RAIN(KLON,KLEV) +REAL(KIND=JPRB), INTENT(IN) :: PQ_SNOW(KLON,KLEV) + +! *** Aerosol mass mixing ratios +REAL(KIND=JPRB), INTENT(IN) :: PAEROSOL_OLD(KLON,6,KLEV) ! Tegen in optical thickness at 550 nm +REAL(KIND=JPRB), INTENT(IN) :: PAEROSOL(KLON,KLEV,KAEROSOL) + +REAL(KIND=JPRB), INTENT(IN) :: PCCN_LAND(KLON) +REAL(KIND=JPRB), INTENT(IN) :: PCCN_SEA(KLON) + +! OUTPUT ARGUMENTS + +! *** Net fluxes on half-levels (W m-2) +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_SW(KLON,KLEV+1) +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_LW(KLON,KLEV+1) +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_SW_CLEAR(KLON,KLEV+1) +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_LW_CLEAR(KLON,KLEV+1) + +! *** Surface flux components (W m-2) +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_SW_SURF(KLON,NSWB_MNH) +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_LW_SURF(KLON) +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_SW_SURF_CLEAR(KLON,NSWB_MNH) +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_LW_SURF_CLEAR(KLON) +! Direct component of surface flux into horizontal plane +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_DIR_SURF(KLON,NSWB_MNH) +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_DIR_SURF_CLEAR(KLON,NSWB_MNH) +! As PFLUX_DIR but into a plane perpendicular to the sun +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_DIR_SURF_INTO_SUN(KLON,NSWB_MNH) + +! *** Ultraviolet and photosynthetically active radiation (W m-2) +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_UV(KLON) +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_PAR(KLON) +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_PAR_CLEAR(KLON) + +! *** Other single-level diagnostics +! Top-of-atmosphere fluxes (W m-2) +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_SW_DN_TOA(KLON) +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_SW_UP_TOA(KLON) ! QL +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_LW_UP_TOA(KLON) ! QL +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_SW_UP_TOA_CLEAR(KLON) ! QL +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_LW_UP_TOA_CLEAR(KLON) ! QL + +! Total fluxes - QL +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_SW_DN(KLON,KLEV+1) ! QL +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_LW_DN(KLON,KLEV+1) ! QL +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_SW_DN_CLEAR(KLON,KLEV+1) ! QL +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_LW_DN_CLEAR(KLON,KLEV+1) ! QL +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_SW_UP(KLON,KLEV+1) ! QL +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_LW_UP(KLON,KLEV+1) ! QL +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_SW_UP_CLEAR(KLON,KLEV+1) ! QL +REAL(KIND=JPRB), INTENT(OUT) :: PFLUX_LW_UP_CLEAR(KLON,KLEV+1) ! QL + +! Cloud effective radii in microns +REAL(KIND=JPRB), INTENT(OUT) :: PRE_LIQUID_UM(KLON,KLEV) +REAL(KIND=JPRB), INTENT(OUT) :: PRE_ICE_UM(KLON,KLEV) + +! Diagnosed longwave surface emissivity across the whole spectrum +REAL(KIND=JPRB), INTENT(OUT) :: PEMIS_OUT(KLON) + +! Partial derivative of total-sky longwave upward flux at each level +! with respect to upward flux at surface, used to correct heating +! rates at gridpoints/timesteps between calls to the full radiation +! scheme. Note that this version uses the convention of level index +! increasing downwards, unlike the local variable ZLwDerivative that +! is returned from the LW radiation scheme. +REAL(KIND=JPRB), INTENT(OUT) :: PLWDERIVATIVE(KLON,KLEV+1) + +! Surface diffuse and direct downwelling shortwave flux in each +! shortwave albedo band, used in RADINTG to update the surface fluxes +! accounting for high-resolution albedo information +REAL(KIND=JPRB), INTENT(OUT) :: PSWDIFFUSEBAND(KLON,NSWB_MNH) +REAL(KIND=JPRB), INTENT(OUT) :: PSWDIRECTBAND (KLON,NSWB_MNH) + +! LOCAL VARIABLES +TYPE(single_level_type) :: single_level +TYPE(thermodynamics_type) :: thermodynamics +TYPE(gas_type) :: gas +TYPE(cloud_type) :: cloud +TYPE(aerosol_type) :: aerosol +TYPE(flux_type) :: flux + +! Mass mixing ratio of ozone (kg/kg) +REAL(KIND=JPRB) :: ZO3(KLON,KLEV) + +! Cloud overlap decorrelation length for cloud boundaries in km +REAL(KIND=JPRB) :: ZDECORR_LEN_KM(KLON) + +! Ratio of cloud overlap decorrelation length for cloud water +! inhomogeneities to that for cloud boundaries (typically 0.5) +REAL(KIND=JPRB) :: ZDECORR_LEN_RATIO + +! The surface net longwave flux if the surface was a black body, used +! to compute the effective broadband surface emissivity +REAL(KIND=JPRB) :: ZBLACK_BODY_NET_LW(KIDIA:KFDIA) + +! Layer mass in kg m-2 +REAL(KIND=JPRB) :: ZLAYER_MASS(KIDIA:KFDIA,KLEV) + +! Time integers +INTEGER :: ITIM, IDAY + +! Loop indices +INTEGER :: JLON, JLEV, JBAND, JB_ALBEDO, JAER + +REAL(KIND=JPRB) :: ZHOOK_HANDLE + + + +! Import time functions for iseed calculation +!#include "../include/fcttim.func.h" +! #include "liquid_effective_radius.intfb.h" +! #include "ice_effective_radius.intfb.h" +! #include "cloud_overlap_decorr_len.intfb.h" + +! PRINT*,"RADIATION_SCHEME" + +IF (LHOOK) CALL DR_HOOK('RADIATION_SCHEME',0,ZHOOK_HANDLE) + +! Allocate memory in radiation objects +CALL single_level%allocate(KLON, NSWB_OLD, 2, & ! ncol, nalbedobands, nemisbands + & use_sw_albedo_direct=.TRUE.) ! mu0, tskin, albedo, emiss, seed for McICA +CALL thermodynamics%allocate(KLON, KLEV, use_h2o_sat=.true.) ! p, t, qsat; hlevel, nlev+1 +CALL gas%allocate(KLON, KLEV) ! mixing ratios +CALL cloud%allocate(KLON, KLEV) ! ql, qi, radl, radi, clfr, cw-sig, covlp +IF (NAERMACC > 0) THEN + CALL aerosol%allocate(KLON, 1, KLEV, KAEROSOL) ! MACC climatology +ELSE + CALL aerosol%allocate(KLON, 1, KLEV, 6) ! Tegen climatology ! mixing ratios per class +ENDIF +CALL flux%allocate(rad_config, 1, KLON, KLEV) ! output fluxes depend on config; cloud cover + ! do_lw and do_sw set to .true. ? + +! Set thermodynamic profiles: simply copy over the half-level +! pressure and temperature +thermodynamics%pressure_hl (KIDIA:KFDIA,:) = PPRESSURE_H (KIDIA:KFDIA,:) +thermodynamics%temperature_hl(KIDIA:KFDIA,:) = PTEMPERATURE_H(KIDIA:KFDIA,:) + +! IFS currently sets the half-level temperature at the surface to be +! equal to the skin temperature. The radiation scheme takes as input +! only the half-level temperatures and assumes the Planck function to +! vary linearly in optical depth between half levels. In the lowest +! atmospheric layer, where the atmospheric temperature can be much +! cooler than the skin temperature, this can lead to significant +! differences between the effective temperature of this lowest layer +! and the true value in the model. +! +! We may approximate the temperature profile in the lowest model level +! as piecewise linear between the top of the layer T[k-1/2], the +! centre of the layer T[k] and the base of the layer Tskin. The mean +! temperature of the layer is then 0.25*T[k-1/2] + 0.5*T[k] + +! 0.25*Tskin, which can be achieved by setting the atmospheric +! temperature at the half-level corresponding to the surface as +! follows: +thermodynamics%temperature_hl(KIDIA:KFDIA,KLEV+1) & + & = PTEMPERATURE(KIDIA:KFDIA,KLEV) & + & + 0.5_JPRB * (PTEMPERATURE_H(KIDIA:KFDIA,KLEV+1) & + & -PTEMPERATURE_H(KIDIA:KFDIA,KLEV)) + +! Alternatively we respect the model's atmospheric temperature in the +! lowest model level by setting the temperature at the lowest +! half-level such that the mean temperature of the layer is correct: +!thermodynamics%temperature_hl(KIDIA:KFDIA,KLEV+1) & +! & = 2.0_JPRB * PTEMPERATURE(KIDIA:KFDIA,KLEV) & +! & - PTEMPERATURE_H(KIDIA:KFDIA,KLEV) + +! Compute saturation specific humidity, used to hydrate aerosols. The +! "2" for the last argument indicates that the routine is not being +! called from within the convection scheme. +!CALL SATUR(KIDIA, KFDIA, KLON, 1, KLEV, & +! & PPRESSURE, PTEMPERATURE, thermodynamics%h2o_sat_liq, 2) + +!MNH +thermodynamics%h2o_sat_liq(:,:) = QSATW_2D(REAL(PPRESSURE), REAL(PTEMPERATURE)) +thermodynamics%h2o_sat_liq(:,:) = thermodynamics%h2o_sat_liq(:,:) & + & / (1.+thermodynamics%h2o_sat_liq(:,:)) ! mixing ratio => spec humid +!MNH + +! Alternative approximate version using temperature and pressure from +! the thermodynamics structure +!CALL thermodynamics%calc_saturation_wrt_liquid(KIDIA, KFDIA) + +! Set single-level fileds +single_level%solar_irradiance = PSOLAR_IRRADIANCE +single_level%cos_sza(KIDIA:KFDIA) = PMU0(KIDIA:KFDIA) +single_level%skin_temperature(KIDIA:KFDIA) = PTEMPERATURE_SKIN(KIDIA:KFDIA) +single_level%sw_albedo(KIDIA:KFDIA,:) = PALBEDO_DIF(KIDIA:KFDIA,:) +single_level%sw_albedo_direct(KIDIA:KFDIA,:)=PALBEDO_DIR(KIDIA:KFDIA,:) + +! pause + +! Longwave emissivity is in two bands +single_level%lw_emissivity(KIDIA:KFDIA,1) = PEMIS(KIDIA:KFDIA) +single_level%lw_emissivity(KIDIA:KFDIA,2) = PEMIS_WINDOW(KIDIA:KFDIA) + +! Create the relevant seed from date and time get the starting day +! and number of minutes since start +! IDAY = NDD(NINDAT) ! NINDAT is AAAAMMDD initial date NDD extract DD as INTEGER +IDAY = TDTEXP%TDATE%DAY ! MNH +ITIM = NINT((TDTMOD%time-TDTCUR%time) / 60.0_JPRB) ! YRRIP contains timestep infos ; number of minutes since beginning +DO JLON = KIDIA, KFDIA + ! This method gives a unique value for roughly every 1-km square + ! on the globe and every minute. ASIN(PGEMU)*60 gives rough + ! latitude in degrees, which we multiply by 100 to give a unique + ! value for roughly every km. PGELAM*60*100 gives a unique number + ! for roughly every km of longitude around the equator, which we + ! multiply by 180*100 so there is no overlap with the latitude + ! values. The result can be contained in a 32-byte integer (but + ! since random numbers are generated with the help of integer + ! overflow, it should not matter if the number did overflow). + single_level%iseed(JLON) = ITIM + IDAY & + & + NINT(PGELAM(JLON)*108000000.0_JPRB & + & + ASIN(PGEMU(JLON))*6000.0_JPRB) +ENDDO + +! Set cloud fields +cloud%q_liq(KIDIA:KFDIA,:) = PQ_LIQUID(KIDIA:KFDIA,:) +cloud%q_ice(KIDIA:KFDIA,:) = PQ_ICE(KIDIA:KFDIA,:) + PQ_SNOW(KIDIA:KFDIA,:) +cloud%fraction(KIDIA:KFDIA,:) = PCLOUD_FRAC(KIDIA:KFDIA,:) + +! Compute effective radii and convert to metres - Could take it from LIMA +CALL LIQUID_EFFECTIVE_RADIUS(KIDIA, KFDIA, KLON, KLEV, & + & PPRESSURE, PTEMPERATURE, PCLOUD_FRAC, PQ_LIQUID, PQ_RAIN, & + & PLAND_SEA_MASK, PCCN_LAND, PCCN_SEA, & + & PRE_LIQUID_UM) + +cloud%re_liq(KIDIA:KFDIA,:) = PRE_LIQUID_UM(KIDIA:KFDIA,:) * 1.0e-6_JPRB ! conversion into meters + +CALL ICE_EFFECTIVE_RADIUS(KIDIA, KFDIA, KLON, KLEV, & + & PPRESSURE, PTEMPERATURE, PCLOUD_FRAC, PQ_ICE, PQ_SNOW, PGEMU, & + & PRE_ICE_UM) + +cloud%re_ice(KIDIA:KFDIA,:) = PRE_ICE_UM(KIDIA:KFDIA,:) * 1.0e-6_JPRB + +! Get the cloud overlap decorrelation length (for cloud boundaries), +! in km, according to the parameterization specified by NDECOLAT, +! and insert into the "cloud" object. Also get the ratio of +! decorrelation lengths for cloud water content inhomogeneities and +! cloud boundaries, and set it in the "rad_config" object. +CALL CLOUD_OVERLAP_DECORR_LEN(KIDIA, KFDIA, KLON, PGEMU, NDECOLAT, & + & ZDECORR_LEN_KM, PDECORR_LEN_RATIO=ZDECORR_LEN_RATIO) + +rad_config%cloud_inhom_decorr_scaling = ZDECORR_LEN_RATIO + +DO JLON = KIDIA,KFDIA + CALL cloud%set_overlap_param(thermodynamics, & + & ZDECORR_LEN_KM(JLON)*1000.0_JPRB, & + & istartcol=JLON, iendcol=JLON) +ENDDO + +! Cloud water content fractional standard deviation is configurable +! from namelist NAERAD but must be globally constant. Before it was +! hard coded at 1.0. +CALL cloud%create_fractional_std(KLON, KLEV, XCLOUD_FRAC_STD) + +! By default mid and high cloud effective size is 10 km +CALL cloud%create_inv_cloud_effective_size(KLON,KLEV,1.0_JPRB/10000.0_JPRB) +! But for boundary clouds (eta > 0.8) we set it to 1 km +DO JLEV = 1,KLEV + DO JLON = KIDIA,KFDIA + IF (PPRESSURE(JLON,JLEV) > 0.8_JPRB * PPRESSURE_H(JLON,KLEV+1)) THEN + cloud%inv_cloud_effective_size(JLON,JLEV) = 1.0e-3_JPRB + ENDIF + ENDDO +ENDDO + + +! Compute the dry mass of each layer neglecting humidity effects, in +! kg m-2, needed to scale some of the aerosol inputs +CALL thermodynamics%get_layer_mass(ZLAYER_MASS) + +! Copy over aerosol mass mixing ratio +IF (NAERMACC > 0) THEN + + ! MACC aerosol climatology - this is already in mass mixing ratio + ! units with the required array orientation so we can copy it over + ! directly + aerosol%mixing_ratio(KIDIA:KFDIA,:,:) = PAEROSOL(KIDIA:KFDIA,:,:) + + ! Add the tropospheric and stratospheric backgrounds contained in the + ! old Tegen arrays - this is very ugly! + IF (TROP_BG_AER_MASS_EXT > 0.0_JPRB) THEN + aerosol%mixing_ratio(KIDIA:KFDIA,:,ITYPE_TROP_BG_AER) & + & = aerosol%mixing_ratio(KIDIA:KFDIA,:,ITYPE_TROP_BG_AER) & + & + PAEROSOL_OLD(KIDIA:KFDIA,1,:) & + & / (ZLAYER_MASS * TROP_BG_AER_MASS_EXT) + ENDIF + IF (STRAT_BG_AER_MASS_EXT > 0.0_JPRB) THEN + aerosol%mixing_ratio(KIDIA:KFDIA,:,ITYPE_STRAT_BG_AER) & + & = aerosol%mixing_ratio(KIDIA:KFDIA,:,ITYPE_STRAT_BG_AER) & + & + PAEROSOL_OLD(KIDIA:KFDIA,6,:) & + & / (ZLAYER_MASS * STRAT_BG_AER_MASS_EXT) + ENDIF + +ELSE + + ! Tegen aerosol climatology - the array PAEROSOL_OLD contains the + ! 550-nm optical depth in each layer. The optics data file + ! aerosol_ifs_rrtm_tegen.nc does not contain mass extinction + ! coefficient, but a scaling factor that the 550-nm optical depth + ! should be multiplied by to obtain the optical depth in each + ! spectral band. Therefore, in order for the units to work out, we + ! need to divide by the layer mass (in kg m-2) to obtain the 550-nm + ! cross-section per unit mass of dry air (so in m2 kg-1). We also + ! need to permute the array. + DO JLEV = 1,KLEV + DO JAER = 1,6 + aerosol%mixing_ratio(KIDIA:KFDIA,JLEV,JAER) & + & = PAEROSOL_OLD(KIDIA:KFDIA,JAER,JLEV) & + & / ZLAYER_MASS(KIDIA:KFDIA,JLEV) + ENDDO + ENDDO + +ENDIF + +! Convert ozone Pa*kg/kg to kg/kg +DO JLEV = 1,KLEV + DO JLON = KIDIA,KFDIA + ZO3(JLON,JLEV) = PO3_DP(JLON,JLEV) & + & / (PPRESSURE_H(JLON,JLEV+1)-PPRESSURE_H(JLON,JLEV)) + ENDDO +ENDDO + +! Insert gas mixing ratios +CALL gas%put(IH2O, IMassMixingRatio, PQ) +CALL gas%put(ICO2, IMassMixingRatio, PCO2) +CALL gas%put(ICH4, IMassMixingRatio, PCH4) +CALL gas%put(IN2O, IMassMixingRatio, PN2O) +CALL gas%put(ICFC11, IMassMixingRatio, PCFC11) +CALL gas%put(ICFC12, IMassMixingRatio, PCFC12) +CALL gas%put(IHCFC22, IMassMixingRatio, PHCFC22) +CALL gas%put(ICCL4, IMassMixingRatio, PCCL4) +CALL gas%put(IO3, IMassMixingRatio, ZO3) +CALL gas%put_well_mixed(IO2, IVolumeMixingRatio, 0.20944_JPRB) ! fixed volume mixing ratio for oxygen + +! Ensure the units of the gas mixing ratios are what is required by +! the gas absorption model +call set_gas_units(rad_config, gas) +! +! Call radiation scheme +CALL radiation(KLON, KLEV, KIDIA, KFDIA, rad_config, & + & single_level, thermodynamics, gas, cloud, aerosol, flux) + +! Compute required output fluxes +! First the net fluxes +PFLUX_SW(KIDIA:KFDIA,:) = flux%sw_dn(KIDIA:KFDIA,:) - flux%sw_up(KIDIA:KFDIA,:) +PFLUX_LW(KIDIA:KFDIA,:) = flux%lw_dn(KIDIA:KFDIA,:) - flux%lw_up(KIDIA:KFDIA,:) +PFLUX_SW_CLEAR(KIDIA:KFDIA,:) & + & = flux%sw_dn_clear(KIDIA:KFDIA,:) - flux%sw_up_clear(KIDIA:KFDIA,:) +PFLUX_LW_CLEAR(KIDIA:KFDIA,:) & + & = flux%lw_dn_clear(KIDIA:KFDIA,:) - flux%lw_up_clear(KIDIA:KFDIA,:) + + +! print*,"flux%sw_dn_surf_band(:,:)",flux%sw_dn_surf_band(:,:) +!Now the surface fluxes +PFLUX_SW_SURF (KIDIA:KFDIA,:) = TRANSPOSE(flux%sw_dn_surf_band (:,KIDIA:KFDIA)) ! modif Quentin +PFLUX_LW_SURF (KIDIA:KFDIA) = flux%lw_dn (KIDIA:KFDIA,KLEV+1) +PFLUX_SW_SURF_CLEAR(KIDIA:KFDIA,:) = TRANSPOSE(flux%sw_dn_surf_clear_band (:,KIDIA:KFDIA)) ! modif Quentin +PFLUX_LW_SURF_CLEAR(KIDIA:KFDIA) = flux%lw_dn_clear (KIDIA:KFDIA,KLEV+1) +PFLUX_DIR_SURF (KIDIA:KFDIA,:) = TRANSPOSE(flux%sw_dn_direct_surf_band (:,KIDIA:KFDIA)) ! modif Quentin +PFLUX_DIR_SURF_CLEAR (KIDIA:KFDIA,:) = TRANSPOSE(flux%sw_dn_direct_surf_clear_band (:,KIDIA:KFDIA)) ! modif Quentin +PFLUX_DIR_SURF_INTO_SUN(KIDIA:KFDIA,:) = 0.0_JPRB +DO JBAND = 1,NSWB_MNH + WHERE (PMU0(KIDIA:KFDIA) > EPSILON(1.0_JPRB)) + PFLUX_DIR_SURF_INTO_SUN(KIDIA:KFDIA,JBAND) = PFLUX_DIR_SURF(KIDIA:KFDIA,JBAND) / PMU0(KIDIA:KFDIA) + END WHERE +END DO + +! Top-of-atmosphere downwelling flux +PFLUX_SW_DN_TOA(KIDIA:KFDIA) = flux%sw_dn(KIDIA:KFDIA,1) + +! Top-of-atmosphere upwelling fluxes - Q.L. +PFLUX_SW_UP_TOA(KIDIA:KFDIA) = flux%sw_up(KIDIA:KFDIA,1) +PFLUX_LW_UP_TOA(KIDIA:KFDIA) = flux%lw_up(KIDIA:KFDIA,1) +PFLUX_SW_UP_TOA_CLEAR(KIDIA:KFDIA) = flux%sw_up_clear(KIDIA:KFDIA,1) +PFLUX_LW_UP_TOA_CLEAR(KIDIA:KFDIA) = flux%lw_up_clear(KIDIA:KFDIA,1) + + + +! Total fluxes - QL +! print*,"flux%sw_dn(KIDIA:KFDIA,:)",flux%sw_dn(KIDIA:KFDIA,:) + +PFLUX_SW_DN(KIDIA:KFDIA,:) = flux%sw_dn(KIDIA:KFDIA,:) +PFLUX_SW_UP(KIDIA:KFDIA,:) = flux%sw_up(KIDIA:KFDIA,:) +PFLUX_LW_DN(KIDIA:KFDIA,:) = flux%lw_dn(KIDIA:KFDIA,:) +PFLUX_LW_UP(KIDIA:KFDIA,:) = flux%lw_up(KIDIA:KFDIA,:) +PFLUX_SW_DN_CLEAR(KIDIA:KFDIA,:) = flux%sw_dn_clear(KIDIA:KFDIA,:) +PFLUX_SW_UP_CLEAR(KIDIA:KFDIA,:) = flux%sw_up_clear(KIDIA:KFDIA,:) +PFLUX_LW_DN_CLEAR(KIDIA:KFDIA,:) = flux%lw_dn_clear(KIDIA:KFDIA,:) +PFLUX_LW_UP_CLEAR(KIDIA:KFDIA,:) = flux%lw_up_clear(KIDIA:KFDIA,:) + + +! print*, "flux%sw_dn_band(:,1,1:10)" +! print*,shape(flux%sw_dn_band) +! print*, flux%sw_dn_band(1,1,1:5) +! print*, flux%sw_dn_band(2,1,1:5) +! print*, flux%sw_dn_band(3,1,1:5) +! print*, flux%sw_dn_band(4,1,1:5) +! print*, flux%sw_dn_band(5,1,1:5) +! pause + +! Compute UV fluxes as weighted sum of appropriate shortwave bands +PFLUX_UV (KIDIA:KFDIA) = 0.0_JPRB +DO JBAND = 1,NWEIGHT_UV + PFLUX_UV(KIDIA:KFDIA) = PFLUX_UV(KIDIA:KFDIA) + WEIGHT_UV(JBAND) & + & * flux%sw_dn_surf_band(IBAND_UV(JBAND),KIDIA:KFDIA) +ENDDO + +! Compute photosynthetically active radiation similarly +PFLUX_PAR (KIDIA:KFDIA) = 0.0_JPRB +PFLUX_PAR_CLEAR(KIDIA:KFDIA) = 0.0_JPRB +DO JBAND = 1,NWEIGHT_PAR + PFLUX_PAR(KIDIA:KFDIA) = PFLUX_PAR(KIDIA:KFDIA) + WEIGHT_PAR(JBAND) & + & * flux%sw_dn_surf_band(IBAND_PAR(JBAND),KIDIA:KFDIA) + PFLUX_PAR_CLEAR(KIDIA:KFDIA) = PFLUX_PAR_CLEAR(KIDIA:KFDIA) & + & + WEIGHT_PAR(JBAND) & + & * flux%sw_dn_surf_clear_band(IBAND_PAR(JBAND),KIDIA:KFDIA) +ENDDO + +! Compute effective broadband emissivity +ZBLACK_BODY_NET_LW = PFLUX_LW_SURF(KIDIA:KFDIA) & + & - RSIGMA*PTEMPERATURE_SKIN(KIDIA:KFDIA)**4 +PEMIS_OUT(KIDIA:KFDIA) = PEMIS(KIDIA:KFDIA) +WHERE (ABS(ZBLACK_BODY_NET_LW) > 1.0E-5) + PEMIS_OUT(KIDIA:KFDIA) = PFLUX_LW(KIDIA:KFDIA,KLEV+1) / ZBLACK_BODY_NET_LW +END WHERE +! Copy longwave derivatives +IF (LAPPROXLWUPDATE) THEN + PLWDERIVATIVE(KIDIA:KFDIA,:) = flux%lw_derivatives(KIDIA:KFDIA,:) +END IF + +! Store the shortwave downwelling fluxes in each albedo band + +IF (LAPPROXSWUPDATE) THEN + PSWDIFFUSEBAND(KIDIA:KFDIA,:) = 0.0_JPRB + PSWDIRECTBAND (KIDIA:KFDIA,:) = 0.0_JPRB + DO JBAND = 1,rad_config%n_bands_sw + JB_ALBEDO = rad_config%i_albedo_from_band_sw(JBAND) + DO JLON = KIDIA,KFDIA + PSWDIFFUSEBAND(JLON,JB_ALBEDO) = PSWDIFFUSEBAND(JLON,JB_ALBEDO) & + & + flux%sw_dn_surf_band(JBAND,JLON) & + & - flux%sw_dn_direct_surf_band(JBAND,JLON) + PSWDIRECTBAND(JLON,JB_ALBEDO) = PSWDIRECTBAND(JLON,JB_ALBEDO) & + & + flux%sw_dn_direct_surf_band(JBAND,JLON) + ENDDO + ENDDO +ENDIF + +CALL single_level%deallocate +CALL thermodynamics%deallocate +CALL gas%deallocate +CALL cloud%deallocate +CALL aerosol%deallocate +CALL flux%deallocate + +IF (LHOOK) CALL DR_HOOK('RADIATION_SCHEME',1,ZHOOK_HANDLE) + +END SUBROUTINE RADIATION_SCHEME + +END MODULE MODI_RADIATION_SCHEME diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/radiation_setup.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/radiation_setup.F90 new file mode 100644 index 0000000000000000000000000000000000000000..045d7a395ce45b36020e410d3542098bb676afe3 --- /dev/null +++ b/src/LIB/RAD/ecrad-1.0.1_mnh/ifs/radiation_setup.F90 @@ -0,0 +1,368 @@ +MODULE RADIATION_SETUP + +! RADIATION_SETUP - Setting up modular radiation scheme +! +! PURPOSE +! ------- +! The modular radiation scheme is contained in a separate +! library. SETUP_RADIATION_SCHEME in this module sets up a small +! number of global variables needed to store the information for it. +! +! Lower case is used for variables and types taken from the +! radiation library +! +! INTERFACE +! --------- +! SETUP_RADIATION_SCHEME is called from SUECRAD. The radiation +! scheme is actually run using the RADIATION_SCHEME routine (not in +! this module). +! +! AUTHOR +! ------ +! Robin Hogan, ECMWF +! Original: 2015-09-16 +! +! MODIFICATIONS +! ------------- +! +!----------------------------------------------------------------------- + + USE PARKIND1, ONLY : JPRB + USE radiation_config, ONLY : config_type, & + & ISolverMcICA, ISolverSpartacus, & + & ILiquidModelSlingo, ILiquidModelSOCRATES, & + & IIceModelFu, IIceModelBaran, & + & IOverlapExponential,IOverlapExponentialRandom + + ! Store configuration information for the radiation scheme in a + ! global variable + !type(config_type) :: rad_config + USE MODD_PARAM_ECRAD_n , ONLY : rad_config + + IMPLICIT NONE + + ! Ultraviolet weightings + INTEGER :: NWEIGHT_UV + INTEGER :: IBAND_UV(100) + REAL(KIND=JPRB) :: WEIGHT_UV(100) + ! Photosynthetically active radiation weightings + INTEGER :: NWEIGHT_PAR + INTEGER :: IBAND_PAR(100) + REAL(KIND=JPRB) :: WEIGHT_PAR(100) + + ! Background aerosol is specified in an ugly way: using the old + ! Tegen fields that are in terms of optical depth, and converted to + ! mass mixing ratio via the relevant mass-extinction coefficient + INTEGER, PARAMETER :: ITYPE_TROP_BG_AER = 8 ! hydrophobic organic + INTEGER, PARAMETER :: ITYPE_STRAT_BG_AER=12 ! non-absorbing sulphate + REAL(KIND=JPRB) :: TROP_BG_AER_MASS_EXT + REAL(KIND=JPRB) :: STRAT_BG_AER_MASS_EXT + +CONTAINS + + ! This routine copies information between the IFS radiation + ! configuration (stored in global variables) and the radiation + ! configuration of the modular radiation scheme (stored in + ! rad_config). The optional input logical LOUTPUT controls whether + ! to print lots of information during the setup stage (default is + ! no). + SUBROUTINE SETUP_RADIATION_SCHEME(LOUTPUT) + + USE YOMHOOK, ONLY : LHOOK, DR_HOOK + USE YOMLUN, ONLY : NULNAM, NULOUT, NULERR + USE YOESRTWN, ONLY : NMPSRTM +! USE YOERAD, ONLY : YRERAD + USE MODD_PARAM_ECRAD_n , ONLY : LAPPROXLWUPDATE, NAERMACC, NLIQOPT, NICEOPT, & + & NLWSOLVER, NSWSOLVER, NLWSCATTERING, NOVLP,CDATADIR + + USE radiation_interface, ONLY : setup_radiation + USE radiation_aerosol_optics, ONLY : dry_aerosol_sw_mass_extinction + +!#include "posname.intfb.h" + + ! Whether or not to provide information on the radiation scheme + ! configuration + LOGICAL, INTENT(IN), OPTIONAL :: LOUTPUT + + ! Verbosity of configuration information 0=none, 1=warning, + ! 2=info, 3=progress, 4=detailed, 5=debug + INTEGER :: IVERBOSESETUP + INTEGER :: ISTAT + + REAL(KIND=JPRB) :: ZHOOK_HANDLE + + IF (LHOOK) CALL DR_HOOK('RADIATION_SETUP:SETUP_RADIATION_SCHEME',0,ZHOOK_HANDLE) + + ! *** GENERAL SETUP *** + + ! Configure verbosity of setup of radiation scheme + IVERBOSESETUP = 4 ! Provide plenty of information + IF (PRESENT(LOUTPUT)) THEN + IF (.NOT. LOUTPUT) THEN + IVERBOSESETUP = 1 ! Warnings and errors only + ENDIF + ENDIF + rad_config%iverbosesetup = IVERBOSESETUP + + IF (IVERBOSESETUP > 1) THEN + WRITE(NULOUT,'(a)') '-------------------------------------------------------------------------------' + WRITE(NULOUT,'(a)') 'RADIATION_SETUP' + ENDIF + + ! Normal operation of the radiation scheme displays only errors + ! and warnings + rad_config%iverbose = 1 + + ! For the time being, ensure a valid default directory name + rad_config%directory_name = CDATADIR + + ! Do we do Hogan and Bozzo (2014) approximate longwave updates? + rad_config%do_lw_derivatives = LAPPROXLWUPDATE + + ! Surface spectral fluxes are needed for spectral shortwave albedo + ! calculation + rad_config%do_surface_sw_spectral_flux = .TRUE. + + + ! *** SETUP GAS OPTICS *** + + ! Assume IFS has already set-up RRTM, so the setup_radiation + ! routine below does not have to + rad_config%do_setup_ifsrrtm = .FALSE. +! rad_config%do_setup_ifsrrtm = .TRUE. + + + ! *** SETUP CLOUD OPTICS *** + + ! Setup liquid optics + IF (NLIQOPT == 2) THEN + rad_config%i_liq_model = ILiquidModelSlingo + ELSEIF (NLIQOPT == 3) THEN + rad_config%i_liq_model = ILiquidModelSOCRATES + ELSE + WRITE(NULERR,'(a,i0)') 'Unavailable liquid optics model in modular radiation scheme: NLIQOPT=', & + & NLIQOPT + CALL ABOR1('RADIATION_SETUP: error interpreting NLIQOPT') + ENDIF + + ! Setup ice optics + IF (NICEOPT == 3) THEN + rad_config%i_ice_model = IIceModelFu + ELSEIF (NICEOPT == 4) THEN + rad_config%i_ice_model = IIceModelBaran + ELSE + WRITE(NULERR,'(a,i0)') 'Unavailable ice optics model in modular radiation scheme: NICEOPT=', & + & NICEOPT + CALL ABOR1('RADIATION_SETUP: error interpreting NICEOPT') + ENDIF + + ! For consistency with earlier versions of the IFS radiation + ! scheme, we perform shortwave delta-Eddington scaling *after* the + ! merge of the cloud, aerosol and gas optical properties. Set + ! this to "false" to do the scaling on the cloud and aerosol + ! properties separately before merging with gases. Note that this + ! is not compatible with the SPARTACUS solver. + rad_config%do_sw_delta_scaling_with_gases = .TRUE. + + ! Use Exponential-Exponential cloud overlap to match original IFS + ! implementation of Raisanen cloud generator + ! rad_config%i_overlap_scheme = IOverlapExponential + rad_config%i_overlap_scheme = NOVLP ! QL + + ! *** SETUP AEROSOLS *** + + rad_config%use_aerosols = .TRUE. + + IF (NAERMACC > 0) THEN + ! Using MACC climatology - in this case the aerosol optics file + ! will be chosen automatically + + ! 12 IFS aerosol classes: 1-3 Sea salt, 4-6 Boucher desert dust, + ! 7 hydrophilic organics, 8 hydrophobic organics, 9&10 + ! hydrophobic black carbon, 11 ammonium sulphate, 12 inactive + ! SO2 + rad_config%n_aerosol_types = 12 + + ! Indices to the aerosol optical properties in + ! aerosol_ifs_rrtm_*.nc, for each class, where negative numbers + ! index hydrophilic aerosol types and positive numbers index + ! hydrophobic aerosol types + rad_config%i_aerosol_type_map = 0 ! There can be up to 256 types + rad_config%i_aerosol_type_map(1:12) = (/ & + & -1, & ! Sea salt, size bin 1 (OPAC) + & -2, & ! Sea salt, size bin 2 (OPAC) + & -3, & ! Sea salt, size bin 3 (OPAC) + & 7, & ! Desert dust, size bin 1 (Woodward 2001) + & 8, & ! Desert dust, size bin 2 (Woodward 2001) + & 9, & ! Desert dust, size bin 3 (Woodward 2001) + & -4, & ! Hydrophilic organic matter (OPAC) + & 10, & ! Hydrophobic organic matter (OPAC) + & 11, & ! Black carbon (Boucher) + & 11, & ! Black carbon (Boucher) + & -5, & ! Ammonium sulphate (OPAC) + & 14 /) ! Stratospheric sulphate (hand edited from OPAC) + + ! Background aerosol mass-extinction coefficients are obtained + ! after the configuration files have been read - see later in + ! this routine. + + ELSE + ! Using Tegen climatology + rad_config%n_aerosol_types = 6 + rad_config%i_aerosol_type_map = 0 ! There can be up to 256 types + rad_config%i_aerosol_type_map(1:6) = (/ & + & 1, & ! Continental background + & 2, & ! Maritime + & 3, & ! Desert + & 4, & ! Urban + & 5, & ! Volcanic active + & 6 /) ! Stratospheric background + + ! Manually set the aerosol optics file name (the directory will + ! be added automatically) + rad_config%aerosol_optics_override_file_name = 'aerosol_ifs_rrtm_tegen.nc' + ENDIF + + ! *** SETUP SOLVER *** + + ! 3D effects are off by default + rad_config%do_3d_effects = .FALSE. + + ! Select longwave solver + SELECT CASE (NLWSOLVER) + CASE(0) + rad_config%i_solver_lw = ISolverMcICA + CASE(1) + rad_config%i_solver_lw = ISolverSpartacus + CASE(2) + rad_config%i_solver_lw = ISolverSpartacus + rad_config%do_3d_effects = .TRUE. + CASE DEFAULT + WRITE(NULERR,'(a,i0)') 'Unknown value for NLWSOLVER: ', NLWSOLVER + CALL ABOR1('RADIATION_SETUP: error interpreting NLWSOLVER') + END SELECT + + ! Select shortwave solver + + SELECT CASE (NSWSOLVER) + CASE(0) + rad_config%i_solver_sw = ISolverMcICA + CASE(1) + rad_config%i_solver_sw = ISolverSpartacus + rad_config%do_3d_effects = .FALSE. + IF (NLWSOLVER == 2) THEN + CALL ABOR1('RADIATION_SETUP: cannot represent 3D effects in LW but not SW') + ENDIF + CASE(2) + rad_config%i_solver_sw = ISolverSpartacus + rad_config%do_3d_effects = .TRUE. + IF (NLWSOLVER == 1) THEN + CALL ABOR1('RADIATION_SETUP: cannot represent 3D effects in SW but not LW') + ENDIF + CASE DEFAULT + WRITE(NULERR,'(a,i0)') 'Unknown value for NSWSOLVER: ', NSWSOLVER + CALL ABOR1('RADIATION_SETUP: error interpreting NSWSOLVER') + END SELECT + + ! SPARTACUS solver requires delta scaling to be done separately + ! for clouds & aerosols + IF (rad_config%i_solver_sw == ISolverSpartacus) THEN + rad_config%do_sw_delta_scaling_with_gases = .FALSE. + ENDIF + + ! Do we represent longwave scattering? + rad_config%do_lw_cloud_scattering = .FALSE. + rad_config%do_lw_aerosol_scattering = .FALSE. + SELECT CASE (NLWSCATTERING) + CASE(1) + rad_config%do_lw_cloud_scattering = .TRUE. + CASE(2) + rad_config%do_lw_cloud_scattering = .TRUE. + IF (NAERMACC > 0) THEN + ! Tegen climatology omits data required to do longwave + ! scattering by aerosols, so only turn this on with a more + ! recent scattering database + rad_config%do_lw_aerosol_scattering = .TRUE. + ENDIF + END SELECT + + + ! *** IMPLEMENT SETTINGS *** + + ! For advanced configuration, the configuration data for the + ! "radiation" project can specified directly in the namelist. + ! However, the variable naming convention is not consistent with + ! the rest of the IFS. For basic configuration there are specific + ! variables in the NAERAD namelist available in the YRERAD + ! structure. + ! CALL POSNAME(NULNAM, 'RADIATION', ISTAT) + ISTAT = 1 ! QL no namelist used, all in NAM_PARAM_ECRAD + SELECT CASE (ISTAT) + CASE(0) + CALL rad_config%read(unit=NULNAM) + CASE(1) + WRITE(NULOUT,'(a)') 'Namelist RADIATION not found, using settings from NAERAD only' + CASE DEFAULT + CALL ABOR1('RADIATION_SETUP: error reading RADIATION section of namelist file') + END SELECT + + ! Print configuration + IF (IVERBOSESETUP > 1) THEN + WRITE(NULOUT,'(a)') 'Radiation scheme settings:' + CALL rad_config%print(IVERBOSE=IVERBOSESETUP) + ENDIF + + ! Use configuration data to set-up radiation scheme, including + ! reading scattering datafiles + CALL setup_radiation(rad_config) + + ! Populate the mapping between the 14 RRTM shortwave bands and the + ! 6 albedo inputs. The mapping according to the stated wavelength + ! ranges of the 6-band model does not match the hard-wired mapping + ! in NMPSRTM, but only the hard-wired values produce sensible + ! results... + rad_config%i_albedo_from_band_sw = NMPSRTM + ! call rad_config%define_sw_albedo_intervals(6, & + ! & (/ 0.25e-6_jprb, 0.44e-6_jprb, 1.19e-6_jprb, & + ! & 2.38e-6_jprb, 4.00e-6_jprb /), (/ 1,2,3,4,5,6 /)) + + ! Likewise between the 16 RRTM longwave bands and the 2 emissivity + ! inputs (info taken from rrtm_ecrt_140gp_mcica.F90) representing + ! outside and inside the window region of the spectrum + ! rad_config%i_emiss_from_band_lw = (/ 1,1,1,1,1,2,2,2,1,1,1,1,1,1,1,1 /) + call rad_config%define_lw_emiss_intervals(3, & + & (/ 8.0e-6_jprb,13.0e-6_jprb /), (/ 1,2,1 /)) + + ! Get spectral weightings for UV and PAR + call rad_config%get_sw_weights(0.2e-6_jprb, 0.4415e-6_jprb, & + & NWEIGHT_UV, IBAND_UV, WEIGHT_UV, 'ultraviolet') + call rad_config%get_sw_weights(0.4e-6_jprb, 0.7e-6_jprb, & + & NWEIGHT_PAR, IBAND_PAR, WEIGHT_PAR, & + & 'photosynthetically active radiation, PAR') + + IF (NAERMACC > 0) THEN + ! With the MACC aerosol climatology we need to add in the + ! background aerosol afterwards using the Tegen arrays. In this + ! case we first configure the background aerosol mass-extinction + ! coefficient at 550 nm, which corresponds to the 10th RRTMG + ! shortwave band. + TROP_BG_AER_MASS_EXT = dry_aerosol_sw_mass_extinction(rad_config, & + & ITYPE_TROP_BG_AER, 10) + STRAT_BG_AER_MASS_EXT = dry_aerosol_sw_mass_extinction(rad_config, & + & ITYPE_STRAT_BG_AER, 10) + + WRITE(NULOUT,'(a,i0)') 'Tropospheric bacground uses aerosol type ', & + & ITYPE_TROP_BG_AER + WRITE(NULOUT,'(a,i0)') 'Stratospheric bacground uses aerosol type ', & + & ITYPE_STRAT_BG_AER + ENDIF + + IF (IVERBOSESETUP > 1) THEN + WRITE(NULOUT,'(a)') '-------------------------------------------------------------------------------' + ENDIF + + IF (LHOOK) CALL DR_HOOK('RADIATION_SETUP:SETUP_RADIATION_SCHEME',1,ZHOOK_HANDLE) + + END SUBROUTINE SETUP_RADIATION_SCHEME + +END MODULE RADIATION_SETUP diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifsaux/yomcst.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifsaux/yomcst.F90 new file mode 100644 index 0000000000000000000000000000000000000000..a26a5740d51a439791235810147b420531d1d4a7 --- /dev/null +++ b/src/LIB/RAD/ecrad-1.0.1_mnh/ifsaux/yomcst.F90 @@ -0,0 +1,29 @@ +MODULE YOMCST + +USE PARKIND1 ,ONLY : JPRB + +IMPLICIT NONE + +SAVE + +! * RPI : number Pi +REAL(KIND=JPRB), PARAMETER :: RPI = 3.14159265358979323846_JPRB +! * RSIGMA : Stefan-Bolzman constant +REAL(KIND=JPRB), PARAMETER :: RSIGMA = 5.67037321e-8_JPRB ! W m-2 K-4 +! * RG : gravity constant +REAL(KIND=JPRB), PARAMETER :: RG = 9.80665_JPRB ! m s-2 +! * RD : R_dry (dry air constant) +REAL(KIND=JPRB), PARAMETER :: RD = 287.058_JPRB! J kg-1 K-1 +! * RMD : dry air molar mass +REAL(KIND=JPRB), PARAMETER :: RMD = 28.9644_JPRB +! * RMV : vapour water molar mass +REAL(KIND=JPRB), PARAMETER :: RMV = 18.0153_JPRB +! * RMO3 : ozone molar mass +REAL(KIND=JPRB), PARAMETER :: RMO3 = 47.9942_JPRB +! * RI0 : solar constant +REAL(KIND=JPRB), PARAMETER :: RI0 = 1366.0_JPRB +! * RDAY : day duration in s +REAL(KIND=JPRB), PARAMETER :: RDAY = 86400_JPRB +! * RTT : freezing temperature +REAL(KIND=JPRB), PARAMETER :: RTT=273.16_JPRB +END MODULE YOMCST diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifsaux/yomlun.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifsaux/yomlun.F90 new file mode 100644 index 0000000000000000000000000000000000000000..f8758823086cffa742e46871378dbd83542dba5d --- /dev/null +++ b/src/LIB/RAD/ecrad-1.0.1_mnh/ifsaux/yomlun.F90 @@ -0,0 +1,15 @@ +MODULE YOMLUN + +USE PARKIND1, ONLY : JPIM +USE YOMLUN_IFSAUX, ONLY : NULOUT, NULERR + +IMPLICIT NONE + +SAVE + +INTEGER(KIND=JPIM) :: NULRAD = 145 + +INTEGER(KIND=JPIM) :: NULNAM = 4 + +! ------------------------------------------------------------------ +END MODULE YOMLUN diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifsrrtm/rrtm_kgb1.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifsrrtm/rrtm_kgb1.F90 new file mode 100644 index 0000000000000000000000000000000000000000..cf0126f5d79d355f315af4fd2944246ccfee52a7 --- /dev/null +++ b/src/LIB/RAD/ecrad-1.0.1_mnh/ifsrrtm/rrtm_kgb1.F90 @@ -0,0 +1,355 @@ +SUBROUTINE RRTM_KGB1(DIRECTORY) + +! Originally by Eli J. Mlawer, Atmospheric & Environmental Research. +! BAND 1: 10-250 cm-1 (low - H2O; high - H2O) +! Reformatted for F90 by JJMorcrette, ECMWF +! R. Elkhatib 12-10-2005 Split for faster and more robust compilation. +! G.Mozdzynski March 2011 read constants from files +! ABozzo May 2013 update to RRTMG v4.85 +! band 1: 10-350 cm-1 +! T. Wilhelmsson and K. Yessad (Oct 2013) Geometry and setup refactoring. +! ------------------------------------------------------------------ + +USE PARKIND1 ,ONLY : JPRB +USE YOMHOOK ,ONLY : LHOOK, DR_HOOK +USE YOMLUN ,ONLY : NULRAD +USE MPL_MODULE,ONLY : MPL_BROADCAST +USE YOMTAG ,ONLY : MTAGRAD +USE YOMMP0 , ONLY : NPROC, MYPROC + +USE YOERRTO1 , ONLY : KAO ,KBO ,SELFREFO ,FRACREFAO ,& + & FRACREFBO ,FORREFO, KAO_MN2, KBO_MN2 + +! ------------------------------------------------------------------ + +IMPLICIT NONE + +CHARACTER(LEN=*), INTENT(IN) :: DIRECTORY + +!CHARACTER(LEN = 80) :: CLZZZ +CHARACTER(LEN = 255) :: CLF1 +REAL(KIND=JPRB) :: ZHOOK_HANDLE + +#include "abor1.intfb.h" + +IF (LHOOK) CALL DR_HOOK('RRTM_KGB1',0,ZHOOK_HANDLE) + +IF( MYPROC==1 )THEN + !CALL GETENV("DATA",CLZZZ) + !IF(CLZZZ /= " ") THEN + ! CLF1=TRIM(CLZZZ) // "/RADRRTM" + CLF1 = DIRECTORY // "/RADRRTM" + WRITE(0,'(A,A)') 'Reading ',TRIM(CLF1) + ! RRTM and SRTM files from ecrad are in big-endian format. + ! Here they are read as big-endian at opening because otherwise MNH assumes littel-endian + ! No need for complation option export GFORTRAN_CONVERT_UNIT="little_endian;big_endian:145" + OPEN(NULRAD,FILE=TRIM(CLF1),FORM="UNFORMATTED",ACTION="READ",access='sequential',ERR=1000,CONVERT="BIG_ENDIAN") + !ELSE + ! OPEN(NULRAD,FILE='RADRRTM',FORM="UNFORMATTED",ACTION="READ",ERR=1000) + !ENDIF + READ(NULRAD,ERR=1001) KAO,KBO +ENDIF +IF( NPROC>1 )THEN + CALL MPL_BROADCAST (KAO,MTAGRAD,1,CDSTRING='RRTM_KGB1:') + CALL MPL_BROADCAST (KBO,MTAGRAD,1,CDSTRING='RRTM_KGB1:') +ENDIF + +! Planck fraction mapping level: P = 212.7250 mbar, T = 223.06 K +FRACREFAO(:) = (/ & + & 2.1227E-01_JPRB,1.8897E-01_JPRB,1.3934E-01_JPRB,1.1557E-01_JPRB,9.5282E-02_JPRB,8.3359E-02_JPRB, & + & 6.5333E-02_JPRB,5.2016E-02_JPRB,3.4272E-02_JPRB,4.0257E-03_JPRB,3.1857E-03_JPRB,2.6014E-03_JPRB, & + & 1.9141E-03_JPRB,1.2612E-03_JPRB,5.3169E-04_JPRB,7.6476E-05_JPRB/) + +! Planck fraction mapping level: P = 212.7250 mbar, T = 223.06 K +! These Planck fractions were calculated using lower atmosphere +! parameters. +FRACREFBO(:) = (/ & + & 2.1227E-01_JPRB,1.8897E-01_JPRB,1.3934E-01_JPRB,1.1557E-01_JPRB,9.5282E-02_JPRB,8.3359E-02_JPRB, & + & 6.5333E-02_JPRB,5.2016E-02_JPRB,3.4272E-02_JPRB,4.0257E-03_JPRB,3.1857E-03_JPRB,2.6014E-03_JPRB, & + & 1.9141E-03_JPRB,1.2612E-03_JPRB,5.3169E-04_JPRB,7.6476E-05_JPRB/) + +! The array FORREFO contains the coefficient of the water vapor +! foreign-continuum (including the energy term). The first +! index refers to reference temperature (296,260,224,260) and +! pressure (970,475,219,3 mbar) levels. The second index +! runs over the g-channel (1 to 16). + + FORREFO(1,:) = (/ & + & 3.6742e-02_JPRB,1.0664e-01_JPRB,2.6132e-01_JPRB,2.7906e-01_JPRB,2.8151e-01_JPRB,2.7465e-01_JPRB, & + & 2.8530e-01_JPRB,2.9123e-01_JPRB,3.0697e-01_JPRB,3.1801e-01_JPRB,3.2444e-01_JPRB,2.7746e-01_JPRB, & + & 3.1994e-01_JPRB,2.9750e-01_JPRB,2.1226e-01_JPRB,1.2847e-01_JPRB/) + FORREFO(2,:) = (/ & + & 4.0450e-02_JPRB,1.1085e-01_JPRB,2.9205e-01_JPRB,3.1934e-01_JPRB,3.1739e-01_JPRB,3.1450e-01_JPRB, & + & 3.2797e-01_JPRB,3.2223e-01_JPRB,3.3099e-01_JPRB,3.4800e-01_JPRB,3.4046e-01_JPRB,3.5700e-01_JPRB, & + & 3.8264e-01_JPRB,3.6679e-01_JPRB,3.3481e-01_JPRB,3.2113e-01_JPRB/) + FORREFO(3,:) = (/ & + & 4.6952e-02_JPRB,1.1999e-01_JPRB,3.1473e-01_JPRB,3.7015e-01_JPRB,3.6913e-01_JPRB,3.6352e-01_JPRB, & + & 3.7754e-01_JPRB,3.7402e-01_JPRB,3.7113e-01_JPRB,3.7720e-01_JPRB,3.8365e-01_JPRB,4.0876e-01_JPRB, & + & 4.2968e-01_JPRB,4.4186e-01_JPRB,4.3468e-01_JPRB,4.7083e-01_JPRB/) + FORREFO(4,:) = (/ & + & 7.0645e-02_JPRB,1.6618e-01_JPRB,2.8516e-01_JPRB,3.1819e-01_JPRB,3.0131e-01_JPRB,2.9552e-01_JPRB, & + & 2.8972e-01_JPRB,2.9348e-01_JPRB,2.8668e-01_JPRB,2.8483e-01_JPRB,2.8130e-01_JPRB,2.7757e-01_JPRB, & + & 2.9735e-01_JPRB,3.1684e-01_JPRB,3.0681e-01_JPRB,3.6778e-01_JPRB/) + + +! ------------------------------------------------------------------ + +! The array KAO contains absorption coefs at the 16 chosen g-values +! for a range of pressure levels > ~100mb and temperatures. The first +! index in the array, JT, which runs from 1 to 5, corresponds to +! different temperatures. More specifically, JT = 3 means that the +! data are for the corresponding TREF for this pressure level, +! JT = 2 refers to the temperatureTREF-15, JT = 1 is for TREF-30, +! JT = 4 is for TREF+15, and JT = 5 is for TREF+30. The second +! index, JP, runs from 1 to 13 and refers to the corresponding +! pressure level in PREF (e.g. JP = 1 is for a pressure of 1053.63 mb). +! The third index, IG, goes from 1 to 16, and tells us which +! g-interval the absorption coefficients are for. + + + +! The array KBO contains absorption coefs at the 16 chosen g-values +! for a range of pressure levels < ~100mb and temperatures. The first +! index in the array, JT, which runs from 1 to 5, corresponds to +! different temperatures. More specifically, JT = 3 means that the +! data are for the reference temperature TREF for this pressure +! level, JT = 2 refers to the temperature TREF-15, JT = 1 is for +! TREF-30, JT = 4 is for TREF+15, and JT = 5 is for TREF+30. +! The second index, JP, runs from 13 to 59 and refers to the JPth +! reference pressure level (see taumol.f for the value of these +! pressure levels in mb). The third index, IG, goes from 1 to 16, +! and tells us which g-interval the absorption coefficients are for. + + + + KAO_MN2(:, 1) = (/ & + & 5.12042E-08_JPRB, 5.51239E-08_JPRB, 5.93436E-08_JPRB, 6.38863E-08_JPRB, 6.87767E-08_JPRB, & + & 7.40415E-08_JPRB, 7.97093E-08_JPRB, 8.58110E-08_JPRB, 9.23797E-08_JPRB, 9.94513E-08_JPRB, & + & 1.07064E-07_JPRB, 1.15260E-07_JPRB, 1.24083E-07_JPRB, 1.33581E-07_JPRB, 1.43807E-07_JPRB, & + & 1.54815E-07_JPRB, 1.66666E-07_JPRB, 1.79424E-07_JPRB, 1.93159E-07_JPRB/) + KAO_MN2(:, 2) = (/ & + & 2.30938E-07_JPRB, 2.41696E-07_JPRB, 2.52955E-07_JPRB, 2.64738E-07_JPRB, 2.77071E-07_JPRB, & + & 2.89978E-07_JPRB, 3.03486E-07_JPRB, 3.17623E-07_JPRB, 3.32419E-07_JPRB, 3.47904E-07_JPRB, & + & 3.64111E-07_JPRB, 3.81072E-07_JPRB, 3.98824E-07_JPRB, 4.17402E-07_JPRB, 4.36846E-07_JPRB, & + & 4.57196E-07_JPRB, 4.78494E-07_JPRB, 5.00784E-07_JPRB, 5.24112E-07_JPRB/) + KAO_MN2(:, 3) = (/ & + & 6.70458E-07_JPRB, 7.04274E-07_JPRB, 7.39795E-07_JPRB, 7.77109E-07_JPRB, 8.16304E-07_JPRB, & + & 8.57476E-07_JPRB, 9.00724E-07_JPRB, 9.46154E-07_JPRB, 9.93876E-07_JPRB, 1.04400E-06_JPRB, & + & 1.09666E-06_JPRB, 1.15197E-06_JPRB, 1.21008E-06_JPRB, 1.27111E-06_JPRB, 1.33522E-06_JPRB, & + & 1.40256E-06_JPRB, 1.47331E-06_JPRB, 1.54761E-06_JPRB, 1.62567E-06_JPRB/) + KAO_MN2(:, 4) = (/ & + & 1.84182E-06_JPRB, 1.89203E-06_JPRB, 1.94360E-06_JPRB, 1.99658E-06_JPRB, 2.05101E-06_JPRB, & + & 2.10692E-06_JPRB, 2.16435E-06_JPRB, 2.22335E-06_JPRB, 2.28396E-06_JPRB, 2.34622E-06_JPRB, & + & 2.41017E-06_JPRB, 2.47587E-06_JPRB, 2.54337E-06_JPRB, 2.61270E-06_JPRB, 2.68392E-06_JPRB, & + & 2.75708E-06_JPRB, 2.83224E-06_JPRB, 2.90944E-06_JPRB, 2.98875E-06_JPRB/) + KAO_MN2(:, 5) = (/ & + & 3.41996E-06_JPRB, 3.32758E-06_JPRB, 3.23770E-06_JPRB, 3.15024E-06_JPRB, 3.06515E-06_JPRB, & + & 2.98235E-06_JPRB, 2.90180E-06_JPRB, 2.82341E-06_JPRB, 2.74715E-06_JPRB, 2.67294E-06_JPRB, & + & 2.60074E-06_JPRB, 2.53049E-06_JPRB, 2.46214E-06_JPRB, 2.39563E-06_JPRB, 2.33092E-06_JPRB, & + & 2.26796E-06_JPRB, 2.20670E-06_JPRB, 2.14709E-06_JPRB, 2.08910E-06_JPRB/) + KAO_MN2(:, 6) = (/ & + & 3.38746E-06_JPRB, 3.25966E-06_JPRB, 3.13669E-06_JPRB, 3.01836E-06_JPRB, 2.90449E-06_JPRB, & + & 2.79491E-06_JPRB, 2.68947E-06_JPRB, 2.58801E-06_JPRB, 2.49037E-06_JPRB, 2.39642E-06_JPRB, & + & 2.30601E-06_JPRB, 2.21902E-06_JPRB, 2.13530E-06_JPRB, 2.05475E-06_JPRB, 1.97723E-06_JPRB, & + & 1.90264E-06_JPRB, 1.83086E-06_JPRB, 1.76179E-06_JPRB, 1.69532E-06_JPRB/) + KAO_MN2(:, 7) = (/ & + & 3.17530E-06_JPRB, 3.07196E-06_JPRB, 2.97199E-06_JPRB, 2.87527E-06_JPRB, 2.78170E-06_JPRB, & + & 2.69118E-06_JPRB, 2.60360E-06_JPRB, 2.51887E-06_JPRB, 2.43690E-06_JPRB, 2.35759E-06_JPRB, & + & 2.28087E-06_JPRB, 2.20664E-06_JPRB, 2.13483E-06_JPRB, 2.06536E-06_JPRB, 1.99814E-06_JPRB, & + & 1.93312E-06_JPRB, 1.87021E-06_JPRB, 1.80934E-06_JPRB, 1.75046E-06_JPRB/) + KAO_MN2(:, 8) = (/ & + & 2.84701E-06_JPRB, 2.77007E-06_JPRB, 2.69521E-06_JPRB, 2.62237E-06_JPRB, 2.55150E-06_JPRB, & + & 2.48254E-06_JPRB, 2.41545E-06_JPRB, 2.35017E-06_JPRB, 2.28666E-06_JPRB, 2.22486E-06_JPRB, & + & 2.16473E-06_JPRB, 2.10623E-06_JPRB, 2.04930E-06_JPRB, 1.99392E-06_JPRB, 1.94003E-06_JPRB, & + & 1.88760E-06_JPRB, 1.83659E-06_JPRB, 1.78695E-06_JPRB, 1.73866E-06_JPRB/) + KAO_MN2(:, 9) = (/ & + & 2.79917E-06_JPRB, 2.73207E-06_JPRB, 2.66658E-06_JPRB, 2.60266E-06_JPRB, 2.54027E-06_JPRB, & + & 2.47937E-06_JPRB, 2.41994E-06_JPRB, 2.36192E-06_JPRB, 2.30530E-06_JPRB, 2.25004E-06_JPRB, & + & 2.19610E-06_JPRB, 2.14346E-06_JPRB, 2.09208E-06_JPRB, 2.04193E-06_JPRB, 1.99298E-06_JPRB, & + & 1.94520E-06_JPRB, 1.89857E-06_JPRB, 1.85306E-06_JPRB, 1.80864E-06_JPRB/) + KAO_MN2(:,10) = (/ & + & 2.74910E-06_JPRB, 2.64462E-06_JPRB, 2.54412E-06_JPRB, 2.44743E-06_JPRB, 2.35442E-06_JPRB, & + & 2.26495E-06_JPRB, 2.17887E-06_JPRB, 2.09606E-06_JPRB, 2.01641E-06_JPRB, 1.93978E-06_JPRB, & + & 1.86606E-06_JPRB, 1.79514E-06_JPRB, 1.72692E-06_JPRB, 1.66129E-06_JPRB, 1.59815E-06_JPRB, & + & 1.53742E-06_JPRB, 1.47899E-06_JPRB, 1.42278E-06_JPRB, 1.36871E-06_JPRB/) + KAO_MN2(:,11) = (/ & + & 2.63952E-06_JPRB, 2.60263E-06_JPRB, 2.56626E-06_JPRB, 2.53039E-06_JPRB, 2.49503E-06_JPRB, & + & 2.46016E-06_JPRB, 2.42578E-06_JPRB, 2.39188E-06_JPRB, 2.35845E-06_JPRB, 2.32549E-06_JPRB, & + & 2.29299E-06_JPRB, 2.26094E-06_JPRB, 2.22934E-06_JPRB, 2.19819E-06_JPRB, 2.16747E-06_JPRB, & + & 2.13717E-06_JPRB, 2.10731E-06_JPRB, 2.07786E-06_JPRB, 2.04882E-06_JPRB/) + KAO_MN2(:,12) = (/ & + & 2.94106E-06_JPRB, 2.82819E-06_JPRB, 2.71966E-06_JPRB, 2.61528E-06_JPRB, 2.51492E-06_JPRB, & + & 2.41841E-06_JPRB, 2.32560E-06_JPRB, 2.23635E-06_JPRB, 2.15053E-06_JPRB, 2.06800E-06_JPRB, & + & 1.98863E-06_JPRB, 1.91232E-06_JPRB, 1.83893E-06_JPRB, 1.76836E-06_JPRB, 1.70049E-06_JPRB, & + & 1.63524E-06_JPRB, 1.57248E-06_JPRB, 1.51214E-06_JPRB, 1.45411E-06_JPRB/) + KAO_MN2(:,13) = (/ & + & 2.94607E-06_JPRB, 2.87369E-06_JPRB, 2.80309E-06_JPRB, 2.73422E-06_JPRB, 2.66705E-06_JPRB, & + & 2.60152E-06_JPRB, 2.53760E-06_JPRB, 2.47526E-06_JPRB, 2.41445E-06_JPRB, 2.35513E-06_JPRB, & + & 2.29726E-06_JPRB, 2.24082E-06_JPRB, 2.18577E-06_JPRB, 2.13207E-06_JPRB, 2.07969E-06_JPRB, & + & 2.02859E-06_JPRB, 1.97875E-06_JPRB, 1.93014E-06_JPRB, 1.88272E-06_JPRB/) + KAO_MN2(:,14) = (/ & + & 2.58051E-06_JPRB, 2.48749E-06_JPRB, 2.39782E-06_JPRB, 2.31139E-06_JPRB, 2.22807E-06_JPRB, & + & 2.14775E-06_JPRB, 2.07033E-06_JPRB, 1.99570E-06_JPRB, 1.92376E-06_JPRB, 1.85441E-06_JPRB, & + & 1.78756E-06_JPRB, 1.72313E-06_JPRB, 1.66101E-06_JPRB, 1.60114E-06_JPRB, 1.54342E-06_JPRB, & + & 1.48778E-06_JPRB, 1.43415E-06_JPRB, 1.38245E-06_JPRB, 1.33262E-06_JPRB/) + KAO_MN2(:,15) = (/ & + & 3.03447E-06_JPRB, 2.88559E-06_JPRB, 2.74401E-06_JPRB, 2.60938E-06_JPRB, 2.48135E-06_JPRB, & + & 2.35961E-06_JPRB, 2.24384E-06_JPRB, 2.13375E-06_JPRB, 2.02906E-06_JPRB, 1.92951E-06_JPRB, & + & 1.83484E-06_JPRB, 1.74481E-06_JPRB, 1.65921E-06_JPRB, 1.57780E-06_JPRB, 1.50039E-06_JPRB, & + & 1.42677E-06_JPRB, 1.35677E-06_JPRB, 1.29020E-06_JPRB, 1.22690E-06_JPRB/) + KAO_MN2(:,16) = (/ & + & 1.48655E-06_JPRB, 1.48283E-06_JPRB, 1.47913E-06_JPRB, 1.47543E-06_JPRB, 1.47174E-06_JPRB, & + & 1.46806E-06_JPRB, 1.46439E-06_JPRB, 1.46072E-06_JPRB, 1.45707E-06_JPRB, 1.45343E-06_JPRB, & + & 1.44979E-06_JPRB, 1.44617E-06_JPRB, 1.44255E-06_JPRB, 1.43894E-06_JPRB, 1.43534E-06_JPRB, & + & 1.43176E-06_JPRB, 1.42817E-06_JPRB, 1.42460E-06_JPRB, 1.42104E-06_JPRB/) + KBO_MN2(:, 1) = (/ & + & 5.12042E-08_JPRB, 5.51239E-08_JPRB, 5.93436E-08_JPRB, 6.38863E-08_JPRB, 6.87767E-08_JPRB, & + & 7.40415E-08_JPRB, 7.97093E-08_JPRB, 8.58110E-08_JPRB, 9.23797E-08_JPRB, 9.94513E-08_JPRB, & + & 1.07064E-07_JPRB, 1.15260E-07_JPRB, 1.24083E-07_JPRB, 1.33581E-07_JPRB, 1.43807E-07_JPRB, & + & 1.54815E-07_JPRB, 1.66666E-07_JPRB, 1.79424E-07_JPRB, 1.93159E-07_JPRB/) + KBO_MN2(:, 2) = (/ & + & 2.30938E-07_JPRB, 2.41696E-07_JPRB, 2.52955E-07_JPRB, 2.64738E-07_JPRB, 2.77071E-07_JPRB, & + & 2.89978E-07_JPRB, 3.03486E-07_JPRB, 3.17623E-07_JPRB, 3.32419E-07_JPRB, 3.47904E-07_JPRB, & + & 3.64111E-07_JPRB, 3.81072E-07_JPRB, 3.98824E-07_JPRB, 4.17402E-07_JPRB, 4.36846E-07_JPRB, & + & 4.57196E-07_JPRB, 4.78494E-07_JPRB, 5.00784E-07_JPRB, 5.24112E-07_JPRB/) + KBO_MN2(:, 3) = (/ & + & 6.70458E-07_JPRB, 7.04274E-07_JPRB, 7.39795E-07_JPRB, 7.77109E-07_JPRB, 8.16304E-07_JPRB, & + & 8.57476E-07_JPRB, 9.00724E-07_JPRB, 9.46154E-07_JPRB, 9.93876E-07_JPRB, 1.04400E-06_JPRB, & + & 1.09666E-06_JPRB, 1.15197E-06_JPRB, 1.21008E-06_JPRB, 1.27111E-06_JPRB, 1.33522E-06_JPRB, & + & 1.40256E-06_JPRB, 1.47331E-06_JPRB, 1.54761E-06_JPRB, 1.62567E-06_JPRB/) + KBO_MN2(:, 4) = (/ & + & 1.84182E-06_JPRB, 1.89203E-06_JPRB, 1.94360E-06_JPRB, 1.99658E-06_JPRB, 2.05101E-06_JPRB, & + & 2.10692E-06_JPRB, 2.16435E-06_JPRB, 2.22335E-06_JPRB, 2.28396E-06_JPRB, 2.34622E-06_JPRB, & + & 2.41017E-06_JPRB, 2.47587E-06_JPRB, 2.54337E-06_JPRB, 2.61270E-06_JPRB, 2.68392E-06_JPRB, & + & 2.75708E-06_JPRB, 2.83224E-06_JPRB, 2.90944E-06_JPRB, 2.98875E-06_JPRB/) + KBO_MN2(:, 5) = (/ & + & 3.41996E-06_JPRB, 3.32758E-06_JPRB, 3.23770E-06_JPRB, 3.15024E-06_JPRB, 3.06515E-06_JPRB, & + & 2.98235E-06_JPRB, 2.90180E-06_JPRB, 2.82341E-06_JPRB, 2.74715E-06_JPRB, 2.67294E-06_JPRB, & + & 2.60074E-06_JPRB, 2.53049E-06_JPRB, 2.46214E-06_JPRB, 2.39563E-06_JPRB, 2.33092E-06_JPRB, & + & 2.26796E-06_JPRB, 2.20670E-06_JPRB, 2.14709E-06_JPRB, 2.08910E-06_JPRB/) + KBO_MN2(:, 6) = (/ & + & 3.38746E-06_JPRB, 3.25966E-06_JPRB, 3.13669E-06_JPRB, 3.01836E-06_JPRB, 2.90449E-06_JPRB, & + & 2.79491E-06_JPRB, 2.68947E-06_JPRB, 2.58801E-06_JPRB, 2.49037E-06_JPRB, 2.39642E-06_JPRB, & + & 2.30601E-06_JPRB, 2.21902E-06_JPRB, 2.13530E-06_JPRB, 2.05475E-06_JPRB, 1.97723E-06_JPRB, & + & 1.90264E-06_JPRB, 1.83086E-06_JPRB, 1.76179E-06_JPRB, 1.69532E-06_JPRB/) + KBO_MN2(:, 7) = (/ & + & 3.17530E-06_JPRB, 3.07196E-06_JPRB, 2.97199E-06_JPRB, 2.87527E-06_JPRB, 2.78170E-06_JPRB, & + & 2.69118E-06_JPRB, 2.60360E-06_JPRB, 2.51887E-06_JPRB, 2.43690E-06_JPRB, 2.35759E-06_JPRB, & + & 2.28087E-06_JPRB, 2.20664E-06_JPRB, 2.13483E-06_JPRB, 2.06536E-06_JPRB, 1.99814E-06_JPRB, & + & 1.93312E-06_JPRB, 1.87021E-06_JPRB, 1.80934E-06_JPRB, 1.75046E-06_JPRB/) + KBO_MN2(:, 8) = (/ & + & 2.84701E-06_JPRB, 2.77007E-06_JPRB, 2.69521E-06_JPRB, 2.62237E-06_JPRB, 2.55150E-06_JPRB, & + & 2.48254E-06_JPRB, 2.41545E-06_JPRB, 2.35017E-06_JPRB, 2.28666E-06_JPRB, 2.22486E-06_JPRB, & + & 2.16473E-06_JPRB, 2.10623E-06_JPRB, 2.04930E-06_JPRB, 1.99392E-06_JPRB, 1.94003E-06_JPRB, & + & 1.88760E-06_JPRB, 1.83659E-06_JPRB, 1.78695E-06_JPRB, 1.73866E-06_JPRB/) + KBO_MN2(:, 9) = (/ & + & 2.79917E-06_JPRB, 2.73207E-06_JPRB, 2.66658E-06_JPRB, 2.60266E-06_JPRB, 2.54027E-06_JPRB, & + & 2.47937E-06_JPRB, 2.41994E-06_JPRB, 2.36192E-06_JPRB, 2.30530E-06_JPRB, 2.25004E-06_JPRB, & + & 2.19610E-06_JPRB, 2.14346E-06_JPRB, 2.09208E-06_JPRB, 2.04193E-06_JPRB, 1.99298E-06_JPRB, & + & 1.94520E-06_JPRB, 1.89857E-06_JPRB, 1.85306E-06_JPRB, 1.80864E-06_JPRB/) + KBO_MN2(:,10) = (/ & + & 2.74910E-06_JPRB, 2.64462E-06_JPRB, 2.54412E-06_JPRB, 2.44743E-06_JPRB, 2.35442E-06_JPRB, & + & 2.26495E-06_JPRB, 2.17887E-06_JPRB, 2.09606E-06_JPRB, 2.01641E-06_JPRB, 1.93978E-06_JPRB, & + & 1.86606E-06_JPRB, 1.79514E-06_JPRB, 1.72692E-06_JPRB, 1.66129E-06_JPRB, 1.59815E-06_JPRB, & + & 1.53742E-06_JPRB, 1.47899E-06_JPRB, 1.42278E-06_JPRB, 1.36871E-06_JPRB/) + KBO_MN2(:,11) = (/ & + & 2.63952E-06_JPRB, 2.60263E-06_JPRB, 2.56626E-06_JPRB, 2.53039E-06_JPRB, 2.49503E-06_JPRB, & + & 2.46016E-06_JPRB, 2.42578E-06_JPRB, 2.39188E-06_JPRB, 2.35845E-06_JPRB, 2.32549E-06_JPRB, & + & 2.29299E-06_JPRB, 2.26094E-06_JPRB, 2.22934E-06_JPRB, 2.19819E-06_JPRB, 2.16747E-06_JPRB, & + & 2.13717E-06_JPRB, 2.10731E-06_JPRB, 2.07786E-06_JPRB, 2.04882E-06_JPRB/) + KBO_MN2(:,12) = (/ & + & 2.94106E-06_JPRB, 2.82819E-06_JPRB, 2.71966E-06_JPRB, 2.61528E-06_JPRB, 2.51492E-06_JPRB, & + & 2.41841E-06_JPRB, 2.32560E-06_JPRB, 2.23635E-06_JPRB, 2.15053E-06_JPRB, 2.06800E-06_JPRB, & + & 1.98863E-06_JPRB, 1.91232E-06_JPRB, 1.83893E-06_JPRB, 1.76836E-06_JPRB, 1.70049E-06_JPRB, & + & 1.63524E-06_JPRB, 1.57248E-06_JPRB, 1.51214E-06_JPRB, 1.45411E-06_JPRB/) + KBO_MN2(:,13) = (/ & + & 2.94607E-06_JPRB, 2.87369E-06_JPRB, 2.80309E-06_JPRB, 2.73422E-06_JPRB, 2.66705E-06_JPRB, & + & 2.60152E-06_JPRB, 2.53760E-06_JPRB, 2.47526E-06_JPRB, 2.41445E-06_JPRB, 2.35513E-06_JPRB, & + & 2.29726E-06_JPRB, 2.24082E-06_JPRB, 2.18577E-06_JPRB, 2.13207E-06_JPRB, 2.07969E-06_JPRB, & + & 2.02859E-06_JPRB, 1.97875E-06_JPRB, 1.93014E-06_JPRB, 1.88272E-06_JPRB/) + KBO_MN2(:,14) = (/ & + & 2.58051E-06_JPRB, 2.48749E-06_JPRB, 2.39782E-06_JPRB, 2.31139E-06_JPRB, 2.22807E-06_JPRB, & + & 2.14775E-06_JPRB, 2.07033E-06_JPRB, 1.99570E-06_JPRB, 1.92376E-06_JPRB, 1.85441E-06_JPRB, & + & 1.78756E-06_JPRB, 1.72313E-06_JPRB, 1.66101E-06_JPRB, 1.60114E-06_JPRB, 1.54342E-06_JPRB, & + & 1.48778E-06_JPRB, 1.43415E-06_JPRB, 1.38245E-06_JPRB, 1.33262E-06_JPRB/) + KBO_MN2(:,15) = (/ & + & 3.03447E-06_JPRB, 2.88559E-06_JPRB, 2.74401E-06_JPRB, 2.60938E-06_JPRB, 2.48135E-06_JPRB, & + & 2.35961E-06_JPRB, 2.24384E-06_JPRB, 2.13375E-06_JPRB, 2.02906E-06_JPRB, 1.92951E-06_JPRB, & + & 1.83484E-06_JPRB, 1.74481E-06_JPRB, 1.65921E-06_JPRB, 1.57780E-06_JPRB, 1.50039E-06_JPRB, & + & 1.42677E-06_JPRB, 1.35677E-06_JPRB, 1.29020E-06_JPRB, 1.22690E-06_JPRB/) + KBO_MN2(:,16) = (/ & + & 1.48655E-06_JPRB, 1.48283E-06_JPRB, 1.47913E-06_JPRB, 1.47543E-06_JPRB, 1.47174E-06_JPRB, & + & 1.46806E-06_JPRB, 1.46439E-06_JPRB, 1.46072E-06_JPRB, 1.45707E-06_JPRB, 1.45343E-06_JPRB, & + & 1.44979E-06_JPRB, 1.44617E-06_JPRB, 1.44255E-06_JPRB, 1.43894E-06_JPRB, 1.43534E-06_JPRB, & + & 1.43176E-06_JPRB, 1.42817E-06_JPRB, 1.42460E-06_JPRB, 1.42104E-06_JPRB/) + + +! The array SELFREFO contains the coefficient of the water vapor +! self-continuum (including the energy term). The first index +! refers to temperature in 7.2 degree increments. For instance, +! JT = 1 refers to a temperature of 245.6, JT = 2 refers to 252.8, +! etc. The second index runs over the g-channel (1 to 16). + + SELFREFO(:, 1) = (/ & + & 2.16803e+00_JPRB, 1.98236e+00_JPRB, 1.81260e+00_JPRB, 1.65737e+00_JPRB, 1.51544e+00_JPRB, & + & 1.38567e+00_JPRB, 1.26700e+00_JPRB, 1.15850e+00_JPRB, 1.05929e+00_JPRB, 9.68576e-01_JPRB/) + SELFREFO(:, 2) = (/ & + & 3.70149e+00_JPRB, 3.43145e+00_JPRB, 3.18110e+00_JPRB, 2.94902e+00_JPRB, 2.73387e+00_JPRB, & + & 2.53441e+00_JPRB, 2.34951e+00_JPRB, 2.17810e+00_JPRB, 2.01919e+00_JPRB, 1.87188e+00_JPRB/) + SELFREFO(:, 3) = (/ & + & 6.17433e+00_JPRB, 5.62207e+00_JPRB, 5.11920e+00_JPRB, 4.66131e+00_JPRB, 4.24438e+00_JPRB, & + & 3.86474e+00_JPRB, 3.51906e+00_JPRB, 3.20430e+00_JPRB, 2.91769e+00_JPRB, 2.65672e+00_JPRB/) + SELFREFO(:, 4) = (/ & + & 6.56459e+00_JPRB, 5.94787e+00_JPRB, 5.38910e+00_JPRB, 4.88282e+00_JPRB, 4.42410e+00_JPRB, & + & 4.00848e+00_JPRB, 3.63190e+00_JPRB, 3.29070e+00_JPRB, 2.98155e+00_JPRB, 2.70145e+00_JPRB/) + SELFREFO(:, 5) = (/ & + & 6.49581e+00_JPRB, 5.91114e+00_JPRB, 5.37910e+00_JPRB, 4.89494e+00_JPRB, 4.45436e+00_JPRB, & + & 4.05344e+00_JPRB, 3.68860e+00_JPRB, 3.35660e+00_JPRB, 3.05448e+00_JPRB, 2.77956e+00_JPRB/) + SELFREFO(:, 6) = (/ & + & 6.50189e+00_JPRB, 5.89381e+00_JPRB, 5.34260e+00_JPRB, 4.84294e+00_JPRB, 4.39001e+00_JPRB, & + & 3.97944e+00_JPRB, 3.60727e+00_JPRB, 3.26990e+00_JPRB, 2.96409e+00_JPRB, 2.68687e+00_JPRB/) + SELFREFO(:, 7) = (/ & + & 6.64768e+00_JPRB, 6.01719e+00_JPRB, 5.44650e+00_JPRB, 4.92993e+00_JPRB, 4.46236e+00_JPRB, & + & 4.03914e+00_JPRB, 3.65605e+00_JPRB, 3.30930e+00_JPRB, 2.99543e+00_JPRB, 2.71134e+00_JPRB/) + SELFREFO(:, 8) = (/ & + & 6.43744e+00_JPRB, 5.87166e+00_JPRB, 5.35560e+00_JPRB, 4.88490e+00_JPRB, 4.45557e+00_JPRB, & + & 4.06397e+00_JPRB, 3.70679e+00_JPRB, 3.38100e+00_JPRB, 3.08384e+00_JPRB, 2.81281e+00_JPRB/) + SELFREFO(:, 9) = (/ & + & 6.55466e+00_JPRB, 5.99777e+00_JPRB, 5.48820e+00_JPRB, 5.02192e+00_JPRB, 4.59525e+00_JPRB, & + & 4.20484e+00_JPRB, 3.84759e+00_JPRB, 3.52070e+00_JPRB, 3.22158e+00_JPRB, 2.94787e+00_JPRB/) + SELFREFO(:,10) = (/ & + & 6.84510e+00_JPRB, 6.26933e+00_JPRB, 5.74200e+00_JPRB, 5.25902e+00_JPRB, 4.81667e+00_JPRB, & + & 4.41152e+00_JPRB, 4.04046e+00_JPRB, 3.70060e+00_JPRB, 3.38933e+00_JPRB, 3.10424e+00_JPRB/) + SELFREFO(:,11) = (/ & + & 6.83128e+00_JPRB, 6.25536e+00_JPRB, 5.72800e+00_JPRB, 5.24510e+00_JPRB, 4.80291e+00_JPRB, & + & 4.39799e+00_JPRB, 4.02722e+00_JPRB, 3.68770e+00_JPRB, 3.37681e+00_JPRB, 3.09212e+00_JPRB/) + SELFREFO(:,12) = (/ & + & 7.35969e+00_JPRB, 6.61719e+00_JPRB, 5.94960e+00_JPRB, 5.34936e+00_JPRB, 4.80968e+00_JPRB, & + & 4.32445e+00_JPRB, 3.88817e+00_JPRB, 3.49590e+00_JPRB, 3.14321e+00_JPRB, 2.82610e+00_JPRB/) + SELFREFO(:,13) = (/ & + & 7.50064e+00_JPRB, 6.80749e+00_JPRB, 6.17840e+00_JPRB, 5.60744e+00_JPRB, 5.08925e+00_JPRB, & + & 4.61894e+00_JPRB, 4.19210e+00_JPRB, 3.80470e+00_JPRB, 3.45310e+00_JPRB, 3.13399e+00_JPRB/) + SELFREFO(:,14) = (/ & + & 7.40801e+00_JPRB, 6.71328e+00_JPRB, 6.08370e+00_JPRB, 5.51316e+00_JPRB, 4.99613e+00_JPRB, & + & 4.52759e+00_JPRB, 4.10298e+00_JPRB, 3.71820e+00_JPRB, 3.36950e+00_JPRB, 3.05351e+00_JPRB/) + SELFREFO(:,15) = (/ & + & 7.51895e+00_JPRB, 6.68846e+00_JPRB, 5.94970e+00_JPRB, 5.29254e+00_JPRB, 4.70796e+00_JPRB, & + & 4.18795e+00_JPRB, 3.72538e+00_JPRB, 3.31390e+00_JPRB, 2.94787e+00_JPRB, 2.62227e+00_JPRB/) + SELFREFO(:,16) = (/ & + & 7.84774e+00_JPRB, 6.80673e+00_JPRB, 5.90380e+00_JPRB, 5.12065e+00_JPRB, 4.44138e+00_JPRB, & + & 3.85223e+00_JPRB, 3.34122e+00_JPRB, 2.89800e+00_JPRB, 2.51357e+00_JPRB, 2.18014e+00_JPRB/) + + + + + +IF (LHOOK) CALL DR_HOOK('RRTM_KGB1',1,ZHOOK_HANDLE) +RETURN + +1000 CONTINUE +CALL ABOR1("RRTM_KGB1:ERROR OPENING FILE RADRRTM") +1001 CONTINUE +CALL ABOR1("RRTM_KGB1:ERROR READING FILE RADRRTM") + +! ----------------------------------------------------------------- +END SUBROUTINE RRTM_KGB1 diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifsrrtm/srtm_gas_optical_depth.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifsrrtm/srtm_gas_optical_depth.F90 new file mode 100644 index 0000000000000000000000000000000000000000..db5aaf1383b545902a87aeae434f979d9157b279 --- /dev/null +++ b/src/LIB/RAD/ecrad-1.0.1_mnh/ifsrrtm/srtm_gas_optical_depth.F90 @@ -0,0 +1,338 @@ +#ifdef RS6K +@PROCESS HOT(NOVECTOR) NOSTRICT +#endif +SUBROUTINE SRTM_GAS_OPTICAL_DEPTH & + & ( KIDIA , KFDIA , KLEV , PONEMINUS, & + & PRMU0, & + & KLAYTROP,& + & PCOLCH4 , PCOLCO2 , PCOLH2O , PCOLMOL , PCOLO2 , PCOLO3 ,& + & PFORFAC , PFORFRAC , KINDFOR , PSELFFAC, PSELFFRAC, KINDSELF ,& + & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,& + & KJP , KJT , KJT1 ,& + !-- output arrays + & POD, PSSA, PINCSOL) + + +!**** *SRTM_GAS_OPTICAL_DEPTH* - SPECTRAL LOOP TO COMPUTE THE SHORTWAVE RADIATION FLUXES. + +! PURPOSE. +! -------- + +! COMPUTE THE GAS OPTICAL DEPTH AT EACH SHORTWAVE G POINT + +!** INTERFACE. +! ---------- + +! *SRTM_GAS_OPTICAL_DEPTH* IS CALLED FROM THE NEW RADIATION SCHEME + +! IMPLICIT ARGUMENTS : +! -------------------- + +! ==== INPUTS === +! ==== OUTPUTS === + +! METHOD. +! ------- + +! EXTERNALS. +! ---------- + +! REFERENCE. +! ---------- + +! SEE RADIATION'S PART OF THE ECMWF RESEARCH DEPARTMENT +! DOCUMENTATION +! AUTHOR. +! ------- +! ADAPTED FROM SRTM_SPCVRT_MCICA (BY JEAN-JACQUES MORCRETTE) BY +! ROBIN HOGAN +! +! MODIFICATIONS. +! -------------- +! ORIGINAL : 2015-07-16 + +! ------------------------------------------------------------------ + +USE PARKIND1 , ONLY : JPIM, JPRB +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE PARSRTM , ONLY : JPB1, JPB2 +USE YOESRTM , ONLY : JPGPT +USE YOESRTWN , ONLY : NGC +USE YOMDIMV , ONLY : YRDIMV + +IMPLICIT NONE + +! ------------------------------------------------------------------ + +!* 0.1 ARGUMENTS +! --------- + +INTEGER(KIND=JPIM),INTENT(IN) :: KIDIA, KFDIA +INTEGER(KIND=JPIM),INTENT(IN) :: KLEV +REAL(KIND=JPRB) ,INTENT(IN) :: PONEMINUS(KIDIA:KFDIA) +REAL(KIND=JPRB) ,INTENT(IN) :: PRMU0(KIDIA:KFDIA) +INTEGER(KIND=JPIM),INTENT(IN) :: KLAYTROP(KIDIA:KFDIA) +REAL(KIND=JPRB) ,INTENT(IN) :: PCOLCH4(KIDIA:KFDIA,YRDIMV%NFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PCOLCO2(KIDIA:KFDIA,YRDIMV%NFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PCOLH2O(KIDIA:KFDIA,YRDIMV%NFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PCOLMOL(KIDIA:KFDIA,YRDIMV%NFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PCOLO2(KIDIA:KFDIA,YRDIMV%NFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PCOLO3(KIDIA:KFDIA,YRDIMV%NFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PFORFAC(KIDIA:KFDIA,YRDIMV%NFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PFORFRAC(KIDIA:KFDIA,YRDIMV%NFLEVG) +INTEGER(KIND=JPIM),INTENT(IN) :: KINDFOR(KIDIA:KFDIA,YRDIMV%NFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PSELFFAC(KIDIA:KFDIA,YRDIMV%NFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PSELFFRAC(KIDIA:KFDIA,YRDIMV%NFLEVG) +INTEGER(KIND=JPIM),INTENT(IN) :: KINDSELF(KIDIA:KFDIA,YRDIMV%NFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PFAC00(KIDIA:KFDIA,YRDIMV%NFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PFAC01(KIDIA:KFDIA,YRDIMV%NFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PFAC10(KIDIA:KFDIA,YRDIMV%NFLEVG) +REAL(KIND=JPRB) ,INTENT(IN) :: PFAC11(KIDIA:KFDIA,YRDIMV%NFLEVG) +INTEGER(KIND=JPIM),INTENT(IN) :: KJP(KIDIA:KFDIA,YRDIMV%NFLEVG) +INTEGER(KIND=JPIM),INTENT(IN) :: KJT(KIDIA:KFDIA,YRDIMV%NFLEVG) +INTEGER(KIND=JPIM),INTENT(IN) :: KJT1(KIDIA:KFDIA,YRDIMV%NFLEVG) + +REAL(KIND=JPRB) ,INTENT(OUT) :: POD(KIDIA:KFDIA,YRDIMV%NFLEVG,JPGPT) ! Optical depth +REAL(KIND=JPRB) ,INTENT(OUT) :: PSSA(KIDIA:KFDIA,YRDIMV%NFLEVG,JPGPT) ! Single scattering albedo +REAL(KIND=JPRB) ,INTENT(OUT) :: PINCSOL(KIDIA:KFDIA,JPGPT) ! Incoming solar flux + + +! ------------------------------------------------------------------ + +INTEGER(KIND=JPIM) :: IB1, IB2, IBM, IGT, IW(KIDIA:KFDIA), JB, JG, JK, JL, IC, ICOUNT + +INTEGER(KIND=JPIM) :: IND(KFDIA-KIDIA+1) + + +!-- Output of SRTM_TAUMOLn routines +REAL(KIND=JPRB) :: ZTAUG(KIDIA:KFDIA,YRDIMV%NFLEVG,16) ! Absorption optical depth +REAL(KIND=JPRB) :: ZTAUR(KIDIA:KFDIA,YRDIMV%NFLEVG,16) ! Rayleigh optical depth +REAL(KIND=JPRB) :: ZSFLXZEN(KIDIA:KFDIA,16) ! Incoming solar flux + + +REAL(KIND=JPRB) :: ZTAU, ZPAO, ZPTO +REAL(KIND=JPRB) :: ZPAOJ(KIDIA:KFDIA,YRDIMV%NFLEVG) +REAL(KIND=JPRB) :: ZPTOJ(KIDIA:KFDIA,YRDIMV%NFLEVG) +REAL(KIND=JPRB) :: ZRMU0D(KIDIA:KFDIA) + +REAL(KIND=JPRB) :: ZHOOK_HANDLE + + +#include "srtm_taumol16.intfb.h" +#include "srtm_taumol17.intfb.h" +#include "srtm_taumol18.intfb.h" +#include "srtm_taumol19.intfb.h" +#include "srtm_taumol20.intfb.h" +#include "srtm_taumol21.intfb.h" +#include "srtm_taumol22.intfb.h" +#include "srtm_taumol23.intfb.h" +#include "srtm_taumol24.intfb.h" +#include "srtm_taumol25.intfb.h" +#include "srtm_taumol26.intfb.h" +#include "srtm_taumol27.intfb.h" +#include "srtm_taumol28.intfb.h" +#include "srtm_taumol29.intfb.h" + +! ------------------------------------------------------------------ +ASSOCIATE(NFLEVG=>YRDIMV%NFLEVG) +IF (LHOOK) CALL DR_HOOK('SRTM_GAS_OPTICAL_DEPTH',0,ZHOOK_HANDLE) + +IB1=JPB1 +IB2=JPB2 + +IC=0 +DO JL = KIDIA, KFDIA + IF (PRMU0(JL) > 0.0_JPRB) THEN + IC=IC+1 + IND(IC)=JL + IW(JL)=0 + ENDIF +ENDDO +ICOUNT=IC +IF(ICOUNT==0)THEN + POD = 0.0 + PSSA = 0.0 + PINCSOL = 0.0 + IF (LHOOK) CALL DR_HOOK('SRTM_SPCVRT_MCICA',1,ZHOOK_HANDLE) + RETURN +ENDIF + +JB=IB1-1 +DO JB = IB1, IB2 + DO IC=1,ICOUNT + JL=IND(IC) + IBM = JB-15 + IGT = NGC(IBM) + ENDDO + + !-- for each band, computes the gaseous and Rayleigh optical thickness + ! for all g-points within the band + + IF (JB == 16) THEN + CALL SRTM_TAUMOL16 & + & ( KIDIA , KFDIA , KLEV ,& + & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,& + & KJP , KJT , KJT1 , PONEMINUS,& + & PCOLH2O , PCOLCH4 , PCOLMOL ,& + & KLAYTROP, PSELFFAC , PSELFFRAC, KINDSELF, PFORFAC , PFORFRAC, KINDFOR ,& + & ZSFLXZEN, ZTAUG , ZTAUR , PRMU0 & + & ) + + ELSEIF (JB == 17) THEN + CALL SRTM_TAUMOL17 & + & ( KIDIA , KFDIA , KLEV ,& + & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,& + & KJP , KJT , KJT1 , PONEMINUS ,& + & PCOLH2O , PCOLCO2 , PCOLMOL ,& + & KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,& + & ZSFLXZEN, ZTAUG , ZTAUR , PRMU0 & + & ) + + ELSEIF (JB == 18) THEN + CALL SRTM_TAUMOL18 & + & ( KIDIA , KFDIA , KLEV ,& + & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,& + & KJP , KJT , KJT1 , PONEMINUS ,& + & PCOLH2O , PCOLCH4 , PCOLMOL ,& + & KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,& + & ZSFLXZEN, ZTAUG , ZTAUR , PRMU0 & + & ) + + ELSEIF (JB == 19) THEN + CALL SRTM_TAUMOL19 & + & ( KIDIA , KFDIA , KLEV ,& + & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,& + & KJP , KJT , KJT1 , PONEMINUS ,& + & PCOLH2O , PCOLCO2 , PCOLMOL ,& + & KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,& + & ZSFLXZEN, ZTAUG , ZTAUR , PRMU0 & + & ) + + ELSEIF (JB == 20) THEN + CALL SRTM_TAUMOL20 & + & ( KIDIA , KFDIA , KLEV ,& + & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,& + & KJP , KJT , KJT1 ,& + & PCOLH2O , PCOLCH4 , PCOLMOL ,& + & KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,& + & ZSFLXZEN, ZTAUG , ZTAUR , PRMU0 & + & ) + + ELSEIF (JB == 21) THEN + CALL SRTM_TAUMOL21 & + & ( KIDIA , KFDIA , KLEV ,& + & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,& + & KJP , KJT , KJT1 , PONEMINUS ,& + & PCOLH2O , PCOLCO2 , PCOLMOL ,& + & KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,& + & ZSFLXZEN, ZTAUG , ZTAUR , PRMU0 & + & ) + + ELSEIF (JB == 22) THEN + CALL SRTM_TAUMOL22 & + & ( KIDIA , KFDIA , KLEV ,& + & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,& + & KJP , KJT , KJT1 , PONEMINUS ,& + & PCOLH2O , PCOLMOL , PCOLO2 ,& + & KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,& + & ZSFLXZEN, ZTAUG , ZTAUR , PRMU0 & + & ) + + ELSEIF (JB == 23) THEN + CALL SRTM_TAUMOL23 & + & ( KIDIA , KFDIA , KLEV ,& + & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,& + & KJP , KJT , KJT1 ,& + & PCOLH2O , PCOLMOL ,& + & KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,& + & ZSFLXZEN, ZTAUG , ZTAUR , PRMU0 & + & ) + + ELSEIF (JB == 24) THEN + CALL SRTM_TAUMOL24 & + & ( KIDIA , KFDIA , KLEV ,& + & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,& + & KJP , KJT , KJT1 , PONEMINUS ,& + & PCOLH2O , PCOLMOL , PCOLO2 , PCOLO3 ,& + & KLAYTROP, PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,& + & ZSFLXZEN, ZTAUG , ZTAUR , PRMU0 & + & ) + + ELSEIF (JB == 25) THEN + !--- visible 16000-22650 cm-1 0.4415 - 0.6250 um + CALL SRTM_TAUMOL25 & + & ( KIDIA , KFDIA , KLEV ,& + & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,& + & KJP , KJT , KJT1 ,& + & PCOLH2O , PCOLMOL , PCOLO3 ,& + & KLAYTROP ,& + & ZSFLXZEN, ZTAUG , ZTAUR , PRMU0 & + & ) + + ELSEIF (JB == 26) THEN + !--- UV-A 22650-29000 cm-1 0.3448 - 0.4415 um + CALL SRTM_TAUMOL26 & + & ( KIDIA , KFDIA , KLEV ,& + & PCOLMOL ,KLAYTROP,& + & ZSFLXZEN, ZTAUG , ZTAUR , PRMU0 & + & ) + + ELSEIF (JB == 27) THEN + !--- UV-B 29000-38000 cm-1 0.2632 - 0.3448 um + CALL SRTM_TAUMOL27 & + & ( KIDIA , KFDIA , KLEV ,& + & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,& + & KJP , KJT , KJT1 ,& + & PCOLMOL , PCOLO3 ,& + & KLAYTROP ,& + & ZSFLXZEN, ZTAUG , ZTAUR , PRMU0 & + & ) + + ELSEIF (JB == 28) THEN + !--- UV-C 38000-50000 cm-1 0.2000 - 0.2632 um + CALL SRTM_TAUMOL28 & + & ( KIDIA , KFDIA , KLEV ,& + & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,& + & KJP , KJT , KJT1 , PONEMINUS ,& + & PCOLMOL , PCOLO2 , PCOLO3 ,& + & KLAYTROP ,& + & ZSFLXZEN, ZTAUG , ZTAUR , PRMU0 & + & ) + + ELSEIF (JB == 29) THEN + CALL SRTM_TAUMOL29 & + & ( KIDIA , KFDIA , KLEV ,& + & PFAC00 , PFAC01 , PFAC10 , PFAC11 ,& + & KJP , KJT , KJT1 ,& + & PCOLH2O , PCOLCO2 , PCOLMOL ,& + & KLAYTROP , PSELFFAC, PSELFFRAC, KINDSELF , PFORFAC, PFORFRAC, KINDFOR ,& + & ZSFLXZEN , ZTAUG , ZTAUR , PRMU0 & + & ) + + ENDIF + + DO JG=1,IGT + DO IC=1,ICOUNT + JL=IND(IC) + IW(JL)=IW(JL)+1 + + ! Incoming solar flux into plane perp to incoming radiation + PINCSOL(JL,IW(JL)) = ZSFLXZEN(JL,JG) + ENDDO + + DO JK=1,KLEV + DO IC=1,ICOUNT + JL=IND(IC) + POD (JL,JK,IW(JL)) = ZTAUR(JL,JK,JG) + ZTAUG(JL,JK,JG) + PSSA(JL,JK,IW(JL)) = ZTAUR(JL,JK,JG) / POD(JL,JK,IW(JL)) + ENDDO + ENDDO + + ENDDO !-- end loop on JG (g point) + +ENDDO !-- end loop on JB (band) + +! ------------------------------------------------------------------ +IF (LHOOK) CALL DR_HOOK('SRTM_GAS_OPTICAL_DEPTH',1,ZHOOK_HANDLE) +END ASSOCIATE +END SUBROUTINE SRTM_GAS_OPTICAL_DEPTH diff --git a/src/LIB/RAD/ecrad-1.0.1_mnh/ifsrrtm/srtm_kgb16.F90 b/src/LIB/RAD/ecrad-1.0.1_mnh/ifsrrtm/srtm_kgb16.F90 new file mode 100644 index 0000000000000000000000000000000000000000..7e589efd97594e9f9b57e105724dfdc56135170c --- /dev/null +++ b/src/LIB/RAD/ecrad-1.0.1_mnh/ifsrrtm/srtm_kgb16.F90 @@ -0,0 +1,184 @@ +SUBROUTINE SRTM_KGB16(DIRECTORY) + +! Originally by J.Delamere, Atmospheric & Environmental Research. +! Revision: 2.4 +! BAND 16: 2600-3000 cm-1 (low - H2O,CH4; high - nothing) +! Reformatted for F90 by JJMorcrette, ECMWF +! R. Elkhatib 12-10-2005 Split for faster and more robust compilation. +! G.Mozdzynski March 2011 read constants from files +! T. Wilhelmsson and K. Yessad (Oct 2013) Geometry and setup refactoring. +! ------------------------------------------------------------------ + +USE PARKIND1 , ONLY : JPRB +USE YOMHOOK , ONLY : LHOOK, DR_HOOK +USE YOMLUN , ONLY : NULRAD +USE YOMMP0 , ONLY : NPROC, MYPROC +USE MPL_MODULE, ONLY : MPL_BROADCAST +USE YOMTAG , ONLY : MTAGRAD +USE YOESRTA16 , ONLY : KA, KB, SELFREF, FORREF, SFLUXREF, RAYL, STRRAT1, LAYREFFR + +! ------------------------------------------------------------------ + +IMPLICIT NONE + +CHARACTER(LEN=*), INTENT(IN) :: DIRECTORY + +! KURUCZ +!CHARACTER(LEN = 80) :: CLZZZ +CHARACTER(LEN = 80) :: CLF1 +REAL(KIND=JPRB) :: ZHOOK_HANDLE + +#include "abor1.intfb.h" + +IF (LHOOK) CALL DR_HOOK('SRTM_KGB16',0,ZHOOK_HANDLE) + +IF( MYPROC==1 )THEN + !CALL GETENV("DATA",CLZZZ) + !IF(CLZZZ /= " ") THEN + ! CLF1=TRIM(CLZZZ)//"/RADSRTM" + CLF1 = DIRECTORY // "/RADSRTM" + WRITE(0,'(A,A)') 'Reading ',TRIM(CLF1) + ! RRTM and SRTM files from ecrad are in big-endian format. + ! Here they are covnerted into little-endian at opening + ! No need for compialtion option export GFORTRAN_CONVERT_UNIT="little_endian;big_endian:145" +! OPEN(NULRAD,FILE=TRIM(CLF1),FORM="UNFORMATTED",ACTION="READ",access='sequential',ERR=1000,CONVERT='swap') + + OPEN(NULRAD,FILE=TRIM(CLF1),FORM="UNFORMATTED",ACTION="READ",access='sequential',ERR=1000,CONVERT='BIG_ENDIAN') + !ELSE + ! OPEN(NULRAD,FILE='RADSRTM',FORM="UNFORMATTED",ACTION="READ",ERR=1000) + !ENDIF + READ(NULRAD,ERR=1001) KA,KB +ENDIF +IF( NPROC>1 )THEN + CALL MPL_BROADCAST (KA,MTAGRAD,1,CDSTRING='SRTM_KGB16:') + CALL MPL_BROADCAST (KB,MTAGRAD,1,CDSTRING='SRTM_KGB16:') +ENDIF + +SFLUXREF = (/ & + & 1.92269_JPRB , 1.72844_JPRB , 1.64326_JPRB , 1.58451_JPRB & + & , 1.44031_JPRB , 1.25108_JPRB , 1.02724_JPRB , 0.776759_JPRB & + & , 0.534444_JPRB , 5.87755E-02_JPRB, 4.86706E-02_JPRB, 3.87989E-02_JPRB & + & , 2.84532E-02_JPRB, 1.82431E-02_JPRB, 6.92320E-03_JPRB, 9.70770E-04_JPRB /) + +! Rayleigh extinction coefficient at v = 2925 cm-1. +RAYL = 2.91E-10_JPRB + +STRRAT1 = 252.131_JPRB + +LAYREFFR = 18 + +! ------------------------------------------------------------------ + +! The array KA contains absorption coefs at the 16 chosen g-values +! for a range of pressure levels> ~100mb, temperatures, and binary +! species parameters (see taumol.f for definition). The first +! index in the array, JS, runs from 1 to 9, and corresponds to +! different values of the binary species parameter. For instance, +! JS=1 refers to dry air, JS = 2 corresponds to the paramter value 1/8, +! JS = 3 corresponds to the parameter value 2/8, etc. The second index +! in the array, JT, which runs from 1 to 5, corresponds to different +! temperatures. More specifically, JT = 3 means that the data are for +! the reference temperature TREF for this pressure level, JT = 2 refers +! to TREF-15, JT = 1 is for TREF-30, JT = 4 is for TREF+15, and JT = 5 +! is for TREF+30. The third index, JP, runs from 1 to 13 and refers +! to the JPth reference pressure level (see taumol.f for these levels +! in mb). The fourth index, IG, goes from 1 to 16, and indicates +! which g-interval the absorption coefficients are for. +! ----------------------------------------------------------------- + +! ----------------------------------------------------------------- +! The array KB contains absorption coefs at the 16 chosen g-values +! for a range of pressure levels < ~100mb and temperatures. The first +! index in the array, JT, which runs from 1 to 5, corresponds to +! different temperatures. More specifically, JT = 3 means that the +! data are for the reference temperature TREF for this pressure +! level, JT = 2 refers to the temperature TREF-15, JT = 1 is for +! TREF-30, JT = 4 is for TREF+15, and JT = 5 is for TREF+30. +! The second index, JP, runs from 13 to 59 and refers to the JPth +! reference pressure level (see taumol.f for the value of these +! pressure levels in mb). The third index, IG, goes from 1 to 16, +! and tells us which g-interval the absorption coefficients are for. +! ----------------------------------------------------------------- + +FORREF(:, 1) = (/ 0.525585E-05_JPRB, 0.527618E-05_JPRB, 0.746929E-04_JPRB /) +FORREF(:, 2) = (/ 0.794660E-05_JPRB, 0.136902E-04_JPRB, 0.849878E-04_JPRB /) +FORREF(:, 3) = (/ 0.197099E-04_JPRB, 0.733094E-04_JPRB, 0.121687E-03_JPRB /) +FORREF(:, 4) = (/ 0.148274E-03_JPRB, 0.169776E-03_JPRB, 0.164848E-03_JPRB /) +FORREF(:, 5) = (/ 0.230296E-03_JPRB, 0.210384E-03_JPRB, 0.182028E-03_JPRB /) +FORREF(:, 6) = (/ 0.280575E-03_JPRB, 0.259217E-03_JPRB, 0.196080E-03_JPRB /) +FORREF(:, 7) = (/ 0.329034E-03_JPRB, 0.291575E-03_JPRB, 0.207044E-03_JPRB /) +FORREF(:, 8) = (/ 0.349989E-03_JPRB, 0.323471E-03_JPRB, 0.225712E-03_JPRB /) +FORREF(:, 9) = (/ 0.366097E-03_JPRB, 0.321519E-03_JPRB, 0.253150E-03_JPRB /) +FORREF(:,10) = (/ 0.383589E-03_JPRB, 0.355314E-03_JPRB, 0.262555E-03_JPRB /) +FORREF(:,11) = (/ 0.375933E-03_JPRB, 0.372443E-03_JPRB, 0.261313E-03_JPRB /) +FORREF(:,12) = (/ 0.370652E-03_JPRB, 0.382366E-03_JPRB, 0.250070E-03_JPRB /) +FORREF(:,13) = (/ 0.375092E-03_JPRB, 0.379542E-03_JPRB, 0.265794E-03_JPRB /) +FORREF(:,14) = (/ 0.389705E-03_JPRB, 0.384274E-03_JPRB, 0.322135E-03_JPRB /) +FORREF(:,15) = (/ 0.372084E-03_JPRB, 0.390422E-03_JPRB, 0.370035E-03_JPRB /) +FORREF(:,16) = (/ 0.437802E-03_JPRB, 0.373406E-03_JPRB, 0.373222E-03_JPRB /) + +! ----------------------------------------------------------------- +! The array SELFREF contains the coefficient of the water vapor +! self-continuum (including the energy term). The first index +! refers to temperature in 7.2 degree increments. For instance, +! JT = 1 refers to a temperature of 245.6, JT = 2 refers to 252.8, +! etc. The second index runs over the g-channel (1 to 16). + +SELFREF(:, 1) = (/ & + & 0.126758E-02_JPRB, 0.105253E-02_JPRB, 0.873963E-03_JPRB, 0.725690E-03_JPRB, 0.602573E-03_JPRB, & + & 0.500344E-03_JPRB, 0.415458E-03_JPRB, 0.344973E-03_JPRB, 0.286447E-03_JPRB, 0.237849E-03_JPRB /) +SELFREF(:, 2) = (/ & + & 0.144006E-02_JPRB, 0.118514E-02_JPRB, 0.975351E-03_JPRB, 0.802697E-03_JPRB, 0.660606E-03_JPRB, & + & 0.543667E-03_JPRB, 0.447429E-03_JPRB, 0.368226E-03_JPRB, 0.303044E-03_JPRB, 0.249400E-03_JPRB /) +SELFREF(:, 3) = (/ & + & 0.294018E-02_JPRB, 0.227428E-02_JPRB, 0.175920E-02_JPRB, 0.136077E-02_JPRB, 0.105258E-02_JPRB, & + & 0.814189E-03_JPRB, 0.629789E-03_JPRB, 0.487153E-03_JPRB, 0.376821E-03_JPRB, 0.291478E-03_JPRB /) +SELFREF(:, 4) = (/ & + & 0.395290E-02_JPRB, 0.348405E-02_JPRB, 0.307081E-02_JPRB, 0.270658E-02_JPRB, 0.238556E-02_JPRB, & + & 0.210261E-02_JPRB, 0.185322E-02_JPRB, 0.163341E-02_JPRB, 0.143967E-02_JPRB, 0.126891E-02_JPRB /) +SELFREF(:, 5) = (/ & + & 0.419122E-02_JPRB, 0.385638E-02_JPRB, 0.354829E-02_JPRB, 0.326481E-02_JPRB, 0.300398E-02_JPRB, & + & 0.276399E-02_JPRB, 0.254317E-02_JPRB, 0.234000E-02_JPRB, 0.215305E-02_JPRB, 0.198104E-02_JPRB /) +SELFREF(:, 6) = (/ & + & 0.495659E-02_JPRB, 0.456777E-02_JPRB, 0.420945E-02_JPRB, 0.387924E-02_JPRB, 0.357494E-02_JPRB, & + & 0.329450E-02_JPRB, 0.303606E-02_JPRB, 0.279790E-02_JPRB, 0.257842E-02_JPRB, 0.237615E-02_JPRB /) +SELFREF(:, 7) = (/ & + & 0.526981E-02_JPRB, 0.490687E-02_JPRB, 0.456893E-02_JPRB, 0.425426E-02_JPRB, 0.396126E-02_JPRB, & + & 0.368844E-02_JPRB, 0.343441E-02_JPRB, 0.319788E-02_JPRB, 0.297764E-02_JPRB, 0.277256E-02_JPRB /) +SELFREF(:, 8) = (/ & + & 0.575426E-02_JPRB, 0.531597E-02_JPRB, 0.491106E-02_JPRB, 0.453699E-02_JPRB, 0.419141E-02_JPRB, & + & 0.387216E-02_JPRB, 0.357722E-02_JPRB, 0.330475E-02_JPRB, 0.305303E-02_JPRB, 0.282048E-02_JPRB /) +SELFREF(:, 9) = (/ & + & 0.549881E-02_JPRB, 0.514328E-02_JPRB, 0.481074E-02_JPRB, 0.449970E-02_JPRB, 0.420877E-02_JPRB, & + & 0.393665E-02_JPRB, 0.368213E-02_JPRB, 0.344406E-02_JPRB, 0.322138E-02_JPRB, 0.301310E-02_JPRB /) +SELFREF(:,10) = (/ & + & 0.605357E-02_JPRB, 0.561246E-02_JPRB, 0.520349E-02_JPRB, 0.482432E-02_JPRB, 0.447278E-02_JPRB, & + & 0.414686E-02_JPRB, 0.384469E-02_JPRB, 0.356453E-02_JPRB, 0.330479E-02_JPRB, 0.306398E-02_JPRB /) +SELFREF(:,11) = (/ & + & 0.640504E-02_JPRB, 0.587858E-02_JPRB, 0.539540E-02_JPRB, 0.495194E-02_JPRB, 0.454492E-02_JPRB, & + & 0.417136E-02_JPRB, 0.382850E-02_JPRB, 0.351382E-02_JPRB, 0.322501E-02_JPRB, 0.295993E-02_JPRB /) +SELFREF(:,12) = (/ & + & 0.677803E-02_JPRB, 0.615625E-02_JPRB, 0.559152E-02_JPRB, 0.507859E-02_JPRB, 0.461271E-02_JPRB, & + & 0.418957E-02_JPRB, 0.380524E-02_JPRB, 0.345617E-02_JPRB, 0.313913E-02_JPRB, 0.285116E-02_JPRB /) +SELFREF(:,13) = (/ & + & 0.690347E-02_JPRB, 0.627003E-02_JPRB, 0.569472E-02_JPRB, 0.517219E-02_JPRB, 0.469761E-02_JPRB, & + & 0.426658E-02_JPRB, 0.387509E-02_JPRB, 0.351953E-02_JPRB, 0.319659E-02_JPRB, 0.290328E-02_JPRB /) +SELFREF(:,14) = (/ & + & 0.692680E-02_JPRB, 0.632795E-02_JPRB, 0.578087E-02_JPRB, 0.528109E-02_JPRB, 0.482452E-02_JPRB, & + & 0.440742E-02_JPRB, 0.402638E-02_JPRB, 0.367828E-02_JPRB, 0.336028E-02_JPRB, 0.306977E-02_JPRB /) +SELFREF(:,15) = (/ & + & 0.754894E-02_JPRB, 0.681481E-02_JPRB, 0.615207E-02_JPRB, 0.555378E-02_JPRB, 0.501367E-02_JPRB, & + & 0.452609E-02_JPRB, 0.408593E-02_JPRB, 0.368857E-02_JPRB, 0.332986E-02_JPRB, 0.300603E-02_JPRB /) +SELFREF(:,16) = (/ & + & 0.760689E-02_JPRB, 0.709755E-02_JPRB, 0.662232E-02_JPRB, 0.617891E-02_JPRB, 0.576519E-02_JPRB, & + & 0.537917E-02_JPRB, 0.501899E-02_JPRB, 0.468293E-02_JPRB, 0.436938E-02_JPRB, 0.407682E-02_JPRB /) + +IF (LHOOK) CALL DR_HOOK('SRTM_KGB16',1,ZHOOK_HANDLE) +RETURN + +1000 CONTINUE +CALL ABOR1("SRTM_KGB16:ERROR OPENING FILE RADSRTM") +1001 CONTINUE +CALL ABOR1("SRTM_KGB16:ERROR READING FILE RADSRTM") + +END SUBROUTINE SRTM_KGB16 diff --git a/src/LIB/SURCOUCHE/src/mode_field.f90 b/src/LIB/SURCOUCHE/src/mode_field.f90 index c6325263f4353c33be9633be86c8d0dc6289663d..6b69eb2d4e4e75cfdda950eae08a01aa19ce28b7 100644 --- a/src/LIB/SURCOUCHE/src/mode_field.f90 +++ b/src/LIB/SURCOUCHE/src/mode_field.f90 @@ -2517,9 +2517,9 @@ TFIELDLIST(IDX)%CDIR = 'XY' TFIELDLIST(IDX)%CCOMMENT = 'X_Y_EMISsivity' TFIELDLIST(IDX)%NGRID = 4 TFIELDLIST(IDX)%NTYPE = TYPEREAL -TFIELDLIST(IDX)%NDIMS = 2 +TFIELDLIST(IDX)%NDIMS = 3 TFIELDLIST(IDX)%LTIMEDEP = .TRUE. -ALLOCATE(TFIELDLIST(IDX)%TFIELD_X2D(IMODEL)) +ALLOCATE(TFIELDLIST(IDX)%TFIELD_X3D(IMODEL)) IDX = IDX+1 ! IF(IDX>MAXFIELDS) CALL ERR_INI_FIELD_LIST() @@ -3998,7 +3998,7 @@ IF (CPROGRAM=='MESONH') THEN CALL FIND_FIELD_ID_FROM_MNHNAME('AZIM', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XAZIM CALL FIND_FIELD_ID_FROM_MNHNAME('DIR_ALB', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XDIR_ALB CALL FIND_FIELD_ID_FROM_MNHNAME('SCA_ALB', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XSCA_ALB - CALL FIND_FIELD_ID_FROM_MNHNAME('EMIS', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XEMIS + CALL FIND_FIELD_ID_FROM_MNHNAME('EMIS', IID,IRESP); TFIELDLIST(IID)%TFIELD_X3D(KFROM)%DATA => XEMIS CALL FIND_FIELD_ID_FROM_MNHNAME('TSRAD', IID,IRESP); TFIELDLIST(IID)%TFIELD_X2D(KFROM)%DATA => XTSRAD END IF ! @@ -4405,7 +4405,7 @@ IF (CPROGRAM=='MESONH') THEN CALL FIND_FIELD_ID_FROM_MNHNAME('AZIM', IID,IRESP); XAZIM => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA CALL FIND_FIELD_ID_FROM_MNHNAME('DIR_ALB', IID,IRESP); XDIR_ALB => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA CALL FIND_FIELD_ID_FROM_MNHNAME('SCA_ALB', IID,IRESP); XSCA_ALB => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA - CALL FIND_FIELD_ID_FROM_MNHNAME('EMIS', IID,IRESP); XEMIS => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA + CALL FIND_FIELD_ID_FROM_MNHNAME('EMIS', IID,IRESP); XEMIS => TFIELDLIST(IID)%TFIELD_X3D(KTO)%DATA CALL FIND_FIELD_ID_FROM_MNHNAME('TSRAD', IID,IRESP); XTSRAD => TFIELDLIST(IID)%TFIELD_X2D(KTO)%DATA END IF ! diff --git a/src/MNH/default_desfmn.f90 b/src/MNH/default_desfmn.f90 index 7f969ac7d2b12a6e7c1290edb15d4460d2e7c96c..bb139c807c90c2eed68111103a42b2b7612ea5c8 100644 --- a/src/MNH/default_desfmn.f90 +++ b/src/MNH/default_desfmn.f90 @@ -219,6 +219,7 @@ END MODULE MODI_DEFAULT_DESFM_n !! 10/2016 (R.Honnert and S.Riette) : Improvement of EDKF and adaptation to the grey zone !! 10/2016 (F Brosse) add prod/loss terms computation for chemistry !! 09/2017 Q.Rodier add LTEND_UV_FRC +!! 02/2018 Q.Libois ECRAD ! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !------------------------------------------------------------------------------- ! @@ -243,6 +244,9 @@ USE MODD_TURB_n USE MODD_BUDGET USE MODD_LES USE MODD_PARAM_RAD_n +#ifdef MNH_ECRAD +USE MODD_PARAM_ECRAD_n +#endif USE MODD_BLANK USE MODD_FRC USE MODD_PARAM_ICE @@ -920,6 +924,31 @@ XFUDG = 1. LAERO_FT=.FALSE. LFIX_DAT=.FALSE. ! +#ifdef MNH_ECRAD +!* 13bis. SET DEFAULT VALUES FOR MODD_PARAM_ECRAD_n : +! --------------------------------------- +! +NSWSOLVER = 0 ! 0: 'McICA 1: 'SPARTACUS' 2: 'SPARTACUS' + 3D effect +NLWSOLVER = 0 ! 0: 'McICA 1: 'SPARTACUS' 2: 'SPARTACUS' + 3D effect +! LEFF3D = .TRUE. +! LSIDEM = .TRUE. +NREG = 3 ! Number of cloudy regions (3=TripleClouds) +! LLWCSCA = .TRUE. ! LW cloud scattering +! LLWASCA = .TRUE. ! LW aerosols scattering +NLWSCATTERING = 2 +NAERMACC = 0 +! CGAS = 'RRTMG-IFS' ! Gas optics model +NOVLP = 1 ! overlap assumption ; 0= 'Max-Ran' ; 1= 'Exp-Ran'; 2 = 'Exp-Exp' +NLIQOPT = 3 ! 1: 'Monochromatic', 2: 'HuStamnes', 3: 'SOCRATES', 4: 'Slingo' +NICEOPT = 3 ! 1: 'Monochromatic', 2: 'Fu-PSRAD', 3: 'Fu-IFS', 4: 'Baran', 5: 'Baran2016', 6: 'Baran2017' +! LSW_ML_E = .FALSE. +! LLW_ML_E = .FALSE. +! LPSRAD = .FALSE. +! +NRADLP = 1 ! 0: ERA-15, 1: Zhang and Rossow, 2: Martin (1994) et Woods (2000) +NRADIP = 1 ! 0: 40 mum, 1: Liou and Ou (1994), 2: Liou and Ou (1994) improved, 3: Sun and Rikus (1999) +XCLOUD_FRAC_STD = 1.0_JPRB ! change to 0.75 for more realistic distribution +#endif !------------------------------------------------------------------------------- ! !* 14. SET DEFAULT VALUES FOR MODD_BLANK : diff --git a/src/MNH/ecmwf_radiation_vers2.f90 b/src/MNH/ecmwf_radiation_vers2.f90 index e4e1c409db7828875f296b9cc3ff5d7b14c38686..c94a2d23a73113888ab1e360e3438152380a20c1 100644 --- a/src/MNH/ecmwf_radiation_vers2.f90 +++ b/src/MNH/ecmwf_radiation_vers2.f90 @@ -70,6 +70,7 @@ SUBROUTINE ECMWF_RADIATION_VERS2 ( KLON,KLEV,KRAD_DIAG, KAER, & ! M.Mazoyer 2016 : limit of 100 microns for effective radius ! B.VIE 2016 : LIMA ! J.Escobar 30/03/2017 : Management of compilation of ECMWF_RAD in REAL*8 with MNH_REAL=R4 +!! Q.Libois 02/2018 : ECRAD !----------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -77,10 +78,10 @@ SUBROUTINE ECMWF_RADIATION_VERS2 ( KLON,KLEV,KRAD_DIAG, KAER, & !ECMWF radiation scheme specific modules ! USE PARKIND1 , ONLY : JPRB -USE YOMCST , ONLY : RG ,RD ,RTT ,RPI -USE YOERAD , ONLY : NMODE, NSW ,LRRTM ,LINHOM ,LRADIP, LRADLP +USE OYOMCST , ONLY : RG ,RD ,RTT ,RPI +USE OYOERAD , ONLY : NMODE, NSW ,LRRTM ,LINHOM ,LRADIP, LRADLP USE YOELW , ONLY : NSIL ,NTRA ,NUA ,TSTAND ,XP -USE YOESW , ONLY : RYFWCA ,RYFWCB ,RYFWCC ,RYFWCD ,& +USE OYOESW , ONLY : RYFWCA ,RYFWCB ,RYFWCC ,RYFWCD ,& &RYFWCE ,RYFWCF ,REBCUA ,REBCUB ,REBCUC ,& &REBCUD ,REBCUE ,REBCUF ,REBCUI ,REBCUJ ,& &REBCUG ,REBCUH ,RHSAVI ,RFULIO ,RFLAA0 ,& @@ -92,9 +93,9 @@ USE YOESW , ONLY : RYFWCA ,RYFWCB ,RYFWCC ,RYFWCD ,& &RASWCB ,RASWCC ,RASWCD ,RASWCE ,RASWCF ,& &RLINLI USE YOERDU , ONLY : RCDAY, NUAER ,NTRAER ,REPLOG ,REPSC ,DIFF -USE YOERDI , ONLY : REPCLC +USE OYOERDI , ONLY : REPCLC USE YOETHF , ONLY : RTICE -USE YOERRTWN , ONLY : NG ,NSPA ,NSPB ,WAVENUM1 ,& +USE OYOERRTWN , ONLY : NG ,NSPA ,NSPB ,WAVENUM1 ,& WAVENUM2, DELWAVE, TOTPLNK, TOTPLK16 ! !MESO-NH modules @@ -114,7 +115,7 @@ USE MODD_PARAM_C2R2, ONLY : UALPHAC=>XALPHAC,UNUC=>XNUC, & USE MODD_PARAM_RAD_n, ONLY : CAOP ! USE MODI_LW -USE MODI_RRTM_RRTM_140GP +!USE MODI_RRTM_RRTM_140GP USE MODI_SW ! ! LIMA @@ -132,7 +133,7 @@ IMPLICIT NONE !* 0.1 DECLARATIONS OF DUMMY ARGUMENTS : ! INTEGER, INTENT(IN) :: KAER !number of aerosol class -REAL, DIMENSION (:,:), INTENT (IN) ::PDZ !thickness of the mesh (m) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) ::PDZ !thickness of the mesh (m) INTEGER, INTENT(IN) :: KLEV ! number of vertical level for radiation calulation INTEGER, INTENT(IN) :: KLON ! number of columns " INTEGER, INTENT(IN) :: KRAD_DIAG ! index for the number of diagnostic fields @@ -147,14 +148,14 @@ REAL, INTENT(IN) :: PFUDG !subgrid cloud inhomogeneity factor ! REAL(KIND=JPRB), INTENT(INOUT) :: PRII0 ! corrected solar constant REAL, INTENT(IN) :: PCCO2 ! CO2 content (Pa/Pa) -REAL, DIMENSION (:,:,:), INTENT (IN) :: PAER ! aerosol optical thickness -REAL, DIMENSION (:,:), INTENT (IN) :: PALBD ! surface diffuse spectral albedo -REAL, DIMENSION (:,:), INTENT (IN) :: PALBP ! surface direct spectral albedo -REAL, DIMENSION (:), INTENT (IN) :: PEMIS ! surface emissivity -REAL, DIMENSION (:), INTENT (IN) :: PEMIW ! surface emissivity in LW window -REAL, DIMENSION (:), INTENT (IN) :: PLSM ! land sea mask -REAL, DIMENSION (:), INTENT (IN) :: PMU0 ! cosine of solar angle -REAL, DIMENSION (:,:), INTENT (IN) :: POZON ! ozone content (Pa/Pa) +REAL(KIND=JPRB), DIMENSION (:,:,:), INTENT (IN) :: PAER ! aerosol optical thickness +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PALBD ! surface diffuse spectral albedo +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PALBP ! surface direct spectral albedo +REAL(KIND=JPRB), DIMENSION (:), INTENT (IN) :: PEMIS ! surface emissivity +REAL(KIND=JPRB), DIMENSION (:), INTENT (IN) :: PEMIW ! surface emissivity in LW window +REAL(KIND=JPRB), DIMENSION (:), INTENT (IN) :: PLSM ! land sea mask +REAL(KIND=JPRB), DIMENSION (:), INTENT (IN) :: PMU0 ! cosine of solar angle +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: POZON ! ozone content (Pa/Pa) REAL(KIND=JPRB), DIMENSION (:), INTENT (IN) :: PTS ! surfaec temperature REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PT ! mean layer temperature (mass point) REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PAP ! mean layer pressure (mass point) @@ -163,16 +164,16 @@ REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PAPH ! half-level pressure REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PDP ! layer pressure thickness REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PQ ! mean layer specific humidity (Pa/pa) REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PQS ! mean layer saturation spec. humid. -REAL, DIMENSION (:,:), INTENT (IN) :: PQIWC ! mean-layer ice specific water content (kg/kg) -REAL, DIMENSION (:,:), INTENT (IN) :: PIWC ! mean-layer ice water content (kg/m3) -REAL, DIMENSION (:,:), INTENT (IN) :: PQLWC ! mean-layer liquid specific water content(kg/Kg) -REAL, DIMENSION (:,:), INTENT (IN) :: PLWC ! mean-layer liquid water content(kg/m3) -REAL, DIMENSION (:,:), INTENT (IN) :: PQRWC ! mean-layer rain specific water content(kg/kg) -REAL, DIMENSION (:,:), INTENT (IN) :: PRWC ! mean-layer rain water content(kg/m3) -REAL, DIMENSION (:,:), INTENT (IN) :: PCLFR ! mean-layer cloud fraction -REAL, DIMENSION (:,:), INTENT (IN) :: PCCT_C2R2 ! cloud water concentration (C2R2) -REAL, DIMENSION (:,:), INTENT (IN) :: PCRT_C2R2 ! rain water concentration (C2R2) -REAL, DIMENSION (:,:), INTENT (IN) :: PCIT_C1R3 ! ice crystal concentration (C1R3) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PQIWC ! mean-layer ice specific water content (kg/kg) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PIWC ! mean-layer ice water content (kg/m3) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PQLWC ! mean-layer liquid specific water content(kg/Kg) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PLWC ! mean-layer liquid water content(kg/m3) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PQRWC ! mean-layer rain specific water content(kg/kg) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PRWC ! mean-layer rain water content(kg/m3) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PCLFR ! mean-layer cloud fraction +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PCCT_C2R2 ! cloud water concentration (C2R2) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PCRT_C2R2 ! rain water concentration (C2R2) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PCIT_C1R3 ! ice crystal concentration (C1R3) REAL(KIND=JPRB), DIMENSION(:,:,:),INTENT(IN) :: PPIZA_DST !Single scattering albedo of dust (wvl dependent) REAL(KIND=JPRB), DIMENSION(:,:,:),INTENT(IN) :: PCGA_DST !Assymetry factor for dust (wvl dependent) REAL(KIND=JPRB), DIMENSION(:,:,:),INTENT(IN) :: PTAUREL_DST !Optical depth of dust relative to the one at 550nm @@ -411,7 +412,7 @@ END WHERE ! !Care : OZONE field = (concentration) * DP, in initial ECMWF driver routines ! -ZOZON(:,:) = POZON (:,:) * PDP (:,:) +ZOZON(:,:) = RG / 46.6968 * POZON (:,:) * PDP (:,:) ! to be consistent with the actual input of RADLSW ! ! Aerosol field ! @@ -498,6 +499,7 @@ DO JK = 1 , KLEV ! --- Liquid Water Content (g.m-3) and Liquid Water Path (g.m-2) ! ZLWGKG=MAX(PLWC(JL,IKL)*1000.,0.) + ZRWGKG=MAX(PRWC(JL,IKL)*1000.,0.) ZIWGKG=MAX(PIWC(JL,IKL)*1000.,0.) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !Parametrisation des propriete optiques de la pluie non implementee @@ -506,15 +508,17 @@ DO JK = 1 , KLEV ! ZRWGKG=MAX(PRWC(JL,IKL)*1000.,0.) ! IF (ZRWGKG.ne.0.0) ZCLFR(JL,IKL)=1.0 ! ELSE - ZRWGKG=0.0 +! ZRWGKG=0.0 ! ENDIF !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! IF (ZCLFR(JL,IKL) > 1E-2 ) THEN ZLWGKG=ZLWGKG/ZCLFR(JL,IKL) + ZRWGKG=ZRWGKG/ZCLFR(JL,IKL) ZIWGKG=ZIWGKG/ZCLFR(JL,IKL) ELSE ZLWGKG=0. + ZRWGKG=0. ZIWGKG=0. ENDIF @@ -707,7 +711,7 @@ DO JK = 1 , KLEV !-- SW: Slingo, 1989 ! IF (ZRADLP(JL)>1.0) then - ZTOL = ZSWFUDG * ZFLWP(JL)*(RASWCA(JSW)+RASWCB(JSW)/ZRADLP(JL)) + ZTOL = ZSWFUDG * (ZFLWP(JL)+ZFRWP(JL))*(RASWCA(JSW)+RASWCB(JSW)/ZRADLP(JL)) ZGL = RASWCE(JSW)+RASWCF(JSW)*ZRADLP(JL) ZOL = 1. - RASWCC(JSW)-RASWCD(JSW)*ZRADLP(JL) ENDIF @@ -1127,7 +1131,8 @@ ELSE ! DO JK = 1, KLEV DO JL = IKIDIA,IKFDIA - ZOZN(JL,JK) = ZOZON(JL,JK)/PDP(JL,JK) +! ZOZN(JL,JK) = ZOZON(JL,JK)/PDP(JL,JK) + ZOZN(JL,JK) = POZON(JL,JK)/PDP(JL,JK) ! Quentin because climatology in volume mixing ratio, not mmr ENDDO ENDDO ! diff --git a/src/MNH/ecrad_interface.f90 b/src/MNH/ecrad_interface.f90 new file mode 100644 index 0000000000000000000000000000000000000000..b056dbd68dd7ddc7d3e1206e179642da26847efd --- /dev/null +++ b/src/MNH/ecrad_interface.f90 @@ -0,0 +1,653 @@ +!MNH_LIC Copyright 1994-2014 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. +!----------------------------------------------------------------- +!--------------- special set of characters for RCS information +!----------------------------------------------------------------- +! $Source: /home/cvsroot/MNH-VX-Y-Z/src/MNH/radiations.f90,v $ $Revision: 1.3.2.3.2.2.2.4 $ +! masdev4_7 BUG1 2007/06/15 17:47:18 +!----------------------------------------------------------------- +! ######################## + MODULE MODI_ECRAD_INTERFACE +! ######################## +! +CONTAINS +! +!############################################################## +!OPTION! -Ni +SUBROUTINE ECRAD_INTERFACE ( KLON,KLEV,KRAD_DIAG, KAER, & + PDZ,HEFRADL, HEFRADI, HOPWSW, HOPISW, HOPWLW, HOPILW,PFUDG, & + PRII0, PAER , PALBD , PALBP, PAPH , PAP, & + PCCO2, PCLFR , PDP , PEMIS, PEMIW , PLSM , PMU0, POZON, & + PQ , PQIWC, PIWC, PQLWC, PLWC,PQS , PQRWC, PRWC, & + PTH , PT , PTS, PCCT_C2R2, PCRT_C2R2, PCIT_C1R3, & + PFLT , PFLS , PFCT , PFCS , & + PDTLW, PDTSW ,PFLUX_TOP_GND_IRVISNIR, & + PSFSWDIR, PSFSWDIF, & + PFSDWN, PFSUP, PFLUX_LW , & + PDTLW_CS, PDTSW_CS ,PFLUX_TOP_GND_IRVISNIR_CS, & + PFCDWN, PFCUP, PFLUX_CLW, & + PPLAN_ALB_VIS, PPLAN_ALB_NIR, PPLAN_TRA_VIS, PPLAN_TRA_NIR,& + PPLAN_ABS_VIS, PPLAN_ABS_NIR, PEFCL_LWD, PEFCL_LWU, & + PFLWP,PFIWP,PRADLP,PRADIP, PEFCL_RRTM, PCLSW_TOTAL, & + PTAU_TOTAL, POMEGA_TOTAL, PCG_TOTAL, & + ODUST,PPIZA_DST,PCGA_DST,PTAUREL_DST,PLAT,PLON ) +!############################################################## +! +!**** *ECRAD* - INTERFACE TO ECRAD RADIATION SCHEMES USING THE SAME INPUTS AS ECMWF_RADIATION_VERS2 +! +! PURPOSE. +! -------- +! Interface routine to call ECRAD SW and LW radiation schemes in the MesoNH +! framework. It is an alternative to ECMWF_RADIATION_VERS2. +! +! METHOD. +! ------- +! This routine calls the RADIATION_SCHEME routine from ECRAD package. +! It converts the standard inputs common with ECMWF_VERSION_2 into those +! required by RADIATION_SCHEME and then calls the latter routine. + +! It takes as inputs fields from routine RADIATIONS where index 0 is TOA +! RADIATION_SCHEME takes such arrays and returns similar order. The order is reversed at the end of +! the routine to return to RADIATIONS arrays from surface to top +! +! +! EXTERNALS. +! ---------- +! Note that external specific ECMWF module (named "yo==="). They don't follow the MNH MODD norm +! and are initialised in the ini_radiation step. +! +! +! REFERENCE. +! ---------- +! ECMWF and MESONH radiation part documentation +! +! AUTHORS. +! -------- +! Q. LIBOIS (June 2017) + +! MODIFICATIONS. +! -------------- + +!----------------------------------------------------------------------- +! +!* 0. DECLARATIONS +! ------------ +!ECMWF radiation scheme specific modules +! +! USE YOMCST , ONLY : RG ,RD ,RTT ,RPI +! USE YOERAD , ONLY : NMODE, NSW ,LRRTM ,LINHOM ,LRADIP, LRADLP +! USE YOELW , ONLY : NSIL ,NTRA ,NUA ,TSTAND ,XP +! USE YOESW , ONLY : RYFWCA ,RYFWCB ,RYFWCC ,RYFWCD ,& +! &RYFWCE ,RYFWCF ,REBCUA ,REBCUB ,REBCUC ,& +! &REBCUD ,REBCUE ,REBCUF ,REBCUI ,REBCUJ ,& +! &REBCUG ,REBCUH ,RHSAVI ,RFULIO ,RFLAA0 ,& +! &RFLAA1 ,RFLBB0 ,RFLBB1 ,RFLBB2 ,RFLBB3 ,& +! &RFLCC0 ,RFLCC1 ,RFLCC2 ,RFLCC3 ,RFLDD0 ,& +! &RFLDD1 ,RFLDD2 ,RFLDD3 ,RFUAA0 ,RFUAA1 ,& +! &RFUBB0 ,RFUBB1 ,RFUBB2 ,RFUBB3 ,RFUCC0 ,& +! &RFUCC1 ,RFUCC2 ,RFUCC3 ,RFUETA ,RASWCA ,& +! &RASWCB ,RASWCC ,RASWCD ,RASWCE ,RASWCF ,& +! &RLINLI +! USE YOERDU , ONLY : RCDAY, NUAER ,NTRAER ,REPLOG ,REPSC ,DIFF +! USE YOERDI , ONLY : REPCLC +! USE YOETHF , ONLY : RTICE +! USE YOERRTWN , ONLY : NG ,NSPA ,NSPB ,WAVENUM1 ,& +! WAVENUM2, DELWAVE, TOTPLNK, TOTPLK16 +! +!MESO-NH modules +! USE MODD_PARAMETERS +! USE MODD_RAIN_C2R2_KHKO_PARAM, ONLY : UCREC=>XCREC, UCRER=>XCRER, UFREFFR=>XFREFFR +! USE MODD_RAIN_C2R2_DESCR, ONLY : UAC=>XAC, UAR=>XAR, & +! ULBEXC=>XLBEXC, ULBEXR=>XLBEXR, & +! URTMIN=>XRTMIN, UCTMIN=>XCTMIN +! USE MODD_ICE_C1R3_PARAM, ONLY : YFREFFI=>XFREFFI +! USE MODD_ICE_C1R3_DESCR, ONLY : YLBEXI=>XLBEXI, & +! YRTMIN=>XRTMIN, YCTMIN=>XCTMIN +! USE MODD_CST +! USE MODD_CRAD +! +! USE MODD_PARAM_C2R2, ONLY : UALPHAC=>XALPHAC,UNUC=>XNUC, & +! UALPHAR=>XALPHAR,UNUR=>XNUR ! +! USE MODD_PARAM_RAD_n, ONLY : CAOP +! ! +! USE MODI_LW +! USE MODI_RRTM_RRTM_140GP +! USE MODI_SW +! ! +! ! LIMA +! USE MODD_PARAM_n, ONLY : CCLOUD +! USE MODD_PARAM_LIMA, ONLY : ZRTMIN=>XRTMIN, ZCTMIN=>XCTMIN, & +! ZALPHAC=>XALPHAC, ZNUC=>XNUC, & +! ZALPHAR=>XALPHAR, ZNUR=>XNUR +! USE MODD_PARAM_LIMA_WARM, ONLY : ZCREC=>XCREC, ZCRER=>XCRER, ZFREFFR=>XFREFFR, & +! ZAC=>XAC, ZAR=>XAR, ZLBEXC=>XLBEXC, ZLBEXR=>XLBEXR +! USE MODD_PARAM_LIMA_COLD, ONLY : ZFREFFI=>XFREFFI, ZLBEXI=>XLBEXI +#ifdef MNH_ECRAD +USE MODI_RADIATION_SCHEME +USE YOERDU , ONLY : RCDAY, REPSC +USE YOMCST, ONLY: RG +USE MODD_PARAM_ECRAD_n , ONLY : XCCH4, XCN2O, XCNO2, XCCFC11, XCCFC12, XCCFC22, XCCCL4, & + & XCCNSEA, XCCNLND, LRRTM +#endif +USE MODD_RADIATIONS_n , ONLY : NSWB_OLD,NSWB_MNH + +USE MODD_GRID_n , ONLY : XLAT, XLON +USE MODD_GRID , ONLY : XLAT0, XLON0 +USE MODD_CONF, ONLY : LCARTESIAN +USE MODD_PARAMETERS , ONLY : XUNDEF +USE MODE_ll , ONLY : GET_INDICE_ll +USE MODD_CST , ONLY : XCPD, XCL, XCI, XCPV, XCPD,XPI + +USE PARKIND1 , ONLY : JPIM, JPRB + +IMPLICIT NONE +! + +! +!* 0.1 DECLARATIONS OF DUMMY ARGUMENTS : +! +INTEGER, INTENT(IN) :: KAER !number of aerosol class +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) ::PDZ !thickness of the mesh (m) +INTEGER, INTENT(IN) :: KLEV ! number of vertical level for radiation calulation +INTEGER, INTENT(IN) :: KLON ! number of columns " +INTEGER, INTENT(IN) :: KRAD_DIAG ! index for the number of diagnostic fields +! choice in +CHARACTER (LEN=*), INTENT (IN) :: HEFRADL !cloud water effective radius calculation +CHARACTER (LEN=*), INTENT (IN) :: HEFRADI !ice water effective radius calculation +CHARACTER (LEN=*), INTENT (IN) :: HOPWSW !cloud water SW optical properties +CHARACTER (LEN=*), INTENT (IN) :: HOPISW !ice water SW optical properties +CHARACTER (LEN=*), INTENT (IN) :: HOPWLW !cloud water LW optical properties +CHARACTER (LEN=*), INTENT (IN) :: HOPILW !ice water LW optical properties +REAL, INTENT(IN) :: PFUDG !subgrid cloud inhomogeneity factor +! +REAL(KIND=JPRB), INTENT(INOUT) :: PRII0 ! corrected solar constant +REAL, INTENT(IN) :: PCCO2 ! CO2 content (Pa/Pa) +REAL(KIND=JPRB), DIMENSION (:,:,:), INTENT (IN) :: PAER ! aerosol optical thickness +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PALBD ! surface diffuse spectral albedo +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PALBP ! surface direct spectral albedo +REAL(KIND=JPRB), DIMENSION (:), INTENT (IN) :: PEMIS ! surface emissivity +REAL(KIND=JPRB), DIMENSION (:), INTENT (IN) :: PEMIW ! surface emissivity in LW window +REAL(KIND=JPRB), DIMENSION (:), INTENT (IN) :: PLSM ! land sea mask +REAL(KIND=JPRB), DIMENSION (:), INTENT (IN) :: PMU0 ! cosine of solar angle +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: POZON ! ozone content (Pa/Pa) +REAL(KIND=JPRB), DIMENSION (:), INTENT (IN) :: PTS ! surfaec temperature +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PT ! mean layer temperature (mass point) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PAP ! mean layer pressure (mass point) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PTH ! half-level temperature +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PAPH ! half-level pressure +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PDP ! layer pressure thickness +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PQ ! mean layer specific humidity (Pa/pa) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PQS ! mean layer saturation spec. humid. +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PQIWC ! mean-layer ice specific water content (kg/kg) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PIWC ! mean-layer ice water content (kg/m3) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PQLWC ! mean-layer liquid specific water content(kg/Kg) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PLWC ! mean-layer liquid water content(kg/m3) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PQRWC ! mean-layer rain specific water content(kg/kg) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PRWC ! mean-layer rain water content(kg/m3) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PCLFR ! mean-layer cloud fraction +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PCCT_C2R2 ! cloud water concentration (C2R2) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PCRT_C2R2 ! rain water concentration (C2R2) +REAL(KIND=JPRB), DIMENSION (:,:), INTENT (IN) :: PCIT_C1R3 ! ice crystal concentration (C1R3) +REAL(KIND=JPRB), DIMENSION(:,:,:),INTENT(IN) :: PPIZA_DST !Single scattering albedo of dust (wvl dependent) +REAL(KIND=JPRB), DIMENSION(:,:,:),INTENT(IN) :: PCGA_DST !Assymetry factor for dust (wvl dependent) +REAL(KIND=JPRB), DIMENSION(:,:,:),INTENT(IN) :: PTAUREL_DST !Optical depth of dust relative to the one at 550nm +LOGICAL, INTENT (IN) :: ODUST ! flag for dust +! +REAL, DIMENSION (:), INTENT (IN) :: PLAT ! latitude +REAL, DIMENSION (:), INTENT (IN) :: PLON ! longitude +! +! OUTPUTS +! +REAL, DIMENSION (:,:), INTENT (OUT) :: PDTLW ! LW temperature tendency +REAL, DIMENSION (:,:), INTENT (OUT) :: PDTSW ! SW temperature tendency +REAL, DIMENSION (:,:), INTENT (OUT) :: PFLUX_TOP_GND_IRVISNIR ! Top and Ground rad. FLUX. +REAL, DIMENSION (:,:), INTENT (OUT) :: PSFSWDIR ! surface SW direct flux +REAL, DIMENSION (:,:), INTENT (OUT) :: PSFSWDIF ! surface SW diffuse flux +! +!KRAD_DIAG >=1 --> optional: flux profiles +! +REAL, DIMENSION (:,:), INTENT (OUT) :: PFLT ! Total LW net flux +REAL, DIMENSION (:,:), INTENT (OUT) :: PFLS ! Total SW net flux +REAL, DIMENSION (:,:), INTENT (OUT) :: PFSDWN! Downward SW flux +REAL, DIMENSION (:,:), INTENT (OUT) :: PFSUP ! Upward SW flux +REAL, DIMENSION (:,:,:), INTENT (OUT):: PFLUX_LW ! LW flux (upward and downward) +! +!KRAD_DIAG >=2 --> optional: clear-sky outputs +! +REAL, DIMENSION (:,:), INTENT (OUT) :: PDTLW_CS ! LW clear sky temperature tendancy +REAL, DIMENSION (:,:), INTENT (OUT) :: PDTSW_CS ! SW clear sky temperature tendancy +REAL, DIMENSION (:,:), INTENT (OUT) :: PFLUX_TOP_GND_IRVISNIR_CS ! Top and + ! Ground radiative Clear-sky FLUXes +REAL, DIMENSION (:,:), INTENT (OUT) :: PFCT ! Clear-sky LW net flux +REAL, DIMENSION (:,:), INTENT (OUT) :: PFCS ! Clear-sky SW net flux +REAL, DIMENSION (:,:), INTENT (OUT) :: PFCDWN ! Downward SW Clear sky flux +REAL, DIMENSION (:,:), INTENT (OUT) :: PFCUP ! Upward SW Clear sky flux +REAL, DIMENSION (:,:,:), INTENT (OUT) :: PFLUX_CLW !Clear sky LW flux (upward and downward) +! +!KRAD_DIAG >=3 --> optional: other macroscpic radiative parameteres +! +REAL, DIMENSION (:), INTENT (OUT) :: PPLAN_ALB_VIS !PLANetary ALBedo in VISible +REAL, DIMENSION (:), INTENT (OUT) :: PPLAN_ALB_NIR ! " Near-InfraRed +REAL, DIMENSION (:), INTENT (OUT) :: PPLAN_TRA_VIS !PLANetary TRANsmission in VISible +REAL, DIMENSION (:), INTENT (OUT) :: PPLAN_TRA_NIR ! " Near-InfraRed +REAL, DIMENSION (:), INTENT (OUT) :: PPLAN_ABS_VIS !PLANetary ABSorption in VISible +REAL, DIMENSION (:), INTENT (OUT) :: PPLAN_ABS_NIR ! " Near-InfraRed + +! +!KRAD_DIAG >=4 --> optional: more cloud effect radiative parameters +! +REAL, DIMENSION (:,:), INTENT (OUT) :: PFLWP ! Liquid water path +REAL, DIMENSION (:,:), INTENT (OUT) :: PFIWP ! Ice water path +REAL, DIMENSION (:,:), INTENT (OUT) :: PRADLP ! Cloud water effective radius +REAL, DIMENSION (:,:), INTENT (OUT) :: PRADIP ! Cloud ice effective radius +REAL, DIMENSION (:,:), INTENT (OUT) :: PEFCL_LWD ! effective downward LW nebulosity +REAL, DIMENSION (:,:), INTENT (OUT) :: PEFCL_LWU ! effective upward LW nebulosity + ! Note: not meaningfull when using RRTM +REAL, DIMENSION (:,:), INTENT (OUT) :: PEFCL_RRTM ! Effective LW nebulosity ( RRTM case) +REAL, DIMENSION (:,:), INTENT (OUT) :: PCLSW_TOTAL ! Effective SW cloud fraction(mixed phase) +REAL, DIMENSION (:,:,:), INTENT (OUT) :: PTAU_TOTAL !Effective cloud optical thickness +REAL, DIMENSION (:,:,:), INTENT (OUT) :: POMEGA_TOTAL! " single scattering albedo +REAL, DIMENSION (:,:,:), INTENT (OUT) :: PCG_TOTAL ! " asymetry factor +REAL :: ZLOGREFF !LOG10of the effective radius +! +! +!* 0.2 DECLARATION OF LOCAL VARIABLES +! ------------------------- +! +! INTEGER :: IKIDIA, IKFDIA ! vector indexes in ecmwf code +! INTEGER :: IKL, JK, JKL, JKLP1, JL, JNU, JRTM, JSW !loop indices +! INTEGER :: INDLAY +! +! REAL :: ZASYMX, ZDIFFD, ZGI, ZGL, ZGR, ZIWGKG, ZLWGKG,& +! ZMULTI, ZMSAID, ZMSAIU, ZMSALD, ZMSALU,ZMSARD, ZMSARU, & +! ZLWFUDG, ZSWFUDG, ZMULTL, ZMULTR, ZOI, ZOL, ZOMGMX, ZOR, & +! ZRMUZ, ZRWGKG, ZTAUD, ZTAUMX, ZTEMPC, & +! ZTOI, ZTOL, ZTOR, ZZFIWP, ZZFLWP, ZZFRWP, ZDPOG, ZPODT + +! REAL :: ZALND, ZASEA, ZD, ZDEN, ZNTOT, ZNUM, ZRATIO, Z1RADI,& +! ZBETAI, ZOMGI, ZOMGP, ZFDEL, ZTCELS, ZFSR, ZAIWC, ZBIWC, & +! ZTBLAY, ZADDPLK, ZPLANCK, Z1RADL, Z1RADR +! +! REAL, DIMENSION(KLON) :: ZTCLEAR, ZDT0, ZEMIS, ZEMIW, & +! ZFIWP , ZFLWP, ZFRWP, ZIWC, & +! ZLWC, ZMU0, ZPSOL, ZVIEW, & +! ZBICFU, ZKICFU1, ZKICFU2, & +! ZFSUPN, ZFSUPV,ZFCUPN, ZFCUPV, & +! ZFSDNN, ZFSDNV, ZFCDNN, ZFCDNV, & +! ZALFICE, ZGAMICE, ZBICE, & +! ZRADIP, ZDESR,ZRES, & +! ZRADLP,ZRADRP,ZRADLS,ZRADRS, & +! ZTICE , ZEMIT, ZSUDU, ZRHO, ZMR, & +! ZUVDF, ZPARF +! !cc , ZRADRD +! ! +! REAL, DIMENSION(KLON,NSW) :: ZALBD , ZALBP , ZDIRFS, ZDIFFS +! REAL, DIMENSION(KLON,KLEV) :: ZCLFR, ZCLDLD , ZCLDLU, ZCLDSW, & +! ZOZON, ZOZ , ZOZN, ZTAVE , ZDPGCP, & +! ZCOOLR , ZCOOLC, ZHEATR , ZHEATC, & +! ZDFLWT , ZDFLWC, ZDFSWT , ZDFSWC +! ! +! REAL, DIMENSION(KLON,KLEV+1) :: ZPMB , ZTL, & +! ZFCDWN, ZFCUP, ZFSDWN, ZFSUP, & +! ZFLT, ZFCT,ZFCS, ZFLS +! ! +! REAL, DIMENSION(KLON,NSW,KLEV) :: ZCG ,ZOMEGA, ZTAU +! ! +! REAL, DIMENSION(KLON,2,KLEV+1) :: ZFLUX_LW, ZFLUX_CLW +! ! +! REAL, DIMENSION(KLON,KLEV,16) :: ZTAUCLD +! ! +! REAL, DIMENSION(KLON,KAER,KLEV) :: ZAER_SW,ZAER_LW ! Optical aerosol properties +! LOGICAL :: GPROP_OP !drapeau sur les condition a remplir pour que le +! !calcul des propriétés optiques soit effectué +! ! +! REAL, ALLOCATABLE, DIMENSION(:) :: XRTMIN, XCTMIN +! REAL :: XALPHAC,XNUC,XALPHAR,XNUR,XCREC,XCRER,XFREFFR,XAC,XAR,XLBEXC,XLBEXR,XFREFFI,XLBEXI +! !-------------------------------------------------------------- + +INTEGER :: IKIDIA, IKFDIA ! vector indexes in ecmwf code +INTEGER :: IIB, IJB, IIE, IJE, IIJ, II, JJ, IJ, JI, JL, JK, JKL, IKL,JKLP1 !loop indices + +! Old parameters still needed +REAL :: ZIWGKG, ZLWGKG, ZRWGKG +REAL, DIMENSION(KLON) :: ZFLWP, ZFIWP, ZFRWP +REAL, DIMENSION(KLON,KLEV) :: ZDPGCP, ZDFSWC, ZDFSWT, ZDFLWC, ZDFLWT, ZCLFR +REAL, DIMENSION(KLON,KLEV+1) :: ZFLT, ZFCT, ZFCS, ZFLS + +! +!New local parameters specific to ecrad - Q.L. +REAL(KIND=JPRB), DIMENSION(KLON) :: ZGELAM , ZGEMU +REAL(KIND=JPRB), DIMENSION(KLON) :: ZCCNLND , ZCCNSEA +REAL(KIND=JPRB), DIMENSION(KLON,KLEV) :: ZCCO2, ZCCH4, ZCN2O, ZCNO2, ZCCFC11, ZCCFC12, ZCCFC22, ZCCCL4 +INTEGER :: IIDIA , IFDIA +REAL(KIND=JPRB), DIMENSION(KLON,6,KLEV) :: ZAEROSOL_OLD ! initialized to 0 for the time being +INTEGER , PARAMETER :: IAER = 12 ! number of aerosol types in MACC climatology, not used if XAERMACC = 0 +REAL(KIND=JPRB), DIMENSION(KLON,KLEV,IAER) :: ZAEROSOL +REAL(KIND=JPRB), DIMENSION(KLON,KLEV) :: ZOZON +REAL(KIND=JPRB), DIMENSION(KLON,KLEV) :: ZQSWC +!--------------------- + +REAL, DIMENSION(KLON,KLEV) :: ZAP,ZT,ZOZ +REAL, DIMENSION(KLON,KLEV+1) :: ZAPH,ZTH + + + +! Outputs of RADIATION_SCHEME +REAL(KIND=JPRB),DIMENSION(KLON,KLEV+1) :: ZFLUX_SW +REAL(KIND=JPRB),DIMENSION(KLON,KLEV+1) :: ZFLUX_LW +REAL(KIND=JPRB),DIMENSION(KLON,KLEV+1) :: ZFLUX_SW_CLEAR +REAL(KIND=JPRB),DIMENSION(KLON,KLEV+1) :: ZFLUX_LW_CLEAR +REAL(KIND=JPRB),DIMENSION(KLON,NSWB_MNH) :: ZFLUX_SW_SURF +REAL(KIND=JPRB),DIMENSION(KLON) :: ZFLUX_LW_SURF +REAL(KIND=JPRB),DIMENSION(KLON,NSWB_MNH) :: ZFLUX_SW_SURF_CLEAR +REAL(KIND=JPRB),DIMENSION(KLON) :: ZFLUX_LW_SURF_CLEAR +REAL(KIND=JPRB),DIMENSION(KLON,NSWB_MNH) :: ZFLUX_DIR_SURF +REAL(KIND=JPRB),DIMENSION(KLON,NSWB_MNH) :: ZFLUX_DIR_SURF_CLEAR +REAL(KIND=JPRB),DIMENSION(KLON,NSWB_MNH) :: ZFLUX_DIR_SURF_INTO_SUN +REAL(KIND=JPRB),DIMENSION(KLON) :: ZFLUX_UV +REAL(KIND=JPRB),DIMENSION(KLON) :: ZFLUX_PAR +REAL(KIND=JPRB),DIMENSION(KLON) :: ZFLUX_PAR_CLEAR +REAL(KIND=JPRB),DIMENSION(KLON) :: ZFLUX_SW_DN_TOA +REAL(KIND=JPRB),DIMENSION(KLON) :: ZFLUX_SW_UP_TOA +REAL(KIND=JPRB),DIMENSION(KLON) :: ZFLUX_LW_UP_TOA +REAL(KIND=JPRB),DIMENSION(KLON) :: ZFLUX_SW_UP_TOA_CLEAR +REAL(KIND=JPRB),DIMENSION(KLON) :: ZFLUX_LW_UP_TOA_CLEAR +REAL(KIND=JPRB),DIMENSION(KLON,KLEV+1) :: ZFLUX_SW_DN +REAL(KIND=JPRB),DIMENSION(KLON,KLEV+1) :: ZFLUX_LW_DN +REAL(KIND=JPRB),DIMENSION(KLON,KLEV+1) :: ZFLUX_SW_UP +REAL(KIND=JPRB),DIMENSION(KLON,KLEV+1) :: ZFLUX_LW_UP +REAL(KIND=JPRB),DIMENSION(KLON,KLEV+1) :: ZFLUX_SW_DN_CLEAR +REAL(KIND=JPRB),DIMENSION(KLON,KLEV+1) :: ZFLUX_LW_DN_CLEAR +REAL(KIND=JPRB),DIMENSION(KLON,KLEV+1) :: ZFLUX_SW_UP_CLEAR +REAL(KIND=JPRB),DIMENSION(KLON,KLEV+1) :: ZFLUX_LW_UP_CLEAR +REAL(KIND=JPRB),DIMENSION(KLON,KLEV) :: ZRE_LIQ_UM +REAL(KIND=JPRB),DIMENSION(KLON,KLEV) :: ZRE_ICE_UM +REAL(KIND=JPRB),DIMENSION(KLON) :: ZEMIS_OUT +REAL(KIND=JPRB),DIMENSION(KLON,KLEV+1) :: ZLWDERIVATIVE +REAL(KIND=JPRB),DIMENSION(KLON,NSWB_MNH) :: ZSWDIFFUSEBAND +REAL(KIND=JPRB),DIMENSION(KLON,NSWB_MNH) :: ZSWDIRECTBAND + + +! New parameters needed for RADIATION_SCHEME wrt ECMWF_RADIATION_VERS2 +! KIDIA, KFDIA (indices of first and last column) +! PCCN_LAND ; PCCN_SEA (set in ini_radiations_ecrad) +! PGELAM ; PGEMU (defined from current latitude and longitude) +! trace gases mixing ratios (climatology in ini_radiations_ecrad) +! PAEROSOL (aerosol mixing ratios from MACC) + +! Parameters not entered as inputs to ECMWF_RADIATION_VERS2 +! Either defined here, or defined in ini_radiations_ecrad + +! + +#ifdef MNH_ECRAD +IKIDIA = 1 +IKFDIA = KLON +ZGELAM = PLON! longitude (in radians) +ZGEMU = sin(PLAT) ! sin (lat) +ZCCNLND(:) = XCCNLND +ZCCNSEA(:) = XCCNSEA +ZCCO2(:,:) = PCCO2 +ZCCH4(:,:) = XCCH4 +ZCN2O(:,:) = XCN2O +ZCNO2(:,:) = XCNO2 +ZCCFC11(:,:) = XCCFC11 +ZCCFC12(:,:) = XCCFC12 +ZCCFC22(:,:) = XCCFC22 +ZCCCL4 = XCCCL4 +! ZOZON(:,:) = POZON (:,:) * PDP (:,:) * 46.6968 / RG ! OZONE field = (kg kg) * DP IN RADIATION_SCHEME +ZOZON(:,:) = POZON (:,:) * PDP (:,:) ! OZONE field = (kg kg) * DP IN RADIATION_SCHEME + +! ZAEROSOL_OLD(KLON,6,KLEV) +! PAER(KLON,KLEV,6) +! Keep the original formulation for aerosols +DO JJ=1,SIZE(PAER,3) + DO JI=1,KLEV + ZAEROSOL_OLD(:,JJ,JI) = PAER(:,JI,JJ) + END DO +END DO + +! ! Invert all arrays that enters as inputs from MNH_LIC! PAP, PT, PAPH, PTH +! +! DO JK = 1 , KLEV +! JKL = KLEV+ 1 - JK +! DO JL = IKIDIA,IKFDIA +! ZAPH(JL,JK)=PAPH(JL,JKL+1) +! ZAP(JL,JK)=PAP(JL,JKL) +! ZOZ(JL,JK) = ZOZON(JL,JKL) * 46.6968 / RG +! ZTH(JL,JK)= PTH(JL,JKL+1) +! ZT(JL,JK)=PT(JL,JKL) +! ENDDO +! ENDDO +! ! +! DO JL=IKIDIA,IKFDIA +! ZTH(JL,KLEV+1)= PTH(JL,1) +! ZAPH(JL,KLEV+1) = PAPH(JL,1) ! Conversion needed? No because all pressures in Pa +! ENDDO + +! CAMS climatology + + +! aerosol mixing ratio from MACC reanalyses if XAERMACC > 0 +ZAEROSOL(:,:,:) = 0 + +ZQSWC(:,:) = 0 ! snow mixing ratio set to 0 for the time being + +CALL RADIATION_SCHEME (IKIDIA, IKFDIA,KLON, KLEV, IAER, & + PRII0,PMU0, PTS, PALBD, PALBP, & + PEMIS, PEMIW,ZCCNLND, ZCCNSEA,ZGELAM, ZGEMU, PLSM, & + PAP, PT, PAPH, PTH, & + PQ, ZCCO2, ZCCH4, ZCN2O, ZCNO2, ZCCFC11, ZCCFC12, ZCCFC22, ZCCCL4, ZOZON, & + PCLFR, PQLWC, PQIWC, PQRWC, ZQSWC, & + ZAEROSOL_OLD, ZAEROSOL, & + ZFLUX_SW, ZFLUX_LW, ZFLUX_SW_CLEAR, ZFLUX_LW_CLEAR, & + ZFLUX_SW_SURF, ZFLUX_LW_SURF, ZFLUX_SW_SURF_CLEAR, ZFLUX_LW_SURF_CLEAR, & + ZFLUX_DIR_SURF, ZFLUX_DIR_SURF_CLEAR, ZFLUX_DIR_SURF_INTO_SUN, & + ZFLUX_UV, ZFLUX_PAR, ZFLUX_PAR_CLEAR, & + ZFLUX_SW_DN_TOA, ZFLUX_SW_UP_TOA, ZFLUX_LW_UP_TOA, & + ZFLUX_SW_UP_TOA_CLEAR, ZFLUX_LW_UP_TOA_CLEAR, & + ZFLUX_SW_DN, ZFLUX_LW_DN, ZFLUX_SW_UP, ZFLUX_LW_UP, & + ZFLUX_SW_DN_CLEAR, ZFLUX_LW_DN_CLEAR, ZFLUX_SW_UP_CLEAR, ZFLUX_LW_UP_CLEAR, & + ZRE_LIQ_UM, ZRE_ICE_UM, & + ZEMIS_OUT, ZLWDERIVATIVE, & + ZSWDIFFUSEBAND, ZSWDIRECTBAND ) + + +! PRINT*,"ZFLUX_DIR_SURF(1,:)",SUM(ZFLUX_DIR_SURF(1,:)) +! PRINT*,"ZFLUX_LW_SURF(1)",ZFLUX_LW_SURF(1) +! PAUSE + +! Once The flux profiles have been computed, compute diagnostics consistent with ECMWF_RADIATION_VERS2 +! Requires conversion from RADIATION_SCHEME outputs into usual outputs consistent with the rest of MESONH + +!* 5. FLUXES, RADIATIVE TENDENCIES, DIAGNOSTICS +! ------------------------------------------------ +! note : important +! After the RADIATION_SCHEME routine, radiative fluxes array are consistent with +! ECRAD vertical grid : i.e FLUX (:,1) is the TOA flux. It must be reversed for RADIATIONS +! +! +! 5.0 net fluxes +! +! Reversing fluxes +DO JK = 1 , KLEV+1 + JKL = KLEV+1 -JK +1 + DO JL = IKIDIA,IKFDIA + ZFLS(JL,JK) = ZFLUX_SW(JL,JKL) + ZFLT(JL,JK) = ZFLUX_LW(JL,JKL) + ZFCS(JL,JK) = ZFLUX_SW_CLEAR(JL,JKL) + ZFCT(JL,JK) = ZFLUX_LW_CLEAR(JL,JKL) + ENDDO +ENDDO + +! 5.1 Radiative tendencies in (K/DAY) +! +! calculation of DP term (grid orientation consistent with net fluxes, +! ( see note above) +!computation of CPH (RCDAY is computed with CPD) +DO JKL = 1 , KLEV + DO JL = IKIDIA,IKFDIA + JK = KLEV+1 - JKL + ZDPGCP(JL,JK) = RCDAY/ PDP(JL, JKL)*XCPD/(XCPD+XCPV*PQ(JL, JKL)/(1.-PQ(JL, JKL)) & + +XCL*(PQLWC(JL, JKL)+PQRWC(JL, JKL))+XCI*PQIWC(JL, JKL)) + END DO +END DO + +! Heating rates prop. to. derivative of net fluxes +DO JK=1,KLEV + DO JL=IKIDIA,IKFDIA + ZDFLWT(JL,JK) = ZFLT(JL,JK+1)-ZFLT(JL,JK) + ZDFLWC(JL,JK) = ZFCT(JL,JK+1)-ZFCT(JL,JK) + ZDFSWT(JL,JK) = ZFLS(JL,JK+1)-ZFLS(JL,JK) + ZDFSWC(JL,JK) = ZFCS(JL,JK+1)-ZFCS(JL,JK) +! + PDTLW(JL,JK) = ZDFLWT(JL,JK) * ZDPGCP(JL,JK) + PDTSW(JL,JK) = ZDFSWT(JL,JK) * ZDPGCP(JL,JK) + !clear-sky + PDTLW_CS(JL,JK) = ZDFLWC(JL,JK) * ZDPGCP(JL,JK) + PDTSW_CS(JL,JK) = ZDFSWC(JL,JK) * ZDPGCP(JL,JK) + END DO +END DO +! +! 5.2 Top and Ground fluxes (IR-VIS-NIR) - NB no distinction between VIS and NIR so far - Check signs +! + +PFLUX_TOP_GND_IRVISNIR(:, 1) = ZFLUX_LW_UP_TOA (:) ! TOA LW UP +PFLUX_TOP_GND_IRVISNIR(:, 2) = ZFLUX_SW_UP_TOA(:) ! TOA VIS +PFLUX_TOP_GND_IRVISNIR(:, 3) = ZFLUX_SW_UP_TOA(:) ! TOA NIR +PFLUX_TOP_GND_IRVISNIR(:, 4) = ZFLUX_LW_SURF (:) ! Surface LW down +PFLUX_TOP_GND_IRVISNIR(:, 5) = ZFLUX_SW_SURF(:,1) ! Surface VIS down +PFLUX_TOP_GND_IRVISNIR(:, 6) = ZFLUX_SW_SURF(:,1) ! Surface NIR down + +!Clear-sky +! +PFLUX_TOP_GND_IRVISNIR_CS(:, 1) = ZFLUX_LW_UP_TOA_CLEAR (:) +PFLUX_TOP_GND_IRVISNIR_CS(:, 2) = ZFLUX_SW_UP_TOA_CLEAR(:) +PFLUX_TOP_GND_IRVISNIR_CS(:, 3) = ZFLUX_SW_UP_TOA_CLEAR(:) +PFLUX_TOP_GND_IRVISNIR_CS(:, 4) = ZFLUX_LW_SURF_CLEAR (:) +PFLUX_TOP_GND_IRVISNIR_CS(:, 5) = ZFLUX_SW_SURF_CLEAR(:,1) +PFLUX_TOP_GND_IRVISNIR_CS(:, 6) = ZFLUX_SW_SURF_CLEAR(:,1) +! + +PSFSWDIR = ZFLUX_DIR_SURF +PSFSWDIF = ZFLUX_SW_SURF - ZFLUX_DIR_SURF + +! 5.2 Radiation Diagnostics +! Total fluxes +DO JK=1,KLEV+1 + JKL = KLEV+1 -JK +1 + DO JL=IKIDIA,IKFDIA + PFSDWN(JL,JK) = ZFLUX_SW_DN(JL,JKL) + PFSUP (JL,JK) = ZFLUX_SW_UP (JL,JKL) + PFLUX_LW(JL,2,JK) = -ZFLUX_LW_DN(JL,JKL) ! to be consistent with ECMWF_RADIATION_VERS2 where fluxes are always upwards + PFLUX_LW(JL,1,JK) = ZFLUX_LW_UP(JL,JKL) + END DO +END DO + +IF (KRAD_DIAG >= 1) THEN ! net fluxes + PFLT(:,:) = ZFLT(:,:) + PFLS(:,:) = ZFLS(:,:) +END IF +! +IF (KRAD_DIAG >=2) THEN ! clear-sky fluxes + DO JK=1,KLEV+1 + JKL = KLEV+1 -JK +1 + DO JL=IKIDIA,IKFDIA + PFCDWN(JL,JK) = ZFLUX_SW_DN_CLEAR(JL,JKL) + PFCUP (JL,JK) = ZFLUX_SW_UP_CLEAR (JL,JKL) + PFLUX_CLW(JL,2,JK) = ZFLUX_LW_DN_CLEAR(JL,JKL) + PFLUX_CLW(JL,1,JK) = ZFLUX_LW_UP_CLEAR(JL,JKL) + END DO + END DO +END IF + +IF (KRAD_DIAG >= 2) THEN ! net fluxes + PFCS(:,:) = ZFCS(:,:) + PFCT(:,:) = ZFCT(:,:) +END IF + + +! Unchanged +IF (KRAD_DIAG >= 3) THEN + ! provisoire + PPLAN_ALB_VIS(:) = XUNDEF + PPLAN_ALB_NIR(:) = XUNDEF + PPLAN_TRA_VIS(:) = XUNDEF + PPLAN_TRA_NIR(:) = XUNDEF + PPLAN_ABS_VIS(:) = XUNDEF + PPLAN_ABS_NIR(:) = XUNDEF + +END IF + +! QL +IF (KRAD_DIAG >=4) THEN + IF (.NOT.LRRTM) THEN + PEFCL_LWD (:,:) = XUNDEF ! effective cloudiness LW up and down + PEFCL_LWU (:,:) = XUNDEF + PEFCL_RRTM (:,:) = XUNDEF + ELSE + PEFCL_LWD (:,:) = XUNDEF + PEFCL_LWU (:,:) = XUNDEF + PEFCL_RRTM (:,:) = XUNDEF + END IF + + PCLSW_TOTAL (:,:) = XUNDEF + PTAU_TOTAL (:,:,:) = XUNDEF + POMEGA_TOTAL(:,:,:) = XUNDEF + PCG_TOTAL (:,:,:) = XUNDEF ! to be updfated if necessay +END IF +! + +! 2.2 cloud ice and liquid content and path - QL +! +DO JL = IKIDIA,IKFDIA + ZFLWP(JL) = 0 + ZFIWP(JL) = 0 + ZFRWP(JL) = 0 + DO JK = 1 , KLEV + IKL = KLEV + 1 - JK + ZCLFR(JL,IKL)=MAX(REPSC,MIN(PCLFR(JL,IKL),1-REPSC)) + +! --- Liquid Water Content (g.m-3) and Liquid Water Path (g.m-2) +! + ZLWGKG = MAX(PLWC(JL,IKL)*1000.,0.) + ZIWGKG = MAX(PIWC(JL,IKL)*1000.,0.) + ZRWGKG = 0.0 + + IF (ZCLFR(JL,IKL) > 1E-2 ) THEN + ZLWGKG = ZLWGKG/ZCLFR(JL,IKL) ! contribution of level to water path + ZIWGKG = ZIWGKG/ZCLFR(JL,IKL) + + ELSE + ZLWGKG=0. + ZIWGKG=0. + ENDIF + + ZFLWP(JL) = ZFLWP(JL) + ZLWGKG*PDZ(JL,IKL) + ZFIWP(JL) = ZFIWP(JL) + ZIWGKG*PDZ(JL,IKL) + ZFRWP(JL) = ZFRWP(JL) + ZRWGKG*PDZ(JL,IKL) + + END DO +END DO + +! Diagnostic for water path +IF (KRAD_DIAG >= 4 ) THEN + DO JL = IKIDIA,IKFDIA + PFLWP(JL,:) = ZFLWP(JL) + PFIWP(JL,:) = ZFIWP(JL) + END DO + PRADIP(:,:) = ZRE_ICE_UM(:,:) +END IF + +PRADLP(:,:) = ZRE_LIQ_UM(:,:) + + +#else +PRINT *, "ECRAD LIBRARY NOT AVAILABLE = ###ECRAD_INTERFACE###" +#endif + +END SUBROUTINE ECRAD_INTERFACE + +END MODULE MODI_ECRAD_INTERFACE diff --git a/src/MNH/end_diag_in_run.f90 b/src/MNH/end_diag_in_run.f90 index c540e8faf7fa75c43f81594cb081c2e3791d31a9..7842d15969d4ce07c420aadb8ff29e54b727c23d 100644 --- a/src/MNH/end_diag_in_run.f90 +++ b/src/MNH/end_diag_in_run.f90 @@ -57,6 +57,7 @@ SUBROUTINE END_DIAG_IN_RUN !! ------------- !! Original 11/2003 !! +!! 02/2018 Q.Libois ECRAD !! -------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -79,6 +80,8 @@ DEALLOCATE(XCURRENT_LEI )! Solid latent heat flux DEALLOCATE(XCURRENT_GFLUX )! ground flux DEALLOCATE(XCURRENT_LW )! incoming longwave at the surface DEALLOCATE(XCURRENT_SW )! incoming Shortwave at the surface +IF(ALLOCATED(XCURRENT_SWDIR)) DEALLOCATE(XCURRENT_SWDIR )! incoming Shortwave direct at the surface +IF(ALLOCATED(XCURRENT_SWDIFF))DEALLOCATE(XCURRENT_SWDIFF)! incoming Shortwave diffuse at the surface DEALLOCATE(XCURRENT_T2M )! temperature at 2m DEALLOCATE(XCURRENT_Q2M )! humidity at 2m DEALLOCATE(XCURRENT_HU2M )! humidity at 2m diff --git a/src/MNH/goto_model_wrapper.f90 b/src/MNH/goto_model_wrapper.f90 index 55259821f862d6144d7e4d0864f0d625428c3e82..0a355f505c99f6b86f87f136d2289281a0a30e56 100644 --- a/src/MNH/goto_model_wrapper.f90 +++ b/src/MNH/goto_model_wrapper.f90 @@ -10,8 +10,9 @@ !! 2014 (Faivre) !! 2016 (Leriche) Add MODD_CH_ICE Suppress MODD_CH_DEP_n !! Modification 01/2016 (JP Pinty) Add LIMA -!! 10/2016 (F Brosse) Add prod/loss terms computation for chemistry +!! 10/2016 (F Brosse) Add prod/loss terms computation for chemistry !! 07/2017 (M.Leriche) Add DIAG chimical surface fluxes +! 02/2018 Q.Libois ECRAD !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !----------------------------------------------------------------- MODULE MODI_GOTO_MODEL_WRAPPER @@ -69,6 +70,7 @@ USE MODD_PARAM_KAFR_n USE MODD_PARAM_MFSHALL_n USE MODD_PARAM_n USE MODD_PARAM_RAD_n +USE MODD_PARAM_ECRAD_n USE MODD_PASPOL_n #ifdef MNH_FOREFIRE USE MODD_FOREFIRE_n @@ -175,6 +177,9 @@ CALL PARAM_KAFR_GOTO_MODEL(KFROM, KTO) CALL PARAM_MFSHALL_GOTO_MODEL(KFROM, KTO) CALL PARAM_GOTO_MODEL(KFROM, KTO) CALL PARAM_RAD_GOTO_MODEL(KFROM, KTO) +#ifdef MNH_ECRAD +CALL PARAM_ECRAD_GOTO_MODEL(KFROM, KTO) +#endif CALL PASPOL_GOTO_MODEL(KFROM, KTO) #ifdef MNH_FOREFIRE CALL FOREFIRE_GOTO_MODEL(KFROM, KTO) diff --git a/src/MNH/ground_paramn.f90 b/src/MNH/ground_paramn.f90 index 84f7b9ace6616392e8daa3c36ad5f5f2ead05073..52bd7b52f70075aa7b0bb9102bbd71520148d6af 100644 --- a/src/MNH/ground_paramn.f90 +++ b/src/MNH/ground_paramn.f90 @@ -28,7 +28,7 @@ REAL, DIMENSION(:,:), INTENT(OUT) :: PSFV ! momentum in x and y directions ! REAL, DIMENSION(:,:,:), INTENT(OUT) :: PDIR_ALB ! direct albedo for each spectral band (-) REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSCA_ALB ! diffuse albedo for each spectral band (-) -REAL, DIMENSION(:,:), INTENT(OUT) :: PEMIS ! surface emissivity (-) +REAL, DIMENSION(:,:,:), INTENT(OUT) :: PEMIS ! surface emissivity (-) REAL, DIMENSION(:,:), INTENT(OUT) :: PTSRAD ! surface radiative temperature (K) ! END SUBROUTINE GROUND_PARAM_n @@ -104,6 +104,7 @@ END MODULE MODI_GROUND_PARAM_n !! (M.Leriche) 24/03/16 remove flag for chemical surface fluxes !! (M.Leriche) 01/07/2017 Add DIAG chimical surface fluxes !! 01/2018 (G.Delautier) SURFEX 8.1 +!! 02/2018 Q.Libois ECRAD !! (P.Wautelet) 28/03/2018 replace TEMPORAL_DIST by DATETIME_DISTANCE !------------------------------------------------------------------------------- ! @@ -187,7 +188,7 @@ REAL, DIMENSION(:,:), INTENT(OUT) :: PSFV ! momentum in x and y directions ! REAL, DIMENSION(:,:,:), INTENT(OUT) :: PDIR_ALB ! direct albedo for each spectral band (-) REAL, DIMENSION(:,:,:), INTENT(OUT) :: PSCA_ALB ! diffuse albedo for each spectral band (-) -REAL, DIMENSION(:,:), INTENT(OUT) :: PEMIS ! surface emissivity (-) +REAL, DIMENSION(:,:,:), INTENT(OUT) :: PEMIS ! surface emissivity (-) REAL, DIMENSION(:,:), INTENT(OUT) :: PTSRAD ! surface radiative temperature (K) ! ! @@ -641,6 +642,8 @@ IF (LDIAG_IN_RUN) THEN ! XCURRENT_LW (:,:) = XFLALWD(:,:) XCURRENT_SW (:,:) = SUM(XDIRSRFSWD(:,:,:)+XSCAFLASWD(:,:,:),DIM=3) + XCURRENT_SWDIR(:,:) = SUM(XDIRSRFSWD,DIM=3) + XCURRENT_SWDIFF(:,:) = SUM(XSCAFLASWD(:,:,:),DIM=3) XCURRENT_SFCO2(:,:) = ZSFCO2(:,:) XCURRENT_DSTAOD(:,:)=0.0 IF (CRAD=='ECMW') THEN @@ -813,7 +816,9 @@ END DO ZSFCO2 (IIB:IIE,IJB:IJE) = RESHAPE(ZP_SFCO2(:), ISHAPE_2) ZSFU (IIB:IIE,IJB:IJE) = RESHAPE(ZP_SFU(:), ISHAPE_2) ZSFV (IIB:IIE,IJB:IJE) = RESHAPE(ZP_SFV(:), ISHAPE_2) -PEMIS (IIB:IIE,IJB:IJE) = RESHAPE(ZP_EMIS(:), ISHAPE_2) +DO JLAYER=1,SIZE(PEMIS,3) + PEMIS (IIB:IIE,IJB:IJE,JLAYER) = RESHAPE(ZP_EMIS(:), ISHAPE_2) +END DO PTSRAD (IIB:IIE,IJB:IJE) = RESHAPE(ZP_TSRAD(:), ISHAPE_2) ! IF (LDIAG_IN_RUN) THEN diff --git a/src/MNH/ini_diag_in_run.f90 b/src/MNH/ini_diag_in_run.f90 index e973876a28cb06144547b865767c47f7dd41c5ab..5dd45edd172c3bc9ae13d3ec89622e5dcd26bddf 100644 --- a/src/MNH/ini_diag_in_run.f90 +++ b/src/MNH/ini_diag_in_run.f90 @@ -62,6 +62,7 @@ END MODULE MODI_INI_DIAG_IN_RUN !! MODIFICATIONS !! ------------- !! Original 11/2003 +!! 02/2018 Q.Libois ECRAD !! !! -------------------------------------------------------------------------- ! @@ -100,6 +101,8 @@ IF (LDIAG_IN_RUN) THEN ALLOCATE(XCURRENT_GFLUX (KIU,KJU))! ground flux ALLOCATE(XCURRENT_LW (KIU,KJU))! incoming longwave at the surface ALLOCATE(XCURRENT_SW (KIU,KJU))! incoming Shortwave at the surface + ALLOCATE(XCURRENT_SWDIR (KIU,KJU))! incoming Shortwave direct at the surface + ALLOCATE(XCURRENT_SWDIFF(KIU,KJU))! incoming Shortwave diffuse at the surface ALLOCATE(XCURRENT_T2M (KIU,KJU))! temperature at 2m ALLOCATE(XCURRENT_Q2M (KIU,KJU))! humidity at 2m ALLOCATE(XCURRENT_HU2M (KIU,KJU))! humidity at 2m @@ -117,6 +120,8 @@ IF (LDIAG_IN_RUN) THEN XCURRENT_GFLUX = XUNDEF XCURRENT_LW = XUNDEF XCURRENT_SW = XUNDEF + XCURRENT_SWDIR = XUNDEF + XCURRENT_SWDIFF= XUNDEF XCURRENT_T2M = XUNDEF XCURRENT_Q2M = XUNDEF XCURRENT_HU2M = XUNDEF @@ -133,6 +138,8 @@ ELSE ALLOCATE(XCURRENT_GFLUX (0,0))! ground flux ALLOCATE(XCURRENT_LW (0,0))! incoming longwave at the surface ALLOCATE(XCURRENT_SW (0,0))! incoming Shortwave at the surface + ALLOCATE(XCURRENT_SWDIR (0,0))! incoming Shortwave direct at the surface + ALLOCATE(XCURRENT_SWDIFF(0,0))! incoming Shortwave diffuse at the surface ALLOCATE(XCURRENT_T2M (0,0))! temperature at 2m ALLOCATE(XCURRENT_Q2M (0,0))! humidity at 2m ALLOCATE(XCURRENT_HU2M (0,0))! humidity at 2m diff --git a/src/MNH/ini_lw_setup.f90 b/src/MNH/ini_lw_setup.f90 new file mode 100644 index 0000000000000000000000000000000000000000..e67f466c4af14a9664df360e15b01bc15b29abf7 --- /dev/null +++ b/src/MNH/ini_lw_setup.f90 @@ -0,0 +1,128 @@ +!MNH_LIC Copyright 1994-2014 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. +!----------------------------------------------------------------- +! ########################## + MODULE MODI_INI_LW_SETUP +! ########################## +! +INTERFACE +! + SUBROUTINE INI_LW_SETUP(HRAD,KLWB_MNH,PLW_BANDS) +! +CHARACTER(LEN=*), INTENT(IN) :: HRAD ! type of radiation scheme +INTEGER, INTENT(IN) :: KLWB_MNH ! number of SW band +REAL, DIMENSION(:) :: PLW_BANDS ! wavelength in the middle of each band +! +END SUBROUTINE INI_LW_SETUP +! +END INTERFACE +! +END MODULE MODI_INI_LW_SETUP +! +! +! ####################################################################### + SUBROUTINE INI_LW_SETUP(HRAD,KLWB_MNH,PLW_BANDS) +! ####################################################################### +! +!!**** *INI_LW_SETUP * - initialisation for RRTM radiation LW bands +!! +!! PURPOSE +!! ------- +!! +!!** METHOD +!! ------ +!! +!! EXTERNAL +!! -------- +!! +!! +!! IMPLICIT ARGUMENTS +!! ------------------ +!! +!! REFERENCE +!! --------- +!! +!! AUTHOR +!! ------ +!! V. Masson +!! +!! MODIFICATIONS +!! ------------- +!! Original 03/03/03 +!------------------------------------------------------------------------------- +! +!* 0. DECLARATIONS +! ------------ +! +! +IMPLICIT NONE +! +!* 0.1 Declarations of dummy arguments : +! +CHARACTER(LEN=*), INTENT(IN) :: HRAD ! type of radiation scheme +INTEGER, INTENT(IN) :: KLWB_MNH ! number of SW band +REAL, DIMENSION(:) :: PLW_BANDS ! wavelength in the middle of each band +! +!* 0.2 declarations of local variables +! +!------------------------------------------------------------------------------- +!------------------------------------------------------------------------------- +! +SELECT CASE (HRAD) + CASE ('ECMW','ECRA') + +! number of LW band used in MESONH between surface and radiation +! beware of spectral match with RRTM bands which might not be monotically increasing + + PLW_BANDS(1) = 520E-6 + PLW_BANDS(2) = 30E-6 + PLW_BANDS(3) = 17.9E-6 + PLW_BANDS(4) = 15.1E-6 + PLW_BANDS(5) = 13.2E-6 + PLW_BANDS(6) = 11.2E-6 + PLW_BANDS(7) = 9.73E-6 + PLW_BANDS(8) = 8.87E-6 + PLW_BANDS(9) = 7.83E-6 + PLW_BANDS(10) = 6.98E-6 + PLW_BANDS(11) = 6.16E-6 + PLW_BANDS(12) = 5.18E-6 + PLW_BANDS(13) = 4.62E-6 + PLW_BANDS(14) = 4.32E-6 + PLW_BANDS(15) = 4.02E-6 + PLW_BANDS(16) = 3.59E-6 + CASE ('FIXE','TOPA','NONE') + +! number of SW band used in MESONH between surface and radiation + + IF (KLWB_MNH == 1) THEN + PLW_BANDS = 12E-6 + ELSEIF (KLWB_MNH == 16) THEN + PLW_BANDS(1) = 520E-6 + PLW_BANDS(2) = 30E-6 + PLW_BANDS(3) = 17.9E-6 + PLW_BANDS(4) = 15.1E-6 + PLW_BANDS(5) = 13.2E-6 + PLW_BANDS(6) = 11.2E-6 + PLW_BANDS(7) = 9.73E-6 + PLW_BANDS(8) = 8.87E-6 + PLW_BANDS(9) = 7.83E-6 + PLW_BANDS(10) = 6.98E-6 + PLW_BANDS(11) = 6.16E-6 + PLW_BANDS(12) = 5.18E-6 + PLW_BANDS(13) = 4.62E-6 + PLW_BANDS(14) = 4.32E-6 + PLW_BANDS(15) = 4.02E-6 + PLW_BANDS(16) = 3.59E-6 + ELSE +!callabortstop + CALL ABORT + STOP + ENDIF + +! +END SELECT +!------------------------------------------------------------------------------- +! +END SUBROUTINE INI_LW_SETUP diff --git a/src/MNH/ini_modeln.f90 b/src/MNH/ini_modeln.f90 index 8591f8e3b1e4b3eefcd3617dc275cb54cf60df49..a8dd7420bc9680d2785e303e58198fcaeeec6e1c 100644 --- a/src/MNH/ini_modeln.f90 +++ b/src/MNH/ini_modeln.f90 @@ -273,6 +273,7 @@ END MODULE MODI_INI_MODEL_n !! M.Leriche 10/02/17 prevent negative values in LBX(Y)SVS !! M.Leriche 01/07/2017 Add DIAG chimical surface fluxes !! 09/2017 Q.Rodier add LTEND_UV_FRC +!! 02/2018 Q.Libois ECRAD !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !--------------------------------------------------------------------------------- ! @@ -356,6 +357,7 @@ USE MODD_PASPOL_n ! USE MODI_INI_BUDGET USE MODI_INI_SW_SETUP +USE MODI_INI_LW_SETUP USE MODI_SET_GRID USE MODI_METRICS USE MODI_UPDATE_METRICS @@ -367,6 +369,7 @@ USE MODI_SET_DIRCOS USE MODI_INI_CPL USE MODI_INI_RADIATIONS USE MODI_INI_RADIATIONS_ECMWF +USE MODI_INI_RADIATIONS_ECRAD USE MODI_CH_INIT_FIELD_n USE MODI_INI_DEEP_CONVECTION USE MODI_INI_BIKHARDT_n @@ -429,6 +432,9 @@ USE MODD_CH_M9_n, ONLY:NNONZEROTERMS ! USE MODE_MPPDB USE MODI_INIT_AEROSOL_PROPERTIES +#ifdef MNH_ECRAD +USE YOERDI , ONLY :RCCO2 +#endif ! IMPLICIT NONE ! @@ -480,7 +486,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZBARE ! bare soil fraction ! REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZDIR_ALB ! direct albedo REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZSCA_ALB ! diffuse albedo -REAL, DIMENSION(:,:), ALLOCATABLE :: ZEMIS ! emissivity +REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZEMIS ! emissivity REAL, DIMENSION(:,:), ALLOCATABLE :: ZTSRAD ! surface temperature ! ! @@ -1228,9 +1234,21 @@ END IF ! !* 3.7 Module MODD_RADIATIONS_n (except XOZON and XAER) ! -! -NSWB_MNH = 6 -ALLOCATE(XSW_BANDS (NSWB_MNH)) +! Initialization of SW bands +NSWB_OLD = 6 ! Number of bands in ECMWF original scheme (from Fouquart et Bonnel (1980)) + ! then modified through INI_RADIATIONS_ECMWF but remains equal to 6 practically + +IF (CRAD == 'ECRA') THEN + NSWB_MNH = 14 +ELSE + NSWB_MNH = NSWB_OLD +END IF + +NLWB_MNH = 16 ! For XEMIS initialization (should be spectral in the future) + + +ALLOCATE(XSW_BANDS (NSWB_MNH)) +ALLOCATE(XLW_BANDS (NLWB_MNH)) ALLOCATE(XZENITH (IIU,IJU)) ALLOCATE(XAZIM (IIU,IJU)) ALLOCATE(XALBUV (IIU,IJU)) @@ -1245,7 +1263,7 @@ IF (CRAD /= 'NONE') THEN ALLOCATE(XDIRFLASWD(IIU,IJU,NSWB_MNH)) ALLOCATE(XDIR_ALB(IIU,IJU,NSWB_MNH)) ALLOCATE(XSCA_ALB(IIU,IJU,NSWB_MNH)) - ALLOCATE(XEMIS (IIU,IJU)) + ALLOCATE(XEMIS (IIU,IJU,NLWB_MNH)) ALLOCATE(XTSRAD (IIU,IJU)) ; XTSRAD = 0.0 ALLOCATE(XSEA (IIU,IJU)) ALLOCATE(XZS_XY (IIU,IJU)) @@ -1264,7 +1282,7 @@ ELSE ALLOCATE(XDIRFLASWD(0,0,0)) ALLOCATE(XDIR_ALB(0,0,0)) ALLOCATE(XSCA_ALB(0,0,0)) - ALLOCATE(XEMIS (0,0)) + ALLOCATE(XEMIS (0,0,0)) ALLOCATE(XTSRAD (0,0)) ALLOCATE(XSEA (0,0)) ALLOCATE(XZS_XY (0,0)) @@ -1278,7 +1296,7 @@ ELSE ALLOCATE(XRADEFF(0,0,0)) END IF -IF (CRAD == 'ECMW') THEN +IF (CRAD == 'ECMW' .OR. CRAD == 'ECRA') THEN ALLOCATE(XSTROATM(31,6)) ALLOCATE(XSMLSATM(31,6)) ALLOCATE(XSMLWATM(31,6)) @@ -1970,12 +1988,16 @@ END IF ! ! CALL INI_SW_SETUP (CRAD,NSWB_MNH,XSW_BANDS) +CALL INI_LW_SETUP (CRAD,NLWB_MNH,XLW_BANDS) ! ! ! 17.1.1 Special initialisation for CO2 content ! CO2 (molar mass=44) horizontally and vertically homogeneous at 360 ppm ! XCCO2 = 360.0E-06 * 44.0E-03 / XMD +#ifdef MNH_ECRAD +RCCO2 = 360.0E-06 * 44.0E-03 / XMD +#endif ! ! !* 17.2 Externalized surface fields @@ -1987,7 +2009,7 @@ ZCO2(:,:) = XCCO2 ALLOCATE(ZDIR_ALB(IIU,IJU,NSWB_MNH)) ALLOCATE(ZSCA_ALB(IIU,IJU,NSWB_MNH)) -ALLOCATE(ZEMIS (IIU,IJU)) +ALLOCATE(ZEMIS (IIU,IJU,NLWB_MNH)) ALLOCATE(ZTSRAD (IIU,IJU)) ! IF (IMASDEV>=46) THEN @@ -2017,7 +2039,7 @@ IF (CSURF=='EXTE' .AND. (CPROGRAM=='MESONH' .OR. CPROGRAM=='DIAG ')) THEN CALL GOTO_SURFEX(KMI) !* initialization of surface CALL INIT_GROUND_PARAM_n ('ALL',SIZE(CSV),CSV,ZCO2, & - XZENITH,XAZIM,XSW_BANDS,ZDIR_ALB,ZSCA_ALB, & + XZENITH,XAZIM,XSW_BANDS,XLW_BANDS,ZDIR_ALB,ZSCA_ALB, & ZEMIS,ZTSRAD ) ! IF (SIZE(XEMIS)>0) THEN @@ -2063,7 +2085,7 @@ DEALLOCATE(ZCO2) ! !* in a RESTART case, reads surface radiative quantities in the MESONH file ! -IF (CRAD == 'ECMW' .AND. CGETRAD=='READ') THEN +IF ((CRAD == 'ECMW' .OR. CRAD == 'ECRA') .AND. CGETRAD=='READ') THEN CALL INI_SURF_RAD(TPINIFILE, XDIR_ALB, XSCA_ALB, XEMIS, XTSRAD) END IF ! @@ -2097,7 +2119,7 @@ IF (CRAD == 'ECMW') THEN ! CALL INI_RADIATIONS_ECMWF (TPINIFILE%CNAME,HLUOUT, & XZHAT,XPABST,XTHT,XTSRAD,XLAT,XLON,TDTCUR,TDTEXP, & - CLW,NDLON,NFLEV,NFLUX,NRAD,NSWB,CAER,NAER,NSTATM, & + CLW,NDLON,NFLEV,NFLUX,NRAD,NSWB_OLD,CAER,NAER,NSTATM, & XSTATM,ZSEA,ZTOWN,ZBARE,XOZON, XAER,XDST_WL, LSUBG_COND ) ! DEALLOCATE(ZSEA,ZTOWN,ZBARE) @@ -2105,6 +2127,35 @@ IF (CRAD == 'ECMW') THEN XAER_CLIM(:,:,:,:) =XAER(:,:,:,:) ! END IF + +ELSE IF (CRAD == 'ECRA') THEN +#ifdef MNH_ECRAD +!* get cover mask for aerosols +! + IF (CPROGRAM=='MESONH' .OR. CPROGRAM=='DIAG ') THEN + ALLOCATE(ZSEA(IIU,IJU)) + ALLOCATE(ZTOWN(IIU,IJU)) + ALLOCATE(ZBARE(IIU,IJU)) + IF (CSURF=='EXTE') THEN + CALL GOTO_SURFEX(KMI) + CALL MNHGET_SURF_PARAM_n(PSEA=ZSEA,PTOWN=ZTOWN,PBARE=ZBARE) + ELSE + ZSEA (:,:) = 1. + ZTOWN(:,:) = 0. + ZBARE(:,:) = 0. + END IF +! + CALL INI_RADIATIONS_ECRAD (TPINIFILE%CNAME,HLUOUT, & + XZHAT,XPABST,XTHT,XTSRAD,XLAT,XLON,TDTCUR,TDTEXP, & + CLW,NDLON,NFLEV,NFLUX,NRAD,NSWB_OLD,CAER,NAER,NSTATM, & + XSTATM,ZSEA,ZTOWN,ZBARE,XOZON, XAER,XDST_WL, LSUBG_COND ) + + DEALLOCATE(ZSEA,ZTOWN,ZBARE) + ALLOCATE (XAER_CLIM(SIZE(XAER,1),SIZE(XAER,2),SIZE(XAER,3),SIZE(XAER,4))) + XAER_CLIM(:,:,:,:) = XAER(:,:,:,:) +! + END IF +#endif ELSE ALLOCATE (XOZON(0,0,0)) ALLOCATE (XAER(0,0,0,0)) diff --git a/src/MNH/ini_radconf.f90 b/src/MNH/ini_radconf.f90 index 82fdbd380bc44dc26b28339a776acf4fd3018bfd..9bf10914bbac8ec6b921714ecaa6560cf634c0e5 100644 --- a/src/MNH/ini_radconf.f90 +++ b/src/MNH/ini_radconf.f90 @@ -51,43 +51,45 @@ END MODULE MODI_INI_RADCONF ! AUTHORS. ! -------- ! F.Solmon, March 2002 +! MODIF +!! 02/2018 Q.Libois ECRAD ! !---------------------------------------------------------- ! !* 0. DECLARATIONS ! ------------ ! -USE YOMCST , ONLY : RG, RCPD, RDAY +USE OYOMCST , ONLY : RG, RCPD, RDAY ! -USE YOERAD , ONLY : NMODE, NOVLP, NLW, NSW, & +USE OYOERAD , ONLY : NMODE, NOVLP, NLW, NSW, & NTSW, LRRTM, LONEWSW,LRADIP, LRADLP, LINHOM ! USE YOERDU , ONLY : NUAER, NTRAER, RCDAY, R10E, REPLOG, & REPSC, REPSCO, REPSCQ, REPSCT, REPSCW, DIFF ! -USE MODI_SURDI +USE MODI_OSURDI USE MODI_SULWN -USE MODI_SURRTAB -USE MODI_SURRTPK -USE MODI_SURRTRF -USE MODI_SURRTFTR -USE MODI_RRTM_KGB1 -USE MODI_RRTM_KGB2 -USE MODI_RRTM_KGB3 -USE MODI_RRTM_KGB4 -USE MODI_RRTM_KGB5 -USE MODI_RRTM_KGB6 -USE MODI_RRTM_KGB7 -USE MODI_RRTM_KGB8 -USE MODI_RRTM_KGB9 -USE MODI_RRTM_KGB10 -USE MODI_RRTM_KGB11 -USE MODI_RRTM_KGB12 -USE MODI_RRTM_KGB13 -USE MODI_RRTM_KGB14 -USE MODI_RRTM_KGB15 -USE MODI_RRTM_KGB16 -USE MODI_RRTM_INIT_140GP +USE MODI_OSURRTAB +USE MODI_OSURRTPK +USE MODI_OSURRTRF +USE MODI_OSURRTFTR +!USE MODI_ORRTM_KGB1 +!USE MODI_ORRTM_KGB2 +!USE MODI_ORRTM_KGB3 +!USE MODI_ORRTM_KGB4 +!USE MODI_ORRTM_KGB5 +!USE MODI_ORRTM_KGB6 +!USE MODI_ORRTM_KGB7 +!USE MODI_ORRTM_KGB8 +!USE MODI_ORRTM_KGB9 +!USE MODI_ORRTM_KGB10 +!USE MODI_ORRTM_KGB11 +!USE MODI_ORRTM_KGB12 +!USE MODI_ORRTM_KGB13 +!USE MODI_ORRTM_KGB14 +!USE MODI_ORRTM_KGB15 +!USE MODI_ORRTM_KGB16 +!USE MODI_ORRTM_INIT_140GP USE MODI_SUCST USE MODI_SUSWN USE MODI_SUAERL @@ -155,36 +157,36 @@ REPLOG = 1.E-12 ! ! CALL to the ECMW initialisation routines ! -CALL SURDI +CALL OSURDI CALL SULWN -CALL SURRTAB -CALL SURRTPK -CALL SURRTRF -CALL SURRTFTR +CALL OSURRTAB +CALL OSURRTPK +CALL OSURRTRF +CALL OSURRTFTR ! IF(LRRTM) THEN - CALL RRTM_KGB1 - CALL RRTM_KGB2 - CALL RRTM_KGB3 - CALL RRTM_KGB4 - CALL RRTM_KGB5 - CALL RRTM_KGB6 - CALL RRTM_KGB7 - CALL RRTM_KGB8 - CALL RRTM_KGB9 - CALL RRTM_KGB10 - CALL RRTM_KGB11 - CALL RRTM_KGB12 - CALL RRTM_KGB13 - CALL RRTM_KGB14 - CALL RRTM_KGB15 - CALL RRTM_KGB16 + CALL ORRTM_KGB1 + CALL ORRTM_KGB2 + CALL ORRTM_KGB3 + CALL ORRTM_KGB4 + CALL ORRTM_KGB5 + CALL ORRTM_KGB6 + CALL ORRTM_KGB7 + CALL ORRTM_KGB8 + CALL ORRTM_KGB9 + CALL ORRTM_KGB10 + CALL ORRTM_KGB11 + CALL ORRTM_KGB12 + CALL ORRTM_KGB13 + CALL ORRTM_KGB14 + CALL ORRTM_KGB15 + CALL ORRTM_KGB16 ! !*** mji *** !Initialization routine for RRTM ! Reduce absorption coefficient data from 256 to 140 g-points ! - CALL RRTM_INIT_140GP + CALL ORRTM_INIT_140GP END IF ! !- basic constants diff --git a/src/MNH/ini_radiations_ecmwf.f90 b/src/MNH/ini_radiations_ecmwf.f90 index bc76175577b1753dfa945ecc9ee869167bb16bb9..6c6b9e9fdedf41505c96e01601fbf599a84a53ed 100644 --- a/src/MNH/ini_radiations_ecmwf.f90 +++ b/src/MNH/ini_radiations_ecmwf.f90 @@ -183,7 +183,7 @@ USE PARKIND1, ONLY : JPRB USE YOEAERD , ONLY : RCAEOPS ,RCAEOPL ,RCAEOPU ,RCAEOPD ,RCTRBGA ,& RCVOBGA ,RCSTBGA ,RCTRPT ,RCAEADM ,RCAEROS ,& RCAEADK -USE YOMCST , ONLY : RTT +USE OYOMCST , ONLY : RTT USE YOETHF , ONLY : RTICE ! !MESO-NH modules diff --git a/src/MNH/ini_radiations_ecrad.f90 b/src/MNH/ini_radiations_ecrad.f90 new file mode 100644 index 0000000000000000000000000000000000000000..ceb2f3bf3b0786be30e25047491cf3ee40fb21a2 --- /dev/null +++ b/src/MNH/ini_radiations_ecrad.f90 @@ -0,0 +1,264 @@ +!MNH_LIC Copyright 1994-2014 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. +!----------------------------------------------------------------- +!--------------- special set of characters for RCS information +!----------------------------------------------------------------- +! $Source$ $Revision$ +! masdev4_7 BUG1 2007/06/15 17:47:18 +!----------------------------------------------------------------- +! ########################## + MODULE MODI_INI_RADIATIONS_ECRAD +! ########################## +! +INTERFACE +! + SUBROUTINE INI_RADIATIONS_ECRAD(HINIFILE,HLUOUT, & + PZHAT,PPABST,PTHT,PTSRAD,PLAT,PLON,TPDTCUR,TPDTEXP, & + HLW,KDLON,KFLEV,KFLUX,KRAD,KSWB_OLD,HAER,KAER,KSTATM, & + PSTATM,PSEA,PTOWN,PBARE,POZON, PAER,PDST_WL, OSUBG_COND ) +! +USE MODD_TYPE_DATE + +CHARACTER (LEN=*), INTENT(IN) :: HINIFILE ! Name of the initial file +CHARACTER (LEN=*), INTENT(IN) :: HLUOUT ! name for output-listing + ! of nested models +CHARACTER (LEN=*), INTENT(IN) :: HAER ! aerosol optical thickness climatology +CHARACTER (LEN=4), INTENT(IN) :: HLW ! LW scheme used +! +REAL, DIMENSION(:), INTENT(IN) :: PZHAT ! height level without orography +REAL, DIMENSION(:,:,:), INTENT(IN) :: PPABST! pressure +REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT !Temperature +REAL, DIMENSION(:,:), INTENT(IN) :: PTSRAD ! surface radiative temperature +REAL, DIMENSION (:,:), INTENT(IN) :: PSEA ! sea fraction +REAL, DIMENSION (:,:), INTENT(IN) :: PTOWN ! town fraction +REAL, DIMENSION (:,:), INTENT(IN) :: PBARE ! bare soil fraction +REAL, DIMENSION(:,:), INTENT(IN) :: PLAT, PLON ! arrays of latitude-longitude +! +TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! Current date and time + ! which must be communicated in INIT +TYPE (DATE_TIME), INTENT(IN) :: TPDTEXP ! Current date&time. Ajout PP +! +INTEGER, INTENT(OUT) :: KDLON ! number of columns where the radiation + ! calculations are performed +INTEGER, INTENT(OUT) :: KFLEV ! number of vertical levels where the radiation + ! calculations are performed +INTEGER, INTENT(OUT) :: KFLUX ! number of top and ground fluxes in the output +INTEGER, INTENT(OUT) :: KRAD ! number of satellite radiances to synthesize +INTEGER, INTENT(OUT) :: KAER ! number of AERosol classes +INTEGER, INTENT(OUT) :: KSWB_OLD ! number of SW band +INTEGER, INTENT(OUT) :: KSTATM ! index of the STAndard ATMosphere level just + ! above the model top +! +REAL, DIMENSION(:,:), INTENT(OUT) :: PSTATM ! working standard atmosphere +! +REAL, DIMENSION(:,:,:), POINTER :: POZON ! ozone mixing ratio ( from climato.) +REAL, DIMENSION(:,:,:,:), POINTER :: PAER ! aerosols optical thickness (from climato) +REAL, DIMENSION(:,:,:,:), POINTER :: PDST_WL ! aerosols optical thickness (from climato) +LOGICAL, INTENT(IN) :: OSUBG_COND ! Switch for sub-grid condensation +! +END SUBROUTINE INI_RADIATIONS_ECRAD +! +END INTERFACE +! +END MODULE MODI_INI_RADIATIONS_ECRAD +! +! +! ####################################################################### + SUBROUTINE INI_RADIATIONS_ECRAD(HINIFILE,HLUOUT, & + PZHAT,PPABST,PTHT,PTSRAD,PLAT,PLON,TPDTCUR,TPDTEXP, & + HLW,KDLON,KFLEV,KFLUX,KRAD,KSWB_OLD,HAER,KAER,KSTATM, & + PSTATM,PSEA,PTOWN,PBARE,POZON, PAER,PDST_WL, OSUBG_COND ) +! ####################################################################### +! +! INI_RADIATIONS_ECRAD - Initialization of ECRAD code +! +! PURPOSE +! ------- +! Declarations and intialization of local variables +! Inspired from IFS routine SUECRAD +! Initializes all variables of MODD_PARAM_ECRAD_n not initialized in radiation_scheme or through namelist +! +! INTERFACE +! --------- +! INI_RADIATIONS_ECRAD is called from INI_MODELN. +! +! AUTHOR +! ------ +! Quentin Libois, CNRM +! Original: 2018-02-16 +! +! MODIFICATIONS +! ------------- +! +! TO DO + +! +!* 0. DECLARATIONS +! ------------ +!ECMWF and ECRAD radiation scheme specific modules +#ifdef MNH_ECRAD +USE RADIATION_SETUP, ONLY : SETUP_RADIATION_SCHEME +USE MODI_SURDI +USE MODI_SURRTAB +USE MODI_SURRTPK +USE MODI_SURRTRF +!USE MODI_RRTM_INIT_140GP +!USE MODI_SRTM_INIT +USE MODD_PARAM_ECRAD_n +USE YOERDI +#endif +USE MODD_PARAM_RAD_n, ONLY : XDTRAD +USE MODD_DYN_n, ONLY : XTSTEP +USE PARKIND1 , ONLY : JPRB + +USE MODI_INI_RADIATIONS_ECMWF +USE MODD_TYPE_DATE + +IMPLICIT NONE + +!* 0.1 Declarations of dummy arguments : +! +CHARACTER (LEN=*), INTENT(IN) :: HINIFILE ! Name of the initial file +CHARACTER (LEN=*), INTENT(IN) :: HLUOUT ! name for output-listing + ! of nested models +CHARACTER (LEN=*), INTENT(IN) :: HAER ! aerosol optical thickness climatology +CHARACTER (LEN=4), INTENT(IN) :: HLW ! LW scheme used +! +REAL, DIMENSION(:), INTENT(IN) :: PZHAT ! height level without orography +REAL, DIMENSION(:,:,:), INTENT(IN) :: PPABST! pressure +REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT !Temperature +REAL, DIMENSION(:,:), INTENT(IN) :: PTSRAD ! surface radiative temperature +REAL, DIMENSION (:,:), INTENT(IN) :: PSEA ! sea fraction +REAL, DIMENSION (:,:), INTENT(IN) :: PTOWN ! town fraction +REAL, DIMENSION (:,:), INTENT(IN) :: PBARE ! bare soil fraction +REAL, DIMENSION(:,:), INTENT(IN) :: PLAT, PLON ! arrays of latitude-longitude +! +TYPE (DATE_TIME), INTENT(IN) :: TPDTCUR ! Current date and time +TYPE (DATE_TIME), INTENT(IN) :: TPDTEXP ! Current date&time. Ajout PP +! +INTEGER, INTENT(OUT) :: KDLON ! number of columns where the radiation + ! calculations are performed +INTEGER, INTENT(OUT) :: KFLEV ! number of vertical levels where the radiation + ! calculations are performed +INTEGER, INTENT(OUT) :: KFLUX ! number of top and ground fluxes in the output +INTEGER, INTENT(OUT) :: KRAD ! number of satellite radiances to synthesize +INTEGER, INTENT(OUT) :: KAER ! number of AERosol classes +INTEGER, INTENT(OUT) :: KSWB_OLD ! number of SW band +INTEGER, INTENT(OUT) :: KSTATM ! index of the STAndard ATMosphere level just + ! above the model top +! +REAL, DIMENSION(:,:), INTENT(OUT) :: PSTATM ! working standard atmosphere +! +REAL, DIMENSION(:,:,:), POINTER :: POZON ! ozone mixing ratio ( from climato.) +REAL, DIMENSION(:,:,:,:), POINTER :: PAER ! aerosols optical thickness (from climato) +REAL, DIMENSION(:,:,:,:), POINTER :: PDST_WL ! aerosols optical thickness (from climato) +LOGICAL, INTENT(IN) :: OSUBG_COND ! Switch for sub-grid condensation + +#ifdef MNH_ECRAD + +! Initialization of ECMWF still neede because many things intialized through this routine +CALL INI_RADIATIONS_ECMWF (HINIFILE,HLUOUT, & + PZHAT,PPABST,PTHT,PTSRAD,PLAT,PLON,TPDTCUR,TPDTEXP, & + HLW,KDLON,KFLEV,KFLUX,KRAD,KSWB_OLD,HAER,KAER,KSTATM, & + PSTATM,PSEA,PTOWN,PBARE,POZON, PAER,PDST_WL, OSUBG_COND ) + +! ECRAD specific variables + +LCCNL = .FALSE. ! True if CCN over land diagnosed +LCCNO = .FALSE. ! True if CCN over sea is diagnosed + +! Constant cloud condensation nuclei over land and sea +! In ECMWF original code, those values were 900 and 150 +XCCNLND = 900_JPRB ! constant CCN over land in m-3 (needed for Martin et al., 1994 parameterization) +XCCNSEA = 50_JPRB ! constant CCN over sea in m-3 + +! NAERMACC is in the namelist +! NAERMACC = 0 -> Use of Tegen aerosol climatology +! NAERMACC = 1 -> Use of MACC aerosol classification + +IF (NAERMACC==0) THEN ! number of aerosol species in MACC climatology + NMCVAR = 6 +ELSE + NMCVAR = 12 +END IF + +! MACC Aerosol climatology parameters +NMCLAT = 61 +NMCLON = 120 +NMCLEV = 1 ! because optical depth only + +! Characteristic height for aerosols vertical distribution +XEXPBC = 1000 ! Black Carbon +XEXPSF = 4000 ! Sulfates +XEXPSS = 1000 ! Sea Salts +XEXPDS = 3000 ! Dust +XEXPOM = 2000 ! Organic Matter + +NMINICE = 1 ! latitude dependence of RMINICE (0 otherwise) +XRE2DE = 0.64952_JPRB ! Conversion factor between effective radius and particle size for ice +XRMINICE = 60._JPRB ! Minimum ice cloud radius + +! Decorrelation lengths for cloud fraction and liquid water content +NDECOLAT = 2 ! "Improved" decorrelation length of cloud fraction +XDECORR_CF = 2.0_JPRB +XDECORR_CW = 1.0_JPRB + +! Constant mixing ratios for trace gases +XCCH4 = 1.72E-06_JPRB +XCN2O = 310.E-09_JPRB +XCNO2 = 500.E-13_JPRB +XCCFC11 = 280.E-12_JPRB +XCCFC12 = 484.E-12_JPRB +XCCFC22 = 0.E-12_JPRB +XCCCL4 = 0.E-12_JPRB +! initialisation YOERDI +RCCH4 = 1.72E-06_JPRB +RCN2O = 310.E-09_JPRB +RCNO2 = 500.E-13_JPRB +RCCFC11 = 280.E-12_JPRB +RCCFC12 = 484.E-12_JPRB +RCCFC22 = 0.E-12_JPRB +RCCCL4 = 0.E-12_JPRB + +! Radiation computed every NRADFR timesteps +NRADFR = INT(XDTRAD/XTSTEP) + +LCentredTimeSZA = .TRUE. ! compute SZA as centered between radiation time steps +LAverageSZA = .TRUE. ! compute SZA as average between radiation time steps. + ! If True, LCentredTimeSZA must be True as well + +!- RRTM as LW and SW scheme +LRRTM = .TRUE. +LSRTM = .TRUE. + +NREDGLW = 1 ! 140 g-points configuration of RRTM LW +NREDGSW = 1 ! 112 g-points configuration of RRTM SW + +LAPPROXSWUPDATE = .TRUE. +LAPPROXLWUPDATE = .TRUE. + +! Directory where to read ecRad databases +CDATADIR = "." + +! Load modules from ifsrrtm +CALL SURDI +CALL SURRTAB +CALL SURRTPK +CALL SURRTRF +IF (LRRTM) THEN + CALL RRTM_INIT_140GP(trim(CDATADIR)) ! LW +ENDIF +IF (LSRTM) THEN + CALL SRTM_INIT(trim(CDATADIR)) ! SW +ENDIF + +! Use the above parameters to prepare ecRad setup +CALL SETUP_RADIATION_SCHEME() + +#else +PRINT *, "ECRAD LIBRARY NOT AVAILABLE = ###INI_RADIATIONS_ECRAD###" +#endif + +END SUBROUTINE INI_RADIATIONS_ECRAD diff --git a/src/MNH/ini_surf_rad.f90 b/src/MNH/ini_surf_rad.f90 index 552d2bc0a6d3c85c0e2dbc08ad2083c1f9fb9283..f85795a8a34d05ffa1c3c4c7a0b12d313a19bec2 100644 --- a/src/MNH/ini_surf_rad.f90 +++ b/src/MNH/ini_surf_rad.f90 @@ -16,7 +16,7 @@ USE MODD_IO_ll, ONLY : TFILEDATA 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 ! END SUBROUTINE INI_SURF_RAD @@ -56,6 +56,7 @@ END MODULE MODI_INI_SURF_RAD !! MODIFICATIONS !! ------------- !! Original 03/03/03 +!! 02/2018 Q.Libois ECRAD !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !------------------------------------------------------------------------------- ! @@ -73,7 +74,7 @@ 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 diff --git a/src/MNH/ini_sw_setup.f90 b/src/MNH/ini_sw_setup.f90 index 0990e0e18f4ca075a813e35800f0994d8a3d8e4c..e74318b9c236b5ffa7b503650d76cd3c1fa81bef 100644 --- a/src/MNH/ini_sw_setup.f90 +++ b/src/MNH/ini_sw_setup.f90 @@ -57,6 +57,7 @@ END MODULE MODI_INI_SW_SETUP !! ------------- !! Original 03/03/03 !! modification : 01/09/03 Y. Seity, KSWB_MNH=6 +!! 02/2018 Q.Libois ECRAD !------------------------------------------------------------------------------- ! !* 0. DECLARATIONS @@ -91,10 +92,26 @@ SELECT CASE (HRAD) PSW_BANDS(5) = 1.785E-6 PSW_BANDS(6) = 3.19E-6 ELSE -!callabortstop -CALL ABORT + !callabortstop + CALL ABORT STOP ENDIF + + CASE ('ECRA') + PSW_BANDS(1) = 3.462E-6 + PSW_BANDS(2) = 2.788E-6 + PSW_BANDS(3) = 2.325E-6 + PSW_BANDS(4) = 2.046E-6 + PSW_BANDS(5) = 1.784E-6 + PSW_BANDS(6) = 1.462E-6 + PSW_BANDS(7) = 1.270E-6 + PSW_BANDS(8) = 1.010E-6 + PSW_BANDS(9) = 0.702E-6 + PSW_BANDS(10) = 0.533E-6 + PSW_BANDS(11) = 0.393E-6 + PSW_BANDS(12) = 0.304E-6 + PSW_BANDS(13) = 0.231E-6 + PSW_BANDS(14) = 8.021E-6 CASE ('FIXE','TOPA','NONE') diff --git a/src/MNH/init_ground_paramn.f90 b/src/MNH/init_ground_paramn.f90 index 0be82b210a7c9a6efade185e3c2b2d1bdd0bdb80..d705c8ef6e5376e9f73535c494c65b4c2e8e5a8c 100644 --- a/src/MNH/init_ground_paramn.f90 +++ b/src/MNH/init_ground_paramn.f90 @@ -8,7 +8,7 @@ ! ####################### INTERFACE SUBROUTINE INIT_GROUND_PARAM_n(HINIT,KSV,HSV,PCO2, & - PZENITH,PAZIM,PSW_BANDS,PDIR_ALB,PSCA_ALB, & + PZENITH,PAZIM,PSW_BANDS,PLW_BANDS,PDIR_ALB,PSCA_ALB, & PEMIS,PTSRAD ) ! CHARACTER(LEN=3), INTENT(IN) :: HINIT ! choice of fields to initialize @@ -17,10 +17,11 @@ CHARACTER(LEN=6), DIMENSION(KSV), INTENT(INOUT)::HSV ! name of all scalar REAL, DIMENSION(:,:), INTENT(IN) :: PCO2 ! CO2 concentration (kg/kg) REAL, DIMENSION(:,:), INTENT(IN) :: PZENITH ! solar zenithal angle REAL, DIMENSION(:,:), INTENT(IN) :: PAZIM ! solar azimuthal angle (rad from N, clockwise) -REAL, DIMENSION(:), INTENT(IN) :: PSW_BANDS ! middle wavelength of each band +REAL, DIMENSION(:), INTENT(IN) :: PSW_BANDS ! middle wavelength of each SW band +REAL, DIMENSION(:), INTENT(IN) :: PLW_BANDS ! middle wavelength of each LW band REAL, DIMENSION(:,:,:),INTENT(OUT) :: PDIR_ALB ! direct albedo for each band REAL, DIMENSION(:,:,:),INTENT(OUT) :: PSCA_ALB ! diffuse albedo for each band -REAL, DIMENSION(:,:), INTENT(OUT) :: PEMIS ! emissivity +REAL, DIMENSION(:,:,:),INTENT(OUT) :: PEMIS ! spectral emissivity REAL, DIMENSION(:,:), INTENT(OUT) :: PTSRAD ! radiative temperature ! END SUBROUTINE INIT_GROUND_PARAM_n @@ -30,7 +31,7 @@ END MODULE MODI_INIT_GROUND_PARAM_n ! ! ############################################################# SUBROUTINE INIT_GROUND_PARAM_n(HINIT,KSV,HSV,PCO2, & - PZENITH,PAZIM,PSW_BANDS,PDIR_ALB,PSCA_ALB, & + PZENITH,PAZIM,PSW_BANDS,PLW_BANDS,PDIR_ALB,PSCA_ALB, & PEMIS,PTSRAD ) ! ############################################################# ! @@ -64,6 +65,7 @@ END MODULE MODI_INIT_GROUND_PARAM_n !! Nov. 2010 (J.Escobar) PGI BUG , add SIZE(CSV) to interface !! 06/2016 (G.Delautier) phasage surfex 8 !! 01/2018 (G.Delautier) SURFEX 8.1 +!! 02/2018 Q.Libois ECRAD !! 03/2018 (P.Wautelet) replace ADD_FORECAST_TO_DATE_SURF by DATETIME_CORRECTDATE !------------------------------------------------------------------------------- ! @@ -103,10 +105,11 @@ CHARACTER(LEN=6), DIMENSION(KSV), INTENT(INOUT)::HSV ! name of all scalar REAL, DIMENSION(:,:), INTENT(IN) :: PCO2 ! CO2 concentration (kg/kg) REAL, DIMENSION(:,:), INTENT(IN) :: PZENITH ! solar zenithal angle REAL, DIMENSION(:,:), INTENT(IN) :: PAZIM ! solar azimuthal angle (rad from N, clockwise) -REAL, DIMENSION(:), INTENT(IN) :: PSW_BANDS ! middle wavelength of each band +REAL, DIMENSION(:), INTENT(IN) :: PSW_BANDS ! middle wavelength of each SW band +REAL, DIMENSION(:), INTENT(IN) :: PLW_BANDS ! middle wavelength of each LW band REAL, DIMENSION(:,:,:),INTENT(OUT) :: PDIR_ALB ! direct albedo for each band REAL, DIMENSION(:,:,:),INTENT(OUT) :: PSCA_ALB ! diffuse albedo for each band -REAL, DIMENSION(:,:), INTENT(OUT) :: PEMIS ! emissivity +REAL, DIMENSION(:,:,:), INTENT(OUT) :: PEMIS ! emissivity REAL, DIMENSION(:,:), INTENT(OUT) :: PTSRAD ! radiative temperature ! ! @@ -119,15 +122,15 @@ REAL, DIMENSION(:), ALLOCATABLE :: ZZENITH ! solar zenithal angle REAL, DIMENSION(:), ALLOCATABLE :: ZAZIM ! solar azimuthal angle REAL, DIMENSION(:,:), ALLOCATABLE :: ZDIR_ALB ! direct albedo REAL, DIMENSION(:,:), ALLOCATABLE :: ZSCA_ALB ! diffuse albedo -REAL, DIMENSION(:), ALLOCATABLE :: ZEMIS ! emissivity +REAL, DIMENSION(:), ALLOCATABLE :: ZEMIS ! spectral emissivity REAL, DIMENSION(:), ALLOCATABLE :: ZTSRAD ! radiative temperature REAL, DIMENSION(:), ALLOCATABLE :: ZTSURF ! TYPE(DATE_SURF) :: TDATE_END ! REAL :: ZDURATION -! INTEGER :: ISWB ! number of SW bands +INTEGER :: ILWB ! number of LW bands INTEGER :: IIU ! 1st array size INTEGER :: IJU ! 2nd array size INTEGER :: IIB ! X array physical boundary @@ -145,6 +148,7 @@ TYPE (DATE_TIME) :: TZDATE ! ! ISWB = SIZE(PSW_BANDS) +ILWB = SIZE(PLW_BANDS) ! CALL GET_DIM_EXT_ll('B',IIU,IJU) CALL GET_INDICE_ll (IIB,IJB,IIE,IJE) @@ -208,7 +212,9 @@ PTSRAD = XUNDEF ! PDIR_ALB(IIB:IIE,IJB:IJE,:) = RESHAPE(ZDIR_ALB, (/ IIE-IIB+1, IJE-IJB+1, ISWB /) ) PSCA_ALB(IIB:IIE,IJB:IJE,:) = RESHAPE(ZSCA_ALB, (/ IIE-IIB+1, IJE-IJB+1, ISWB /) ) -PEMIS (IIB:IIE,IJB:IJE) = RESHAPE(ZEMIS, (/ IIE-IIB+1, IJE-IJB+1 /) ) +DO JLAYER=1,SIZE(PEMIS,3) + PEMIS (IIB:IIE,IJB:IJE,JLAYER) = RESHAPE(ZEMIS, (/ IIE-IIB+1, IJE-IJB+1 /) ) +END DO PTSRAD (IIB:IIE,IJB:IJE) = RESHAPE(ZTSRAD, (/ IIE-IIB+1, IJE-IJB+1 /) ) !------------------------------------------------------------------------------- DEALLOCATE(ZCO2 ) diff --git a/src/MNH/modd_diag_in_run.f90 b/src/MNH/modd_diag_in_run.f90 index 57ded81dbe73ef4cc1b9fb72d20b2e28f9778683..0bec81d24c3b9cd08b09ef1edafee5bc7c4f2003 100644 --- a/src/MNH/modd_diag_in_run.f90 +++ b/src/MNH/modd_diag_in_run.f90 @@ -9,6 +9,8 @@ ! MASDEV4_7 modd 2006/10/24 10:07:40 !----------------------------------------------------------------- MODULE MODD_DIAG_IN_RUN +! Modifications +!! 02/2018 Q.Libois ECRAD ! !* stores instantaneous diagnostic arrays for the current time-step ! @@ -23,6 +25,8 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: XCURRENT_LEI ! Solid latent heat flux REAL, DIMENSION(:,:), ALLOCATABLE :: XCURRENT_GFLUX ! ground flux REAL, DIMENSION(:,:), ALLOCATABLE :: XCURRENT_LW ! incoming longwave at the surface REAL, DIMENSION(:,:), ALLOCATABLE :: XCURRENT_SW ! incoming Shortwave at the surface +REAL, DIMENSION(:,:), ALLOCATABLE :: XCURRENT_SWDIR ! incoming Shortwave direct at the surface +REAL, DIMENSION(:,:), ALLOCATABLE :: XCURRENT_SWDIFF! incoming Shortwave diffuse at the surface REAL, DIMENSION(:,:), ALLOCATABLE :: XCURRENT_T2M ! temperature at 2m REAL, DIMENSION(:,:), ALLOCATABLE :: XCURRENT_Q2M ! humidity at 2m REAL, DIMENSION(:,:), ALLOCATABLE :: XCURRENT_HU2M ! relative humidity at 2m diff --git a/src/MNH/modd_param_ecradn.f90 b/src/MNH/modd_param_ecradn.f90 new file mode 100644 index 0000000000000000000000000000000000000000..988888427f73a72b906136430fc581646778aa82 --- /dev/null +++ b/src/MNH/modd_param_ecradn.f90 @@ -0,0 +1,293 @@ +!MNH_LIC Copyright 1994-2014 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. +!----------------------------------------------------------------- +!--------------- special set of characters for RCS information +!----------------------------------------------------------------- +! $Source$ $Revision$ +! MASDEV4_7 modd 2006/11/23 17:28:26 +!----------------------------------------------------------------- +! ######################## + MODULE MODD_PARAM_ECRAD_n +! ######################## +! +!!**** *MODD_PARAM_ECRAD_n* - declaration of the control parameters for +!! calling the ECRAD radiation scheme +!! +!! PURPOSE +!! ------- +!! The purpose of this declarative module is to define the set of space +!! and time control parameters for the ECRAD radiation computations. +!! Equivalent to YOERAD type YRERAD of IFS +!! +!! +!!** IMPLICIT ARGUMENTS +!! ------------------ +!! None +!! +!! REFERENCE +!! --------- +!! +!! +!! AUTHOR +!! ------ +!! Q. Libois *CNRM-GMME* +!! +!! MODIFICATIONS +!! ------------- +!! Original 29/05/2017 add ECRAD parameters as namelist +!! Q. Libois +!------------------------------------------------------------------------------- +! +!* 0. DECLARATIONS +! ------------ + +USE MODD_PARAMETERS, ONLY: JPMODELMAX +USE PARKIND1 , ONLY : JPIM,JPRB +#ifdef MNH_ECRAD +USE radiation_config, ONLY : config_type +#endif +IMPLICIT NONE + +TYPE PARAM_ECRAD_t + ! Parameters entered in namelist NAM_PARAM_ECRAD + INTEGER(KIND=JPIM) :: NSWSOLVER ! SW solver ; 0: 'McICA ; 1: 'SPARTACUS' 2: 'SPARTACUS' with 3D effects + INTEGER(KIND=JPIM) :: NLWSOLVER ! LW solver ; 0: 'McICA ; 1: 'SPARTACUS' 2: 'SPARTACUS' with 3D effects + INTEGER(KIND=JPIM) :: NLIQOPT ! optical properties of liquid particles ; 2 = Slingo ; 3 = SOCRATES + INTEGER(KIND=JPIM) :: NICEOPT ! optical properties of liquid particles ; 3 = Fu ; 4 = Baran + INTEGER(KIND=JPIM) :: NGAS ! gas model 1 = 'Monochromatic', 2 = 'RRTMG-IFS', 3 = 'RRTMG-PSRAD' + INTEGER(KIND=JPIM) :: NOVLP ! overlap assumption ; 0= 'Max-Ran' ; 1= 'Exp-Ran'; 2 = 'Exp-Exp' + INTEGER(KIND=JPIM) :: NREG ! Number of regions for Triple Clouds + INTEGER(KIND=JPIM) :: NRADLP ! 0: ERA-15, 1: Zhang and Rossow, 2: Martin (1994), 3: Martin (1994) and Woods (2000) + INTEGER(KIND=JPIM) :: NRADIP ! 0: 40 mum, 1: Liou and Ou (1994), 2: Liou and Ou (1994) improved, + ! 3: Sun and Rikus (1999) + REAL(KIND=JPRB) :: XCLOUD_FRAC_STD ! Cloud water content horizontal fractional standard deviation in a gridbox + INTEGER(KIND=JPIM) :: NLWSCATTERING ! 0: No longwave scattering + ! 1: Longwave scattering by clouds only + ! 2: Longwave scattering by clouds and aerosols + + ! Parameters initialized in ini_radiations_ecrad - present in yoerad of IFS + LOGICAL :: LCCNO ! If True CCN over ocean is diagnosed, otherwise default value + LOGICAL :: LCCNL ! If True CCN over land is diagnosed, otherwise default value + REAL(KIND=JPRB) :: XCCNSEA ! default CCN over sea + REAL(KIND=JPRB) :: XCCNLND ! default CCN over land + + ! Aerosols + INTEGER(KIND=JPIM) :: NAERMACC ! Use of Tegen (0) or MACC (1) aerosol classification + ! (that is over 6 or 12 aerosols species) + INTEGER(KIND=JPIM) :: NMCLAT ! number of latitudes in MACC climatology + INTEGER(KIND=JPIM) :: NMCLON ! number of longitudes in MACC climatology + INTEGER(KIND=JPIM) :: NMCLEV ! number of vertical levels in MACC climatology + INTEGER(KIND=JPIM) :: NMCVAR ! number of aerosol species in MACC + REAL(KIND=JPRB) :: XEXPBC ! exponential height of BC (m) + REAL(KIND=JPRB) :: XEXPSF ! exponential height of sulfates (m) + REAL(KIND=JPRB) :: XEXPSS ! exponential height of sea salts (m) + REAL(KIND=JPRB) :: XEXPDS ! exponential height of dust (m) + REAL(KIND=JPRB) :: XEXPOM ! exponential height of organic matter (m) + + INTEGER(KIND=JPIM) :: NMINICE ! variation of RMINICE with latitude (1), or not (0) + REAL(KIND=JPRB) :: XRE2DE ! CONVERSION FACTOR BETWWEN EFFECTIVE RADIUS AND PARTICLE SIZE + REAL(KIND=JPRB) :: XRMINICE ! MINIMUM SIZE FOR ICE PARTICLES (um) FOR ICE + INTEGER(KIND=JPIM) :: NDECOLAT ! Latitude dependence of cloud correlation length + ! 0: SPECIFIED INDEPENDENT OF LATITUDE, 1: SHONK-HOGAN, 2: IMPROVED + REAL(KIND=JPRB) :: XDECORR_CF ! Decorrelation length (km) for cloud fraction + REAL(KIND=JPRB) :: XDECORR_CW ! Decorrelation length (km) for cloud water content + INTEGER(KIND=JPIM) :: NRADFR ! radiation every "NRADFR" time steps + LOGICAL :: LCentredTimeSZA ! Compute solar zenith angle in radiation scheme half way between + ! calls to radiation scheme (rather than previous behaviour, + ! which is half way between calls plus half a model timestep) + LOGICAL :: LAverageSZA ! Compute an averaged solar zenith angle across the time interval + ! required (either a model timestep or a radiationtimestep) + ! Should be used with LCentredTimeSZA=TRUE. + ! Trace gases constant mixing ratios + REAL(KIND=JPRB) :: XCCH4 + REAL(KIND=JPRB) :: XCN2O + REAL(KIND=JPRB) :: XCNO2 + REAL(KIND=JPRB) :: XCCFC11 + REAL(KIND=JPRB) :: XCCFC12 + REAL(KIND=JPRB) :: XCCFC22 + REAL(KIND=JPRB) :: XCCCL4 + + ! Use of RRTM for SW and LW + LOGICAL :: LRRTM + LOGICAL :: LSRTM + + INTEGER(KIND=JPIM) :: NREDGSW ! Number of gpoints of SW RRTM + ! 0 full resolution for RRTM_SW (224) + ! 1 ECMWF High resolution model configuration (_SW: 112) + ! 2 ECMWF EPS configuration (_SW: 56) + INTEGER(KIND=JPIM) :: NREDGLW ! Number of gpoints of LW RRTM + ! 0 full resolution for RRTM_LW (256) + ! 1 ECMWF High resolution model configuration (_LW: 140) + ! 2 ECMWF EPS configuration (_LW: 70) + + LOGICAL :: LAPPROXSWUPDATE !Update the shortwave upwelling flux + !every gridpoint to account for the local + !value of surface albedo + LOGICAL :: LAPPROXLWUPDATE ! Update the longwave upwelling flux every + !timestep/gridpoint using the stored rate + !of change of the fluxes with respect to + !the surface upwelling longwave flux + + ! Parameters initialized in ini_radiations_ecrad - not present in yoerad of IFS + CHARACTER (LEN=255):: CDATADIR! RRTM data directory + + +! INTEGER(KIND=JPIM) :: NSW ! number of SW spectral intervals for albedo +! INTEGER(KIND=JPIM) :: NSW_EC ! number of SW spectral intervals for SRTM +! LOGICAL :: LPSRAD +! LOGICAL :: LSW_ML_E +! LOGICAL :: LLW_ML_E +! LOGICAL :: LEFF3D ! accounting for 3D effects with Spartacus? +! LOGICAL :: LSIDEM ! Side effects + INTEGER(KIND=JPIM) :: NACTAERO + INTEGER(KIND=JPIM) :: NAERCLD ! INDEX TO CONTROL SWITCHES FOR AEROSOL-MICROPHYSICS INTERACTION +#ifdef MNH_ECRAD + type(config_type) :: rad_config +#endif +!------------------------------------------------------------------------------- +! +END TYPE PARAM_ECRAD_t + +TYPE(PARAM_ECRAD_t), DIMENSION(JPMODELMAX), TARGET, SAVE :: PARAM_ECRAD_MODEL + +! PRINT*,"MODD_PARAM_ECRAD_n",NSWSOLVER +INTEGER(KIND=JPIM), POINTER :: NSWSOLVER=>NULL() +INTEGER(KIND=JPIM), POINTER :: NLWSOLVER=>NULL() +INTEGER(KIND=JPIM), POINTER :: NLIQOPT=>NULL() +INTEGER(KIND=JPIM), POINTER :: NICEOPT=>NULL() +INTEGER(KIND=JPIM), POINTER :: NGAS=>NULL() +INTEGER(KIND=JPIM), POINTER :: NOVLP=>NULL() +INTEGER(KIND=JPIM), POINTER :: NREG=>NULL() +!LOGICAL, POINTER :: LEFF3D=>NULL() +!LOGICAL, POINTER :: LSIDEM=>NULL() +!LOGICAL, POINTER :: LLWCSCA=>NULL() +!LOGICAL, POINTER :: LLWASCA=>NULL() +LOGICAL, POINTER :: LPSRAD=>NULL() +!LOGICAL, POINTER :: LSW_ML_E=>NULL() +!LOGICAL, POINTER :: LLW_ML_E=>NULL() +INTEGER(KIND=JPIM), POINTER :: NAERMACC=>NULL() +REAL(KIND=JPRB), POINTER :: XDECORR_CF=>NULL() +REAL(KIND=JPRB), POINTER :: XDECORR_CW=>NULL() +INTEGER(KIND=JPIM), POINTER :: NRADFR=>NULL() +LOGICAL, POINTER :: LCentredTimeSZA=>NULL() +LOGICAL, POINTER :: LAverageSZA=>NULL() +INTEGER(KIND=JPIM), POINTER :: NLWSCATTERING=>NULL() +INTEGER(KIND=JPIM), POINTER :: NRADLP=>NULL() +INTEGER(KIND=JPIM), POINTER :: NRADIP=>NULL() +INTEGER(KIND=JPIM), POINTER :: NACTAERO=>NULL() +INTEGER(KIND=JPIM), POINTER :: NMCVAR=>NULL() +INTEGER(KIND=JPIM), POINTER :: NMCLAT=>NULL() +INTEGER(KIND=JPIM), POINTER :: NMCLON=>NULL() +INTEGER(KIND=JPIM), POINTER :: NMCLEV=>NULL() +REAL(KIND=JPRB), POINTER :: XEXPBC=>NULL() +REAL(KIND=JPRB), POINTER :: XEXPSF=>NULL() +REAL(KIND=JPRB), POINTER :: XEXPDS=>NULL() +REAL(KIND=JPRB), POINTER :: XEXPSS=>NULL() +REAL(KIND=JPRB), POINTER :: XEXPOM=>NULL() +INTEGER(KIND=JPIM), POINTER :: NAERCLD=>NULL() +LOGICAL, POINTER :: LCCNO=>NULL() +LOGICAL, POINTER :: LCCNL=>NULL() +REAL(KIND=JPRB), POINTER :: XCCNSEA=>NULL() +REAL(KIND=JPRB), POINTER :: XCCNLND=>NULL() +REAL(KIND=JPRB), POINTER :: XRE2DE=>NULL() +REAL(KIND=JPRB), POINTER :: XRMINICE=>NULL() +INTEGER(KIND=JPIM), POINTER :: NMINICE=>NULL() +INTEGER(KIND=JPIM), POINTER :: NDECOLAT=>NULL() +REAL(KIND=JPRB), POINTER :: XCLOUD_FRAC_STD=>NULL() +!INTEGER, POINTER :: NSW=>NULL() +!INTEGER, POINTER :: NSW_EC=>NULL() +REAL(KIND=JPRB), POINTER :: XCCH4=>NULL() +REAL(KIND=JPRB), POINTER :: XCN2O=>NULL() +REAL(KIND=JPRB), POINTER :: XCNO2=>NULL() +REAL(KIND=JPRB), POINTER :: XCCFC11=>NULL() +REAL(KIND=JPRB), POINTER :: XCCFC12=>NULL() +REAL(KIND=JPRB), POINTER :: XCCFC22=>NULL() +REAL(KIND=JPRB), POINTER :: XCCCL4=>NULL() +LOGICAL, POINTER :: LRRTM=>NULL() +LOGICAL, POINTER :: LSRTM=>NULL() +INTEGER(KIND=JPIM), POINTER :: NREDGLW=>NULL() +INTEGER(KIND=JPIM), POINTER :: NREDGSW=>NULL() +LOGICAL, POINTER :: LAPPROXSWUPDATE=>NULL() +LOGICAL, POINTER :: LAPPROXLWUPDATE=>NULL() +CHARACTER (LEN=255), POINTER :: CDATADIR=>NULL() +#ifdef MNH_ECRAD +type(config_type), pointer :: rad_config +#endif +CONTAINS + +SUBROUTINE PARAM_ECRAD_GOTO_MODEL(KFROM, KTO) +INTEGER, INTENT(IN) :: KFROM, KTO +! +! Save current state for allocated arrays +! Current model is set to model KTO + NSWSOLVER=>PARAM_ECRAD_MODEL(KTO)%NSWSOLVER + NLWSOLVER=>PARAM_ECRAD_MODEL(KTO)%NLWSOLVER + NLIQOPT=>PARAM_ECRAD_MODEL(KTO)%NLIQOPT + NICEOPT=>PARAM_ECRAD_MODEL(KTO)%NICEOPT + NGAS=>PARAM_ECRAD_MODEL(KTO)%NGAS + NOVLP=>PARAM_ECRAD_MODEL(KTO)%NOVLP + NREG=>PARAM_ECRAD_MODEL(KTO)%NREG +! LEFF3D=>PARAM_ECRAD_MODEL(KTO)%LEFF3D +! LSIDEM=>PARAM_ECRAD_MODEL(KTO)%LSIDEM +! LLWCSCA=>PARAM_ECRAD_MODEL(KTO)%LLWCSCA +! LLWASCA=>PARAM_ECRAD_MODEL(KTO)%LLWASCA +! LPSRAD=>PARAM_ECRAD_MODEL(KTO)%LPSRAD +! LSW_ML_E=>PARAM_ECRAD_MODEL(KTO)%LSW_ML_E +! LLW_ML_E=>PARAM_ECRAD_MODEL(KTO)%LLW_ML_E + NAERMACC=>PARAM_ECRAD_MODEL(KTO)%NAERMACC + XDECORR_CF=>PARAM_ECRAD_MODEL(KTO)%XDECORR_CF + XDECORR_CW=>PARAM_ECRAD_MODEL(KTO)%XDECORR_CW + NRADFR=>PARAM_ECRAD_MODEL(KTO)%NRADFR + LCentredTimeSZA=>PARAM_ECRAD_MODEL(KTO)%LCentredTimeSZA + LAverageSZA=>PARAM_ECRAD_MODEL(KTO)%LAverageSZA + NLWSCATTERING=>PARAM_ECRAD_MODEL(KTO)%NLWSCATTERING + NRADLP=>PARAM_ECRAD_MODEL(KTO)%NRADLP + NRADIP=>PARAM_ECRAD_MODEL(KTO)%NRADIP + NACTAERO=>PARAM_ECRAD_MODEL(KTO)%NACTAERO + NMCVAR=>PARAM_ECRAD_MODEL(KTO)%NMCVAR + NMCLAT=>PARAM_ECRAD_MODEL(KTO)%NMCLAT + NMCLON=>PARAM_ECRAD_MODEL(KTO)%NMCLON + NMCLEV=>PARAM_ECRAD_MODEL(KTO)%NMCLEV + XEXPBC=>PARAM_ECRAD_MODEL(KTO)%XEXPBC + XEXPSF=>PARAM_ECRAD_MODEL(KTO)%XEXPSF + XEXPSS=>PARAM_ECRAD_MODEL(KTO)%XEXPSS + XEXPDS=>PARAM_ECRAD_MODEL(KTO)%XEXPDS + XEXPOM=>PARAM_ECRAD_MODEL(KTO)%XEXPOM + NAERCLD=>PARAM_ECRAD_MODEL(KTO)%NAERCLD + LCCNO=>PARAM_ECRAD_MODEL(KTO)%LCCNO + LCCNL=>PARAM_ECRAD_MODEL(KTO)%LCCNL + XCCNSEA=>PARAM_ECRAD_MODEL(KTO)%XCCNSEA + XCCNLND=>PARAM_ECRAD_MODEL(KTO)%XCCNLND + XRE2DE=>PARAM_ECRAD_MODEL(KTO)%XRE2DE + XRMINICE=>PARAM_ECRAD_MODEL(KTO)%XRMINICE + NMINICE=>PARAM_ECRAD_MODEL(KTO)%NMINICE + NDECOLAT=>PARAM_ECRAD_MODEL(KTO)%NDECOLAT + XCLOUD_FRAC_STD=>PARAM_ECRAD_MODEL(KTO)%XCLOUD_FRAC_STD +! NSW=>PARAM_ECRAD_MODEL(KTO)%NSW +! NSW_EC=>PARAM_ECRAD_MODEL(KTO)%NSW_EC + XCCH4=>PARAM_ECRAD_MODEL(KTO)%XCCH4 + XCN2O=>PARAM_ECRAD_MODEL(KTO)%XCN2O + XCNO2=>PARAM_ECRAD_MODEL(KTO)%XCNO2 + XCCFC11=>PARAM_ECRAD_MODEL(KTO)%XCCFC11 + XCCFC12=>PARAM_ECRAD_MODEL(KTO)%XCCFC12 + XCCFC22=>PARAM_ECRAD_MODEL(KTO)%XCCFC22 + XCCCL4=>PARAM_ECRAD_MODEL(KTO)%XCCCL4 + LRRTM=>PARAM_ECRAD_MODEL(KTO)%LRRTM + LSRTM=>PARAM_ECRAD_MODEL(KTO)%LSRTM + NREDGLW=>PARAM_ECRAD_MODEL(KTO)%NREDGLW + NREDGSW=>PARAM_ECRAD_MODEL(KTO)%NREDGSW + LAPPROXSWUPDATE=>PARAM_ECRAD_MODEL(KTO)%LAPPROXSWUPDATE + LAPPROXLWUPDATE=>PARAM_ECRAD_MODEL(KTO)%LAPPROXLWUPDATE + CDATADIR=>PARAM_ECRAD_MODEL(KTO)%CDATADIR +#ifdef MNH_ECRAD + rad_config=>PARAM_ECRAD_MODEL(KTO)%rad_config +#endif +END SUBROUTINE PARAM_ECRAD_GOTO_MODEL + +END MODULE MODD_PARAM_ECRAD_n + + + + diff --git a/src/MNH/modd_radiationsn.f90 b/src/MNH/modd_radiationsn.f90 index 8dc9773e60a0897eb4ff7510644de571a1b49b20..455a2bc04fccdd17251079516537718561c1c621 100644 --- a/src/MNH/modd_radiationsn.f90 +++ b/src/MNH/modd_radiationsn.f90 @@ -57,7 +57,9 @@ TYPE RADIATIONS_t INTEGER :: NFLUX ! number of top and ground fluxes in the output INTEGER :: NRAD ! number of satellite radiances to synthesize INTEGER :: NAER ! number od AERosol classes - INTEGER :: NSWB ! number of SW bands + INTEGER :: NSWB_OLD ! number of SW bands in ECMWF original code (usually 6) + INTEGER :: NSWB_MNH! number of SW bands practically used (14 if ECRAD, NSWB if original code) + INTEGER :: NLWB_MNH! number of LW bands practically used (16 if RRTM) INTEGER :: NSTATM ! index od the STAndard ATMosphere level just above ! the model top ! INTEGER, DIMENSION(:,:), POINTER :: NCLEARCOL_TM1=>NULL() ! trace of cloud/clear columns at @@ -86,10 +88,12 @@ TYPE RADIATIONS_t ! ! REAL, DIMENSION(:,:), POINTER :: XFLALWD=>NULL() ! downward LW radiations on flat surface REAL, DIMENSION(:,:), POINTER :: XFLASWD=>NULL() ! downward SW radiations on flat surface -! - INTEGER :: NSWB_MNH ! number of SW spectral bands + REAL, DIMENSION(:), POINTER :: XSW_BANDS=>NULL() ! value of the wavelentgh ! ! in the middle of each SW spectral band + + REAL, DIMENSION(:), POINTER :: XLW_BANDS=>NULL() ! value of the wavelentgh +! ! in the middle of each LW spectral band ! ! REAL, DIMENSION(:,:,:), POINTER :: XDIRFLASWD=>NULL() ! downward surface direct SW radiations ! ! BEFORE slope and shadows effects @@ -102,7 +106,7 @@ TYPE RADIATIONS_t ! ! REAL, DIMENSION(:,:,:), POINTER :: XDIR_ALB=>NULL() ! direct albedo for each spectral band ! REAL, DIMENSION(:,:,:), POINTER :: XSCA_ALB=>NULL() ! scattered albedo for each spectral band -! REAL, DIMENSION(:,:), POINTER :: XEMIS=>NULL() ! emissivity +! REAL, DIMENSION(:,:,:), POINTER :: XEMIS=>NULL() ! emissivity ! REAL, DIMENSION(:,:), POINTER :: XTSRAD=>NULL() ! surface temperature REAL, DIMENSION(:,:), POINTER :: XSEA=>NULL() ! sea fraction ! @@ -126,7 +130,9 @@ INTEGER, POINTER :: NFLEV=>NULL() INTEGER, POINTER :: NFLUX=>NULL() INTEGER, POINTER :: NRAD=>NULL() INTEGER, POINTER :: NAER=>NULL() -INTEGER, POINTER :: NSWB=>NULL() +INTEGER, POINTER :: NSWB_OLD=>NULL() +INTEGER, POINTER :: NSWB_MNH=>NULL() +INTEGER, POINTER :: NLWB_MNH=>NULL() INTEGER, POINTER :: NSTATM=>NULL() INTEGER, DIMENSION(:,:), POINTER :: NCLEARCOL_TM1=>NULL() REAL, POINTER :: XCCO2=>NULL() @@ -148,14 +154,14 @@ REAL, DIMENSION(:,:), POINTER :: XSRFLWD=>NULL() REAL, DIMENSION(:,:), POINTER :: XSCASRFSWD=>NULL() REAL, DIMENSION(:,:), POINTER :: XFLALWD=>NULL() REAL, DIMENSION(:,:), POINTER :: XFLASWD=>NULL() -INTEGER, POINTER :: NSWB_MNH=>NULL() REAL, DIMENSION(:), POINTER :: XSW_BANDS=>NULL() +REAL, DIMENSION(:), POINTER :: XLW_BANDS=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XDIRFLASWD=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XSCAFLASWD=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XDIRSRFSWD=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XDIR_ALB=>NULL() REAL, DIMENSION(:,:,:), POINTER :: XSCA_ALB=>NULL() -REAL, DIMENSION(:,:), POINTER :: XEMIS=>NULL() +REAL, DIMENSION(:,:,:), POINTER :: XEMIS=>NULL() REAL, DIMENSION(:,:), POINTER :: XTSRAD=>NULL() REAL, DIMENSION(:,:), POINTER :: XSEA=>NULL() REAL, DIMENSION(:,:), POINTER :: XZENITH=>NULL() @@ -189,6 +195,7 @@ RADIATIONS_MODEL(KFROM)%XSCASRFSWD=>XSCASRFSWD !RADIATIONS_MODEL(KFROM)%XFLALWD=>XFLALWD !Done in FIELDLIST_GOTO_MODEL RADIATIONS_MODEL(KFROM)%XFLASWD=>XFLASWD RADIATIONS_MODEL(KFROM)%XSW_BANDS=>XSW_BANDS +RADIATIONS_MODEL(KFROM)%XLW_BANDS=>XLW_BANDS !RADIATIONS_MODEL(KFROM)%XDIRFLASWD=>XDIRFLASWD !Done in FIELDLIST_GOTO_MODEL !RADIATIONS_MODEL(KFROM)%XSCAFLASWD=>XSCAFLASWD !Done in FIELDLIST_GOTO_MODEL !RADIATIONS_MODEL(KFROM)%XDIRSRFSWD=>XDIRSRFSWD !Done in FIELDLIST_GOTO_MODEL @@ -214,7 +221,9 @@ NFLEV=>RADIATIONS_MODEL(KTO)%NFLEV NFLUX=>RADIATIONS_MODEL(KTO)%NFLUX NRAD=>RADIATIONS_MODEL(KTO)%NRAD NAER=>RADIATIONS_MODEL(KTO)%NAER -NSWB=>RADIATIONS_MODEL(KTO)%NSWB +NSWB_OLD=>RADIATIONS_MODEL(KTO)%NSWB_OLD +NSWB_MNH=>RADIATIONS_MODEL(KTO)%NSWB_MNH +NLWB_MNH=>RADIATIONS_MODEL(KTO)%NLWB_MNH NSTATM=>RADIATIONS_MODEL(KTO)%NSTATM !NCLEARCOL_TM1=>RADIATIONS_MODEL(KTO)%NCLEARCOL_TM1 !Done in FIELDLIST_GOTO_MODEL XCCO2=>RADIATIONS_MODEL(KTO)%XCCO2 @@ -236,8 +245,8 @@ XSRFLWD=>RADIATIONS_MODEL(KTO)%XSRFLWD XSCASRFSWD=>RADIATIONS_MODEL(KTO)%XSCASRFSWD !XFLALWD=>RADIATIONS_MODEL(KTO)%XFLALWD !Done in FIELDLIST_GOTO_MODEL XFLASWD=>RADIATIONS_MODEL(KTO)%XFLASWD -NSWB_MNH=>RADIATIONS_MODEL(KTO)%NSWB_MNH XSW_BANDS=>RADIATIONS_MODEL(KTO)%XSW_BANDS +XLW_BANDS=>RADIATIONS_MODEL(KTO)%XLW_BANDS !XDIRFLASWD=>RADIATIONS_MODEL(KTO)%XDIRFLASWD !Done in FIELDLIST_GOTO_MODEL !XSCAFLASWD=>RADIATIONS_MODEL(KTO)%XSCAFLASWD !Done in FIELDLIST_GOTO_MODEL !XDIRSRFSWD=>RADIATIONS_MODEL(KTO)%XDIRSRFSWD !Done in FIELDLIST_GOTO_MODEL diff --git a/src/MNH/modd_type_station.f90 b/src/MNH/modd_type_station.f90 index 21b13bf05a67388f35d930ccc4a51402e7d0de92..d1cb05be0ef35aaa9965d10eee9f92efec9d0d67 100644 --- a/src/MNH/modd_type_station.f90 +++ b/src/MNH/modd_type_station.f90 @@ -79,7 +79,9 @@ REAL, DIMENSION(:,:), POINTER :: H=>NULL() ! REAL, DIMENSION(:,:), POINTER :: LE=>NULL() ! REAL, DIMENSION(:,:), POINTER :: LEI=>NULL() ! REAL, DIMENSION(:,:), POINTER :: GFLUX=>NULL() ! -REAL, DIMENSION(:,:), POINTER :: SW=>NULL() ! +REAL, DIMENSION(:,:), POINTER :: SW=>NULL() ! +REAL, DIMENSION(:,:), POINTER :: SWDIR=>NULL() ! +REAL, DIMENSION(:,:), POINTER :: SWDIFF=>NULL() ! REAL, DIMENSION(:,:), POINTER :: LW=>NULL() ! REAL, DIMENSION(:,:), POINTER :: DSTAOD=>NULL() ! Dust Aerosol Optical Depth REAL, DIMENSION(:,:), POINTER :: SFCO2=>NULL() ! CO2 surface flux diff --git a/src/MNH/modn_param_ecradn.f90 b/src/MNH/modn_param_ecradn.f90 new file mode 100644 index 0000000000000000000000000000000000000000..096bf9520c4244010342d0ce36ce2377f5aa8a29 --- /dev/null +++ b/src/MNH/modn_param_ecradn.f90 @@ -0,0 +1,101 @@ +!MNH_LIC Copyright 1994-2014 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. +!----------------------------------------------------------------- +!--------------- special set of characters for RCS information +!----------------------------------------------------------------- +! $Source$ $Revision$ +! MASDEV4_7 modn 2006/11/23 17:22:54 +!----------------------------------------------------------------- +! ######################## + MODULE MODN_PARAM_ECRAD_n +! ######################## +! +!------------------------------------------------------------------------------- +USE PARKIND1 , ONLY : JPIM,JPRB + +!* 0. DECLARATIONS +! ------------ +! +USE MODD_PARAM_ECRAD_n, ONLY: & + NSWSOLVER_n => NSWSOLVER, & + NLWSOLVER_n => NLWSOLVER, & + NLIQOPT_n => NLIQOPT, & + NICEOPT_n => NICEOPT , & + NRADLP_n => NRADLP , & + NRADIP_n => NRADIP , & + NGAS_n => NGAS, & + NOVLP_n => NOVLP, & + NREG_n => NREG, & + XCLOUD_FRAC_STD_n => XCLOUD_FRAC_STD, & + NLWSCATTERING_n => NLWSCATTERING, & + NAERMACC_n => NAERMACC +! EFF3D_n => EFF3D, & +! SIDEM_n => SIDEM, & +! LWCSCA_n => LWCSCA, & +! LWASCA_n => LWASCA, & +! PSRAD_n => PSRAD, & +! SW_ML_E_n => SW_ML_E, & +! LW_ML_E_n => LW_ML_E + +! +IMPLICIT NONE + +INTEGER(KIND=JPIM), SAVE :: NSWSOLVER +INTEGER(KIND=JPIM), SAVE :: NLWSOLVER +INTEGER(KIND=JPIM), SAVE :: NGAS +INTEGER(KIND=JPIM), SAVE :: NLIQOPT +INTEGER(KIND=JPIM), SAVE :: NICEOPT +INTEGER(KIND=JPIM), SAVE :: NOVLP +INTEGER(KIND=JPIM), SAVE :: NRADLP +INTEGER(KIND=JPIM), SAVE :: NRADIP +INTEGER(KIND=JPIM), SAVE :: NREG +REAL(KIND=JPRB), SAVE :: XCLOUD_FRAC_STD +INTEGER(KIND=JPIM), SAVE :: NLWSCATTERING +INTEGER(KIND=JPIM), SAVE :: NAERMACC +! LOGICAL, SAVE :: EFF3D +! LOGICAL, SAVE :: SIDEM +! LOGICAL, SAVE :: LWCSCA +! LOGICAL, SAVE :: LWASCA +! LOGICAL, SAVE :: PSRAD +! LOGICAL, SAVE :: SW_ML_E +! LOGICAL, SAVE :: LW_ML_E +! +NAMELIST/NAM_PARAM_ECRADn/NSWSOLVER,NLWSOLVER,NRADLP,NRADIP,& + NLIQOPT,NICEOPT,NOVLP,NGAS,NREG,XCLOUD_FRAC_STD,& + NLWSCATTERING, NAERMACC +! +CONTAINS +! +SUBROUTINE INIT_NAM_PARAM_ECRADn + NSWSOLVER = NSWSOLVER_n + NLWSOLVER = NLWSOLVER_n + NLIQOPT = NLIQOPT_n + NICEOPT = NICEOPT_n + NOVLP = NOVLP_n + NRADLP = NRADLP_n + NRADIP = NRADIP_n + NGAS = NGAS_n + NREG = NREG_n + XCLOUD_FRAC_STD = XCLOUD_FRAC_STD_n + NLWSCATTERING = NLWSCATTERING_n + NAERMACC = NAERMACC_n +END SUBROUTINE INIT_NAM_PARAM_ECRADn + +SUBROUTINE UPDATE_NAM_PARAM_ECRADn + NSWSOLVER_n = NSWSOLVER + NLWSOLVER_n = NLWSOLVER + NLIQOPT_n = NLIQOPT + NICEOPT_n = NICEOPT + NOVLP_n = NOVLP + NRADLP_n = NRADLP + NRADIP_n = NRADIP + NGAS_n = NGAS + NREG_n = NREG + XCLOUD_FRAC_STD_n = XCLOUD_FRAC_STD + NLWSCATTERING_n = NLWSCATTERING + NAERMACC_n = NAERMACC +END SUBROUTINE UPDATE_NAM_PARAM_ECRADn + +END MODULE MODN_PARAM_ECRAD_n diff --git a/src/MNH/phys_paramn.f90 b/src/MNH/phys_paramn.f90 index 64cd1c3317899bc3b37e7ed160ad075ea27e361a..9ad50c460414bcc8ba7eb263c4667d6cbeea6db3 100644 --- a/src/MNH/phys_paramn.f90 +++ b/src/MNH/phys_paramn.f90 @@ -229,6 +229,7 @@ END MODULE MODI_PHYS_PARAM_n !! M. Leriche 02/2017 Avoid negative fluxes if sv=0 outside the physics domain !! C.Lac 10/2017 : ch_monitor and aer_monitor extracted from phys_param !! to be called directly by modeln as the last process +!! 02/2018 Q.Libois ECRAD !! 28/03/2018 P. Wautelet: replace TEMPORAL_DIST by DATETIME_DISTANCE !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !!------------------------------------------------------------------------------- @@ -333,6 +334,7 @@ USE MODD_DEF_EDDYUV_FLUX_n ! Ajout PP USE MODD_LATZ_EDFLX USE MODD_MNH_SURFEX_n USE MODI_SWITCH_SBG_LES_N +USE MODD_TIME_n ! USE MODD_PARAM_LIMA, ONLY : MSEDC => LSEDC, XRTMIN_LIMA=>XRTMIN ! @@ -367,7 +369,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZSFCO2! surface flux of CO2 ! REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZDIR_ALB ! direct albedo REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZSCA_ALB ! diffuse albedo -REAL, DIMENSION(:,:), ALLOCATABLE :: ZEMIS ! emissivity +REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZEMIS ! emissivity REAL, DIMENSION(:,:), ALLOCATABLE :: ZTSRAD ! surface temperature REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZRGDST,ZSIGDST,ZNDST,ZSVDST REAL, DIMENSION(:,:,:,:), ALLOCATABLE :: ZRGSLT,ZSIGSLT,ZNSLT,ZSVSLT @@ -589,7 +591,7 @@ IF (CRAD /='NONE') THEN ! ! test to see if the partial radiations for cloudy must be called ! - IF (CRAD =='ECMW') THEN + IF (CRAD =='ECMW' .OR. CRAD =='ECRA') THEN CALL DATETIME_DISTANCE(TDTRAD_CLONLY,TDTCUR,ZTEMP_DIST) IF( MOD(NINT(ZTEMP_DIST/XTSTEP),NINT(XDTRAD_CLONLY/XTSTEP))==0 ) THEN TDTRAD_CLONLY = TDTCUR @@ -609,7 +611,7 @@ IF (CRAD /='NONE') THEN ! ! tests to see if any cloud exists ! - IF (CRAD =='ECMW') THEN + IF (CRAD =='ECMW' .OR. CRAD =='ECRA') THEN IF (GRAD .AND. NRR.LE.3 ) THEN IF( MAXVAL(XCLDFR(:,:,:)).LE. 1.E-10 .AND. OCLOUD_ONLY ) THEN GRAD = .FALSE. ! only the cloudy verticals would be @@ -708,10 +710,10 @@ CALL SUNPOS_n ( XZENITH, ZCOSZEN, ZSINZEN, ZAZIMSOL ) XDTHRAD(:,:,:) = 0. ! ! -!* 1.3.2 ECMWf radiative surface and atmospheric fluxes +!* 1.3.2 ECMWF or ECRAD radiative surface and atmospheric fluxes ! ---------------------------------------------- ! - CASE('ECMW') + CASE('ECMW' , 'ECRA') IF (LLES_MEAN) OCLOUD_ONLY=.FALSE. XRADEFF(:,:,:)=0.0 XSWU(:,:,:)=0.0 @@ -723,8 +725,8 @@ CALL SUNPOS_n ( XZENITH, ZCOSZEN, ZSINZEN, ZAZIMSOL ) CALL RADIATIONS ( OCLOSE_OUT, TPFILE, & LCLEAR_SKY,OCLOUD_ONLY, NCLEARCOL_TM1,CEFRADL, CEFRADI,COPWSW,COPISW,& COPWLW,COPILW, XFUDG, & - NDLON, NFLEV, NRAD_DIAG, NFLUX, NRAD, NAER,NSWB, NSTATM, NRAD_COLNBR,& - ZCOSZEN, XSEA, XCORSOL, & + NDLON, NFLEV, NRAD_DIAG, NFLUX, NRAD,NAER,NSWB_OLD,NSWB_MNH,NLWB_MNH, & + NSTATM, NRAD_COLNBR, ZCOSZEN, XSEA, XCORSOL, & XDIR_ALB, XSCA_ALB, XEMIS, XCLDFR, XCCO2, XTSRAD, XSTATM, XTHT, XRT, & XPABST,XOZON, XAER,XDST_WL, XAER_CLIM, XSVT, & XDTHRAD, XFLALWD, XDIRFLASWD, XSCAFLASWD, XRHODREF, XZZ , & @@ -1081,7 +1083,7 @@ IF (CSURF=='EXTE') THEN ! ALLOCATE(ZDIR_ALB(IIU,IJU,NSWB_MNH)) ALLOCATE(ZSCA_ALB(IIU,IJU,NSWB_MNH)) - ALLOCATE(ZEMIS (IIU,IJU)) + ALLOCATE(ZEMIS (IIU,IJU,NLWB_MNH)) ALLOCATE(ZTSRAD (IIU,IJU)) ! IKIDM=0 diff --git a/src/MNH/radiations.f90 b/src/MNH/radiations.f90 index 28479e2486ab0fd4db3fd51af9faa3a43e9a5ab2..37dc65f1bcfa2cf228dfb31899d74af60030f312 100644 --- a/src/MNH/radiations.f90 +++ b/src/MNH/radiations.f90 @@ -7,113 +7,17 @@ MODULE MODI_RADIATIONS ! ######################## ! -INTERFACE -! - SUBROUTINE RADIATIONS (OCLOSE_OUT,TPFILE,OCLEAR_SKY,OCLOUD_ONLY, & - KCLEARCOL_TM1,HEFRADL,HEFRADI,HOPWSW,HOPISW,HOPWLW,HOPILW, & - PFUDG, KDLON, KFLEV, KRAD_DIAG, KFLUX, KRAD, KAER, KSWB,KSTATM, & - KRAD_COLNBR,PCOSZEN,PSEA, PCORSOL, & - PDIR_ALB, PSCA_ALB, PEMIS, PCLDFR, PCCO2, PTSRAD, PSTATM, & - PTHT, PRT, PPABST, POZON, PAER,PDST_WL, PAER_CLIM, PSVT, & - PDTHRAD, PSRFLWD, PSRFSWD_DIR,PSRFSWD_DIF,PRHODREF, PZZ, & - PRADEFF, PSWU, PSWD, PLWU, PLWD, PDTHRADSW, PDTHRADLW ) -! -USE MODD_IO_ll, ONLY: TFILEDATA -! -LOGICAL, INTENT(IN) :: OCLOSE_OUT! flag indicating that a FM - ! file is opened during this - ! time-step -TYPE(TFILEDATA), INTENT(IN) :: TPFILE ! Output file -LOGICAL, INTENT(IN) :: OCLOUD_ONLY! flag for the cloud column - ! computations only -LOGICAL, INTENT(IN) :: OCLEAR_SKY ! -INTEGER, INTENT(IN) :: KDLON ! number of columns where the - ! radiation calculations are - ! performed -INTEGER, INTENT(IN) :: KFLEV ! number of vertical levels - ! where the radiation - ! calculations are performed -INTEGER, INTENT(IN) :: KRAD_DIAG ! index for the number of - ! fields in the output -INTEGER, INTENT(IN) :: KFLUX ! number of top and ground - ! fluxes for the ZFLUX array -INTEGER, INTENT(IN) :: KRAD ! number of satellite radiances - ! for the ZRAD and ZRADCS arrays -INTEGER, INTENT(IN) :: KAER ! number of AERosol classes - -INTEGER, INTENT(IN) :: KSWB ! number of SW band -INTEGER, INTENT(IN) :: KSTATM ! index of the standard - ! atmosphere level just above - ! the model top -INTEGER, INTENT(IN) :: KRAD_COLNBR ! factor by which the memory - ! is splitted -! - !Choice of : -CHARACTER (LEN=*), INTENT (IN) :: HEFRADL!cloud liquid effective radius calculation -CHARACTER (LEN=*), INTENT (IN) :: HEFRADI!cloud ice effective radius calculation -CHARACTER (LEN=*), INTENT (IN) :: HOPWSW !cloud water SW optical properties -CHARACTER (LEN=*), INTENT (IN) :: HOPISW !ice water SW optical properties -CHARACTER (LEN=*), INTENT (IN) :: HOPWLW !cloud water LW optical properties -CHARACTER (LEN=*), INTENT (IN) :: HOPILW !ice water LW optical properties -REAL, INTENT(IN) :: PFUDG ! subgrid cloud inhomogenity factor -! -REAL, DIMENSION(:,:), INTENT(IN) :: PCOSZEN ! COS(zenithal solar angle) -REAL, INTENT(IN) :: PCORSOL ! SOLar constant CORrection -REAL, DIMENSION(:,:), INTENT(IN) :: PSEA ! Land-sea mask -REAL, DIMENSION(:,:,:), INTENT(IN) :: PDIR_ALB! Surface direct ALBedo -REAL, DIMENSION(:,:,:), INTENT(IN) :: PSCA_ALB! Surface diffuse ALBedo -REAL, DIMENSION(:,:), INTENT(IN) :: PEMIS ! Surface IR EMISsivity -REAL, DIMENSION(:,:,:), INTENT(IN) :: PCLDFR ! CLouD FRaction -REAL, INTENT(IN) :: PCCO2 ! CO2 content -REAL, DIMENSION(:,:), INTENT(IN) :: PTSRAD ! RADiative Surface Temperature -REAL, DIMENSION(:,:), INTENT(IN) :: PSTATM ! selected standard atmosphere -REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT ! THeta at t -REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT ! moist variables at t -REAL, DIMENSION(:,:,:), INTENT(IN) :: PPABST ! pressure at t -REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVT ! scalar variable ( C2R2 and C1R3 particle) -! -REAL, DIMENSION(:,:,:), POINTER :: POZON ! OZON field from clim. -REAL, DIMENSION(:,:,:,:), POINTER :: PAER ! AERosols optical thickness from clim. -REAL, DIMENSION(:,:,:,:), POINTER :: PDST_WL ! AERosols Extinction.by wavelength -REAL, DIMENSION(:,:,:,:), POINTER :: PAER_CLIM ! AERosols optical thickness from clim. - ! note : the vertical dimension of - ! these fields include the "radiation levels" - ! above domain top -! -REAL, DIMENSION(:,:,:), INTENT(IN) :: PRHODREF ![kg/m3] air density -REAL, DIMENSION(:,:,:), INTENT(IN) :: PZZ ![m] height of layers -! -INTEGER, DIMENSION(:,:), INTENT(INOUT) :: KCLEARCOL_TM1 ! trace of cloud/clear col - ! at the previous radiation step -! -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PDTHRAD ! THeta RADiative Tendancy -REAL, DIMENSION(:,:), INTENT(INOUT) :: PSRFLWD ! Downward SuRFace LW Flux -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRFSWD_DIR ! Downward SuRFace SW Flux DIRect -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSRFSWD_DIF ! Downward SuRFace SW Flux DIFfuse -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSWU ! upward SW Flux -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PSWD ! downward SW Flux -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLWU ! upward LW Flux -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PLWD ! downward LW Flux -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PDTHRADSW ! dthrad sw -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PDTHRADLW ! dthradsw -REAL, DIMENSION(:,:,:), INTENT(INOUT) :: PRADEFF ! effective radius -! -! -END SUBROUTINE RADIATIONS -! -END INTERFACE -! -END MODULE MODI_RADIATIONS +CONTAINS ! ! ############################################################################ SUBROUTINE RADIATIONS (OCLOSE_OUT,TPFILE,OCLEAR_SKY,OCLOUD_ONLY, & KCLEARCOL_TM1,HEFRADL,HEFRADI,HOPWSW,HOPISW,HOPWLW,HOPILW, & - PFUDG, KDLON, KFLEV, KRAD_DIAG, KFLUX, KRAD, KAER, KSWB,KSTATM, & - KRAD_COLNBR,PCOSZEN,PSEA, PCORSOL, & - PDIR_ALB, PSCA_ALB, PEMIS, PCLDFR, PCCO2, PTSRAD, PSTATM, & - PTHT, PRT, PPABST, POZON, PAER,PDST_WL, PAER_CLIM, PSVT, & - PDTHRAD, PSRFLWD, PSRFSWD_DIR,PSRFSWD_DIF,PRHODREF, PZZ, & - PRADEFF, PSWU, PSWD, PLWU, PLWD, PDTHRADSW, PDTHRADLW ) + PFUDG, KDLON, KFLEV, KRAD_DIAG, KFLUX, KRAD, KAER, KSWB_OLD, & + KSWB_MNH,KLWB_MNH, KSTATM,KRAD_COLNBR,PCOSZEN,PSEA, PCORSOL, & + PDIR_ALB, PSCA_ALB,PEMIS, PCLDFR, PCCO2, PTSRAD, PSTATM, & + PTHT, PRT, PPABST, POZON, PAER, PDST_WL, PAER_CLIM, PSVT, & + PDTHRAD, PSRFLWD, PSRFSWD_DIR,PSRFSWD_DIF, PRHODREF, PZZ, & + PRADEFF, PSWU, PSWD, PLWU,PLWD, PDTHRADSW, PDTHRADLW ) ! ############################################################################ ! !!**** *RADIATIONS * - routine to call the SW and LW radiation calculations @@ -160,7 +64,6 @@ END MODULE MODI_RADIATIONS !! !! IMPLICIT ARGUMENTS !! ------------------ -!! Module MODD_TIME : structure of TDTCUR !! Module MODD_CST : constants !! XP00 : reference pressure !! XCPD : calorific capacity of dry air at constant pressure @@ -210,6 +113,7 @@ END MODULE MODI_RADIATIONS !! J.Escobar 30/03/2017 : Management of compilation of ECMWF_RAD in REAL*8 with MNH_REAL=R4 !! J.Escobar 29/06/2017 : Check if Pressure Decreasing with height <-> elsif PB & STOP !! Q.LIBOIS 06/2017 : correction on CLOUD_ONLY +!! Q.Libois 02/2018 : ECRAD !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !------------------------------------------------------------------------------- ! @@ -217,11 +121,14 @@ END MODULE MODI_RADIATIONS ! ------------ ! USE PARKIND1, ONLY: JPRB -USE YOESW, ONLY: RTAUA, RPIZA, RCGA +USE OYOESW , ONLY : RTAUA ,RPIZA ,RCGA ! USE MODD_CH_AEROSOL, ONLY: LORILAM +USE MODD_CONF, ONLY: LCARTESIAN USE MODD_CST USE MODD_DUST, ONLY: LDUST +USE MODD_GRID , ONLY: XLAT0, XLON0 +USE MODD_GRID_n , ONLY: XLAT, XLON USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_LUNIT_n, ONLY: TLUOUT USE MODD_NSV, ONLY: NSV_C2R2,NSV_C2R2BEG,NSV_C2R2END, & @@ -233,7 +140,7 @@ USE MODD_NSV, ONLY: NSV_C2R2,NSV_C2R2BEG,NSV_C2R2END, & NSV_LIMA_NC, NSV_LIMA_NR, NSV_LIMA_NI USE MODD_PARAMETERS USE MODD_PARAM_LIMA -USE MODD_PARAM_n, ONLY: CCLOUD +USE MODD_PARAM_n, ONLY: CCLOUD, CRAD USE MODD_PARAM_RAD_n, ONLY: CAOP USE MODD_RAIN_ICE_DESCR USE MODD_SALT, ONLY: LSALT @@ -243,6 +150,7 @@ USE MODE_DUSTOPT USE MODE_FIELD, ONLY: TFIELDDATA,TYPEREAL USE MODE_FMWRIT USE MODE_ll +! #ifdef MNH_PGI USE MODE_PACK_PGI #endif @@ -251,6 +159,7 @@ USE MODE_THERMO ! USE MODI_AEROOPT_GET USE MODI_ECMWF_RADIATION_VERS2 +USE MODI_ECRAD_INTERFACE USE MODI_SUM_ll, ONLY: GMINLOC_ll, MIN_ll ! IMPLICIT NONE @@ -278,7 +187,9 @@ INTEGER, INTENT(IN) :: KRAD ! number of satellite radiances ! for the ZRAD and ZRADCS arrays INTEGER, INTENT(IN) :: KAER ! number of AERosol classes -INTEGER, INTENT(IN) :: KSWB ! number of SW band +INTEGER, INTENT(IN) :: KSWB_OLD ! number of SW band ECMWF +INTEGER, INTENT(IN) :: KSWB_MNH ! number of SW band ECRAD +INTEGER, INTENT(IN) :: KLWB_MNH ! number of LW band ECRAD INTEGER, INTENT(IN) :: KSTATM ! index of the standard ! atmosphere level just above ! the model top @@ -299,14 +210,14 @@ REAL, DIMENSION(:,:), INTENT(IN) :: PSEA ! Land-sea mask ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PDIR_ALB! Surface direct ALBedo REAL, DIMENSION(:,:,:), INTENT(IN) :: PSCA_ALB! Surface diffuse ALBedo -REAL, DIMENSION(:,:), INTENT(IN) :: PEMIS ! Surface IR EMISsivity +REAL, DIMENSION(:,:,:), INTENT(IN) :: PEMIS ! Surface IR EMISsivity REAL, DIMENSION(:,:,:), INTENT(IN) :: PCLDFR ! CLouD FRaction REAL, INTENT(IN) :: PCCO2 ! CO2 content REAL, DIMENSION(:,:), INTENT(IN) :: PTSRAD ! RADiative Surface Temperature REAL, DIMENSION(:,:), INTENT(IN) :: PSTATM ! selected standard atmosphere ! REAL, DIMENSION(:,:,:), INTENT(IN) :: PTHT ! THeta at t -REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT ! moist variables at t +REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PRT ! moist variables at t (humidity, cloud water, rain water, ice water) REAL, DIMENSION(:,:,:), INTENT(IN) :: PPABST ! pressure at t REAL, DIMENSION(:,:,:,:), INTENT(IN) :: PSVT ! scalar variable ( C2R2 and C1R3 particle) ! @@ -348,7 +259,7 @@ LOGICAL, DIMENSION(KFLEV,KDLON) :: GCLOUDT ! transpose of the GCLOUD array LOGICAL, DIMENSION(KDLON) :: GCLEAR_2D ! .TRUE. for the clear-sky columns LOGICAL, DIMENSION(KDLON,KFLEV) :: GCLEAR ! .TRUE. for all the levels of the ! clear-sky columns -LOGICAL, DIMENSION(KDLON,KSWB) :: GCLEAR_SWB! .TRUE. for all the bands of the +LOGICAL, DIMENSION(KDLON,KSWB_MNH) :: GCLEAR_SWB! .TRUE. for all the bands of the ! clear-sky columns INTEGER, DIMENSION(:), ALLOCATABLE :: ICLEAR_2D_TM1 ! ! @@ -379,31 +290,31 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZPAVE ! mean-layer pressure REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZPAVE_RAD ! mean-layer pressure REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQSAVE ! saturation specific humidity REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQVAVE ! mean-layer specific humidity -REAL, DIMENSION(:,:), ALLOCATABLE :: ZQLAVE ! Liquid water KG/KG -REAL, DIMENSION(:,:), ALLOCATABLE :: ZQRAVE ! Rain water KG/KG -REAL, DIMENSION(:,:), ALLOCATABLE :: ZQIAVE ! Ice water Kg/KG -REAL, DIMENSION(:,:), ALLOCATABLE :: ZQLWC ! liquid water content kg/m3 -REAL, DIMENSION(:,:), ALLOCATABLE :: ZQRWC ! Rain water content kg/m3 -REAL, DIMENSION(:,:), ALLOCATABLE :: ZQIWC ! ice water content kg/m3 -REAL, DIMENSION(:,:), ALLOCATABLE :: ZCFAVE ! mean-layer cloud fraction -REAL, DIMENSION(:,:), ALLOCATABLE :: ZO3AVE ! mean-layer ozone content +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQLAVE ! Liquid water KG/KG +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQRAVE ! Rain water KG/KG +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQIAVE ! Ice water Kg/KG +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQLWC ! liquid water content kg/m3 +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQRWC ! Rain water content kg/m3 +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQIWC ! ice water content kg/m3 +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZCFAVE ! mean-layer cloud fraction +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZO3AVE ! mean-layer ozone content REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZPRES_HL ! half-level pressure REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZT_HL ! half-level temperature REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZDPRES ! layer pressure thickness -REAL, DIMENSION(:,:), ALLOCATABLE :: ZCCT_C2R2! Cloud water Concentarion (C2R2) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZCRT_C2R2! Rain water Concentarion (C2R2) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZCIT_C1R3! Ice water Concentarion (C2R2) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZCCT_LIMA! Cloud water Concentration(LIMA) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZCRT_LIMA! Rain water Concentration(LIMA) -REAL, DIMENSION(:,:), ALLOCATABLE :: ZCIT_LIMA! Ice water Concentration(LIMA) -REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZAER ! aerosol optical thickness -REAL, DIMENSION(:,:), ALLOCATABLE :: ZALBP ! spectral surface albedo for direct radiations -REAL, DIMENSION(:,:), ALLOCATABLE :: ZALBD ! spectral surface albedo for diffuse radiations -REAL, DIMENSION (:), ALLOCATABLE :: ZEMIS ! surface LW emissivity -REAL, DIMENSION (:), ALLOCATABLE :: ZEMIW ! surface LW WINDOW emissivity +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZCCT_C2R2! Cloud water Concentarion (C2R2) +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZCRT_C2R2! Rain water Concentarion (C2R2) +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZCIT_C1R3! Ice water Concentarion (C2R2) +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZCCT_LIMA! Cloud water Concentration(LIMA) +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZCRT_LIMA! Rain water Concentration(LIMA) +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZCIT_LIMA! Ice water Concentration(LIMA) +REAL(KIND=JPRB), DIMENSION(:,:,:), ALLOCATABLE :: ZAER ! aerosol optical thickness +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZALBP ! spectral surface albedo for direct radiations +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZALBD ! spectral surface albedo for diffuse radiations +REAL(KIND=JPRB), DIMENSION (:,:), ALLOCATABLE :: ZEMIS ! surface LW emissivity +REAL(KIND=JPRB), DIMENSION (:,:), ALLOCATABLE :: ZEMIW ! surface LW WINDOW emissivity REAL(KIND=JPRB), DIMENSION(:), ALLOCATABLE :: ZTS ! reformatted surface PTSRAD array -REAL, DIMENSION(:), ALLOCATABLE :: ZLSM ! reformatted land sea mask -REAL, DIMENSION(:), ALLOCATABLE :: ZRMU0 ! Reformatted ZMU0 array +REAL(KIND=JPRB), DIMENSION(:), ALLOCATABLE :: ZLSM ! reformatted land sea mask +REAL(KIND=JPRB), DIMENSION(:), ALLOCATABLE :: ZRMU0 ! Reformatted ZMU0 array REAL(KIND=JPRB) :: ZRII0 ! corrected solar constant ! REAL, DIMENSION(:,:), ALLOCATABLE :: ZDTLW ! LW temperature tendency @@ -447,7 +358,7 @@ REAL, DIMENSION(:,:), ALLOCATABLE :: ZFLUX_SW_DOWN_CS, ZFLUX_SW_UP_CS ! Clear-Sky DowNward and UPward SW Flux profiles REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZFLUX_LW_CS ! Thicknes of the mesh -REAL, DIMENSION(:,:), ALLOCATABLE :: ZDZ +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZDZ ! REAL, DIMENSION(KDLON,KFLEV) :: ZZDTSW ! SW diabatic heating REAL, DIMENSION(KDLON,KFLEV) :: ZZDTLW ! LW diabatic heating @@ -459,15 +370,15 @@ REAL, DIMENSION(KDLON,SIZE(PSRFSWD_DIR,3)) :: ZZSFSWDIR REAL, DIMENSION(KDLON,SIZE(PSRFSWD_DIR,3)) :: ZZSFSWDIF ! ! SW diffuse surface flux ! -REAL, DIMENSION(KDLON) :: ZCLOUD ! vertically integrated cloud fraction +REAL, DIMENSION(KDLON) :: ZCLOUD ! vertically summed cloud fraction ! REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3)) :: ZEXNT ! Exner function REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2)) :: ZLWD ! surface Downward LW flux REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PSRFSWD_DIR,3)) :: ZSWDDIR ! surface REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PSRFSWD_DIR,3)) :: ZSWDDIF ! surface Downward SW diffuse flux -REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3),KSWB) :: ZPIZAZ ! Aerosols SSA -REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3),KSWB) :: ZTAUAZ ! Aerosols Optical Detph -REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3),KSWB) :: ZCGAZ ! Aerosols Asymetric factor +REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3),KSWB_OLD) :: ZPIZAZ ! Aerosols SSA +REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3),KSWB_OLD) :: ZTAUAZ ! Aerosols Optical Detph +REAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2),SIZE(PTHT,3),KSWB_OLD) :: ZCGAZ ! Aerosols Asymetric factor REAL :: ZZTGVISC ! downward surface SW flux (VIS band) for clear_sky REAL :: ZZTGNIRC ! downward surface SW flux (NIR band) for clear_sky REAL :: ZZTGIRC ! downward surface LW flux for clear_sky @@ -483,8 +394,8 @@ REAL, DIMENSION(KFLEV) :: ZHP_CLEAR ! ensemble mean clear-sky half-lev. pression REAL, DIMENSION(KFLEV) :: ZHT_CLEAR ! ensemble mean clear-sky half-lev. temp. REAL, DIMENSION(KFLEV) :: ZDP_CLEAR ! ensemble mean clear-sky pressure thickness REAL, DIMENSION(KFLEV,KAER) :: ZAER_CLEAR ! ensemble mean clear-sky aerosols optical thickness -REAL, DIMENSION(KSWB) :: ZALBP_CLEAR ! ensemble mean clear-sky surface albedo (parallel) -REAL, DIMENSION(KSWB) :: ZALBD_CLEAR ! ensemble mean clear-sky surface albedo (diffuse) +REAL, DIMENSION(KSWB_MNH) :: ZALBP_CLEAR ! ensemble mean clear-sky surface albedo (parallel) +REAL, DIMENSION(KSWB_MNH) :: ZALBD_CLEAR ! ensemble mean clear-sky surface albedo (diffuse) REAL :: ZEMIS_CLEAR ! ensemble mean clear-sky surface emissivity REAL :: ZEMIW_CLEAR ! ensemble mean clear-sky LW window REAL :: ZRMU0_CLEAR ! ensemble mean clear-sky MU0 @@ -499,33 +410,33 @@ LOGICAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2)) :: ZWORKL ! splitted arrays used to split the memory required by the ECMWF_radiation ! subroutine, the fields have the same meaning as their complete counterpart ! -REAL, DIMENSION(:,:), ALLOCATABLE :: ZALBP_SPLIT, ZALBD_SPLIT -REAL, DIMENSION(:), ALLOCATABLE :: ZEMIS_SPLIT, ZEMIW_SPLIT -REAL, DIMENSION(:), ALLOCATABLE :: ZRMU0_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZCFAVE_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZO3AVE_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZALBP_SPLIT, ZALBD_SPLIT +REAL(KIND=JPRB), DIMENSION(:), ALLOCATABLE :: ZEMIS_SPLIT, ZEMIW_SPLIT +REAL(KIND=JPRB), DIMENSION(:), ALLOCATABLE :: ZRMU0_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZCFAVE_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZO3AVE_SPLIT REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZT_HL_SPLIT REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZPRES_HL_SPLIT REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZTAVE_SPLIT REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZPAVE_SPLIT -REAL, DIMENSION(:,:,:), ALLOCATABLE :: ZAER_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:,:), ALLOCATABLE :: ZAER_SPLIT REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZDPRES_SPLIT -REAL, DIMENSION(:), ALLOCATABLE :: ZLSM_SPLIT +REAL(KIND=JPRB), DIMENSION(:), ALLOCATABLE :: ZLSM_SPLIT REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQVAVE_SPLIT REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQSAVE_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZQLAVE_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZQIAVE_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZQRAVE_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZQRWC_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZQLWC_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZQIWC_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZDZ_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZCCT_C2R2_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZCRT_C2R2_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZCIT_C1R3_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZCCT_LIMA_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZCRT_LIMA_SPLIT -REAL, DIMENSION(:,:), ALLOCATABLE :: ZCIT_LIMA_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQLAVE_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQIAVE_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQRAVE_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQRWC_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQLWC_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZQIWC_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZDZ_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZCCT_C2R2_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZCRT_C2R2_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZCIT_C1R3_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZCCT_LIMA_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZCRT_LIMA_SPLIT +REAL(KIND=JPRB), DIMENSION(:,:), ALLOCATABLE :: ZCIT_LIMA_SPLIT REAL(KIND=JPRB), DIMENSION(:), ALLOCATABLE :: ZTS_SPLIT REAL, DIMENSION(:,:), ALLOCATABLE :: ZSFSWDIR_SPLIT REAL, DIMENSION(:,:), ALLOCATABLE :: ZSFSWDIF_SPLIT @@ -586,9 +497,9 @@ REAL(KIND=JPRB), DIMENSION(:,:,:), ALLOCATABLE :: ZTAUREL_EQ !tau/tau REAL(KIND=JPRB), DIMENSION(:,:,:), ALLOCATABLE :: ZPIZA_EQ_SPLIT !Single scattering albedo of aerosols (points,lev,wvl) REAL(KIND=JPRB), DIMENSION(:,:,:), ALLOCATABLE :: ZCGA_EQ_SPLIT !Assymetry factor aerosols (points,lev,wvl) REAL(KIND=JPRB), DIMENSION(:,:,:), ALLOCATABLE :: ZTAUREL_EQ_SPLIT !tau/tau_{550} aerosols (points,lev,wvl) -REAL, DIMENSION(KFLEV,KSWB) :: ZPIZA_EQ_CLEAR !Single scattering albedo of aerosols (lev,wvl) -REAL, DIMENSION(KFLEV,KSWB) :: ZCGA_EQ_CLEAR !Assymetry factor aerosols (lev,wvl) -REAL, DIMENSION(KFLEV,KSWB) :: ZTAUREL_EQ_CLEAR !tau/tau_{550} aerosols (lev,wvl) +REAL, DIMENSION(KFLEV,KSWB_OLD) :: ZPIZA_EQ_CLEAR !Single scattering albedo of aerosols (lev,wvl) +REAL, DIMENSION(KFLEV,KSWB_OLD) :: ZCGA_EQ_CLEAR !Assymetry factor aerosols (lev,wvl) +REAL, DIMENSION(KFLEV,KSWB_OLD) :: ZTAUREL_EQ_CLEAR !tau/tau_{550} aerosols (lev,wvl) INTEGER :: WVL_IDX !Counter for wavelength ! @@ -610,7 +521,7 @@ REAL, DIMENSION(SIZE(PDTHRAD,1),SIZE(PDTHRAD,2),SIZE(PDTHRAD,3)) & REAL, DIMENSION(SIZE(PDTHRAD,1),SIZE(PDTHRAD,2)) & :: ZSTORE_2D ! 2D work array for storage! INTEGER :: JBAND ! Solar band index -CHARACTER (LEN=4), DIMENSION(KSWB) :: YBAND_NAME ! Solar band name +CHARACTER (LEN=4), DIMENSION(KSWB_OLD) :: YBAND_NAME ! Solar band name CHARACTER (LEN=2) :: YDIR ! Type of the data field ! INTEGER :: ISWB ! number of SW spectral bands (between radiations and surface schemes) @@ -624,6 +535,8 @@ INTEGER, DIMENSION(3) :: IMINLOC INTEGER :: IINFO_ll LOGICAL, DIMENSION(SIZE(PTHT,1),SIZE(PTHT,2)) :: GCLOUD_SURF ! +REAL, DIMENSION(:), ALLOCATABLE :: ZLON,ZLAT +REAL, DIMENSION(:), ALLOCATABLE :: ZLON_SPLIT,ZLAT_SPLIT !------------------------------------------------------------------------- !------------------------------------------------------------------------- !------------------------------------------------------------------------- @@ -657,14 +570,31 @@ IF ( ZMINVAL <= 0.0 ) THEN WRITE(ILUOUT,*) ' radiation :: ZDZPABST ', ZMINVAL,' located at ', IMINLOC CALL FLUSH(ILUOUT) STOP ' radiation.f90 STOP :: SOMETHING WRONG WITH PRESSURE , ZDZPABST < 0.0 ' -ENDIF +ENDIF +!------------------------------------------------------------------------------ +ALLOCATE(ZLAT(KDLON)) +ALLOCATE(ZLON(KDLON)) + +IF(LCARTESIAN) THEN + ZLAT(:) = XLAT0*(XPI/180.) + ZLON(:) = XLON0*(XPI/180.) +ELSE + DO JJ=IJB,IJE + DO JI=IIB,IIE + IIJ = 1 + (JI-IIB) + (IIE-IIB+1)*(JJ-IJB) + ZLAT(IIJ) = XLAT(JI,JJ)*(XPI/180.) + ZLON(IIJ) = XLON(JI,JJ)*(XPI/180.) + END DO + END DO +END IF !------------------------------------------------------------------------------- ! !* 2. INITIALIZES THE MEAN-LAYER VARIABLES ! ------------------------------------ ! ZEXNT(:,:,:)= ( PPABST(:,:,:)/XP00 ) ** (XRD/XCPD) -! +! +! Columns where radiation is computed are put on a single line ALLOCATE(ZTAVE(KDLON,KFLEV)) ALLOCATE(ZQVAVE(KDLON,KFLEV)) ALLOCATE(ZQLAVE(KDLON,KFLEV)) @@ -693,7 +623,7 @@ DO JK=IKB,IKE DO JI=IIB,IIE IIJ = 1 + (JI-IIB) + (IIE-IIB+1)*(JJ-IJB) ZDZ(IIJ,JKRAD) = PZZ(JI,JJ,JK+1) - PZZ(JI,JJ,JK) - ZTAVE(IIJ,JKRAD) = PTHT(JI,JJ,JK)*ZEXNT(JI,JJ,JK) + ZTAVE(IIJ,JKRAD) = PTHT(JI,JJ,JK)*ZEXNT(JI,JJ,JK) ! Conversion potential temperature -> actual temperature END DO END DO END DO @@ -847,14 +777,13 @@ DO JK=IKB,IKE+1 END DO END DO END DO -! -! Standard atmosphere extension -! + +! Standard atmosphere extension - pressure !* begining at ikup+1 level allows to use a model domain higher than 50km ! DO JK=IKUP+1,KFLEV+1 JK1 = (KSTATM-1)+(JK-IKUP) - ZPRES_HL(:,JK) = PSTATM(JK1,2)*100.0 + ZPRES_HL(:,JK) = PSTATM(JK1,2)*100.0 ! mb -> Pa END DO ! ! Surface temperature at the first level @@ -881,8 +810,7 @@ DO JJ=IJB,IJE END DO END DO ! -! Standard atmosphere extension -! +! Standard atmosphere extension - temperature !* begining at ikup+1 level allows to use a model domain higher than 50km ! DO JK=IKUP+1,KFLEV+1 @@ -899,11 +827,11 @@ DO JKRAD=1,KFLEV ZDPRES(:,JKRAD)=ZPRES_HL(:,JKRAD)-ZPRES_HL(:,JKRAD+1) END DO !----------------------------------------------------------------------- -!* 4. INITIALIZES THE AEROSOLS and OZONE PROFILES from climatlogy +!* 4. INITIALIZES THE AEROSOLS and OZONE PROFILES from climatology ! ------------------------------------------- ! ! 4.1 AEROSOL optical thickness -! +! EXPL -> defined online, otherwise climatology IF (CAOP=='EXPL') THEN GAOP = .TRUE. ELSE @@ -911,28 +839,28 @@ ELSE ENDIF ! IF (CAOP=='EXPL') THEN - ALLOCATE(ZPIZA_EQ_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB)) - ALLOCATE(ZCGA_EQ_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB)) - ALLOCATE(ZTAUREL_EQ_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB)) + ALLOCATE(ZPIZA_EQ_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB_OLD)) + ALLOCATE(ZCGA_EQ_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB_OLD)) + ALLOCATE(ZTAUREL_EQ_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB_OLD)) - ALLOCATE(ZPIZA_DST_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB)) - ALLOCATE(ZCGA_DST_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB)) - ALLOCATE(ZTAUREL_DST_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB)) + ALLOCATE(ZPIZA_DST_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB_OLD)) + ALLOCATE(ZCGA_DST_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB_OLD)) + ALLOCATE(ZTAUREL_DST_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB_OLD)) ALLOCATE(PAER_DST(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3))) - ALLOCATE(ZPIZA_AER_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB)) - ALLOCATE(ZCGA_AER_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB)) - ALLOCATE(ZTAUREL_AER_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB)) + ALLOCATE(ZPIZA_AER_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB_OLD)) + ALLOCATE(ZCGA_AER_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB_OLD)) + ALLOCATE(ZTAUREL_AER_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB_OLD)) ALLOCATE(PAER_AER(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3))) - ALLOCATE(ZPIZA_SLT_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB)) - ALLOCATE(ZCGA_SLT_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB)) - ALLOCATE(ZTAUREL_SLT_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB)) + ALLOCATE(ZPIZA_SLT_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB_OLD)) + ALLOCATE(ZCGA_SLT_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB_OLD)) + ALLOCATE(ZTAUREL_SLT_TMP(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3),KSWB_OLD)) ALLOCATE(PAER_SLT(SIZE(PAER,1),SIZE(PAER,2),SIZE(PAER,3))) - ALLOCATE(ZII(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3),KSWB)) - ALLOCATE(ZIR(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3),KSWB)) + ALLOCATE(ZII(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3),KSWB_OLD)) + ALLOCATE(ZIR(SIZE(PSVT,1),SIZE(PSVT,2),SIZE(PSVT,3),KSWB_OLD)) ZPIZA_EQ_TMP = 0. ZCGA_EQ_TMP = 0. @@ -963,7 +891,7 @@ IF (CAOP=='EXPL') THEN ,ZCGA_AER_TMP(IIB:IIE,IJB:IJE,IKB-JPVEXT:IKE-JPVEXT,:) & !O [-] assymetry factor for aerosols ,ZTAUREL_AER_TMP(IIB:IIE,IJB:IJE,IKB-JPVEXT:IKE-JPVEXT,:) & !O [-] opt.depth(wvl=lambda)/opt.depth(wvl=550nm) ,PAER_AER(IIB:IIE,IJB:IJE,IKB-JPVEXT:IKE-JPVEXT) & !O [-] optical depth of aerosols at wvl=550nm - ,KSWB & !I |nbr] number of shortwave bands + ,KSWB_OLD & !I |nbr] number of shortwave bands ,ZIR(IIB:IIE,IJB:IJE,:,:) & !O [-] opt.depth(wvl=lambda)/opt.depth(wvl=550nm) ,ZII(IIB:IIE,IJB:IJE,:,:) & !O [-] opt.depth(wvl=lambda)/opt.depth(wvl=550nm) ) @@ -977,9 +905,9 @@ IF (CAOP=='EXPL') THEN ,ZCGA_DST_TMP(IIB:IIE,IJB:IJE,IKB-JPVEXT:IKE-JPVEXT,:) & !O [-] assymetry factor for dust ,ZTAUREL_DST_TMP(IIB:IIE,IJB:IJE,IKB-JPVEXT:IKE-JPVEXT,:) & !O [-] opt.depth(wvl=lambda)/opt.depth(wvl=550nm) ,PAER_DST(IIB:IIE,IJB:IJE,IKB-JPVEXT:IKE-JPVEXT) & !O [-] optical depth of dust at wvl=550nm - ,KSWB & !I |nbr] number of shortwave bands + ,KSWB_OLD & !I |nbr] number of shortwave bands ) - DO WVL_IDX=1,KSWB + DO WVL_IDX=1,KSWB_OLD PDST_WL(:,:,:,WVL_IDX) = ZTAUREL_DST_TMP(:,:,:,WVL_IDX)* PAER(:,:,:,3) ENDDO ENDIF @@ -992,7 +920,7 @@ IF (CAOP=='EXPL') THEN ,ZCGA_SLT_TMP(IIB:IIE,IJB:IJE,IKB-JPVEXT:IKE-JPVEXT,:) & !O [-] assymetry factor for sea salt ,ZTAUREL_SLT_TMP(IIB:IIE,IJB:IJE,IKB-JPVEXT:IKE-JPVEXT,:) & !O [-] opt.depth(wvl=lambda)/opt.depth(wvl=550nm) ,PAER_SLT(IIB:IIE,IJB:IJE,IKB-JPVEXT:IKE-JPVEXT) & !O [-] optical depth of sea salt at wvl=550nm - ,KSWB & !I |nbr] number of shortwave bands + ,KSWB_OLD & !I |nbr] number of shortwave bands ) ENDIF @@ -1030,7 +958,7 @@ ENDIF ZTAUAZ(:,:,:,:) = 0. ZPIZAZ(:,:,:,:) = 0. ZCGAZ(:,:,:,:) = 0. -DO WVL_IDX=1,KSWB +DO WVL_IDX=1,KSWB_OLD DO JAE=1,KAER !Special optical properties for dust IF (CAOP=='EXPL'.AND.(JAE==3)) THEN @@ -1080,6 +1008,7 @@ ENDDO ALLOCATE(ZAER(KDLON,KFLEV,KAER)) ! Aerosol classes ! 1=Continental 2=Maritime 3=Desert 4=Urban 5=Volcanic 6=Stratos.Bckgnd +! Loaded from climatology DO JJ=IJB,IJE DO JI=IIB,IIE IIJ = 1 + (JI-IIB) + (IIE-IIB+1)*(JJ-IJB) @@ -1111,9 +1040,9 @@ IF ((CAOP=='EXPL') .AND. LORILAM ) THEN END DO END IF ! -ALLOCATE(ZPIZA_EQ(KDLON,KFLEV,KSWB)) -ALLOCATE(ZCGA_EQ(KDLON,KFLEV,KSWB)) -ALLOCATE(ZTAUREL_EQ(KDLON,KFLEV,KSWB)) +ALLOCATE(ZPIZA_EQ(KDLON,KFLEV,KSWB_OLD)) +ALLOCATE(ZCGA_EQ(KDLON,KFLEV,KSWB_OLD)) +ALLOCATE(ZTAUREL_EQ(KDLON,KFLEV,KSWB_OLD)) IF(CAOP=='EXPL')THEN !Transform from vector of type #lon #lat #lev #wvl !to vectors of type #points, #levs, #wavelengths @@ -1168,16 +1097,17 @@ END DO ALLOCATE(ZRMU0(KDLON)) ALLOCATE(ZLSM(KDLON)) ! -ALLOCATE(ZALBP(KDLON,KSWB)) -ALLOCATE(ZALBD(KDLON,KSWB)) +ALLOCATE(ZALBP(KDLON,KSWB_MNH)) +ALLOCATE(ZALBD(KDLON,KSWB_MNH)) + ! -ALLOCATE(ZEMIS(KDLON)) -ALLOCATE(ZEMIW(KDLON)) +ALLOCATE(ZEMIS(KDLON,KLWB_MNH)) +ALLOCATE(ZEMIW(KDLON,KLWB_MNH)) ! DO JJ=IJB,IJE DO JI=IIB,IIE IIJ = 1 + (JI-IIB) + (IIE-IIB+1)*(JJ-IJB) - ZEMIS(IIJ) = PEMIS(JI,JJ) + ZEMIS(IIJ,:) = PEMIS(JI,JJ,:) ZRMU0(IIJ) = PCOSZEN(JI,JJ) ZLSM(IIJ) = 1.0 - PSEA(JI,JJ) END DO @@ -1210,10 +1140,10 @@ END IF ! ! ! LW emissivity -ZEMIW(:)= ZEMIS(:) +ZEMIW(:,:)= ZEMIS(:,:) ! !solar constant -ZRII0= PCORSOL*XI0 +ZRII0= PCORSOL*XI0 ! solar constant multiplied by seasonal variations due to Earth-Sun distance ! ! ! @@ -1221,7 +1151,7 @@ ZRII0= PCORSOL*XI0 ! ! Performs the horizontal average of the fields when no cloud ! -ZCLOUD(:) = SUM( ZCFAVE(:,:),DIM=2 ) +ZCLOUD(:) = SUM( ZCFAVE(:,:),DIM=2 ) ! one where no cloud on the vertical ! ! MODIF option CLLY ALLOCATE ( ICLEAR_2D_TM1(KDLON) ) @@ -1236,7 +1166,7 @@ END DO IF(OCLOUD_ONLY .OR. OCLEAR_SKY) THEN ! GCLEAR_2D(:) = .TRUE. - WHERE( (ZCLOUD(:) > 0.0) .OR. (ICLEAR_2D_TM1(:)==0) ) + WHERE( (ZCLOUD(:) > 0.0) .OR. (ICLEAR_2D_TM1(:)==0) ) ! FALSE on cloudy columns GCLEAR_2D(:) = .FALSE. END WHERE ! @@ -1247,15 +1177,15 @@ IF(OCLOUD_ONLY .OR. OCLEAR_SKY) THEN IF( ICLEAR_COL == KDLON ) THEN ! No cloud case so only the mean clear-sky GCLEAR_2D(1) = .FALSE. ! column is selected ICLEAR_COL = KDLON-1 - GNOCL = .TRUE. + GNOCL = .TRUE. ! TRUE if no cloud at all ELSE GNOCL = .FALSE. END IF - GCLEAR(:,:) = SPREAD( GCLEAR_2D(:),DIM=2,NCOPIES=KFLEV ) - ICLOUD_COL = KDLON - ICLEAR_COL ! number of cloudy columns + GCLEAR(:,:) = SPREAD( GCLEAR_2D(:),DIM=2,NCOPIES=KFLEV ) ! vertical extension of clear columns 2D map + ICLOUD_COL = KDLON - ICLEAR_COL ! number of cloudy columns ! - IF( ICLEAR_COL /=0 ) THEN ! at least one clear-sky column exists + IF( ICLEAR_COL /=0 ) THEN ! at least one clear-sky column exists -> average profiles on clear columns ZT_CLEAR(:) = SUM( ZTAVE(:,:) ,DIM=1,MASK=GCLEAR(:,:) )/FLOAT(ICLEAR_COL) ZP_CLEAR(:) = SUM( ZPAVE(:,:) ,DIM=1,MASK=GCLEAR(:,:) )/FLOAT(ICLEAR_COL) ZQV_CLEAR(:) = SUM( ZQVAVE(:,:),DIM=1,MASK=GCLEAR(:,:) )/FLOAT(ICLEAR_COL) @@ -1266,7 +1196,7 @@ IF(OCLOUD_ONLY .OR. OCLEAR_SKY) THEN END DO !Get an average value for the clear column IF(CAOP=='EXPL')THEN - DO WVL_IDX=1,KSWB + DO WVL_IDX=1,KSWB_OLD ZPIZA_EQ_CLEAR(:,WVL_IDX) = SUM( ZPIZA_EQ(:,:,WVL_IDX), DIM=1,MASK=GCLEAR(:,:))/FLOAT(ICLEAR_COL) ZCGA_EQ_CLEAR(:,WVL_IDX) = SUM( ZCGA_EQ(:,:,WVL_IDX),DIM=1,MASK=GCLEAR(:,:))/FLOAT(ICLEAR_COL) ZTAUREL_EQ_CLEAR(:,WVL_IDX) = SUM( ZTAUREL_EQ(:,:,WVL_IDX),DIM=1,MASK=GCLEAR(:,:))/FLOAT(ICLEAR_COL) @@ -1277,19 +1207,19 @@ IF(OCLOUD_ONLY .OR. OCLEAR_SKY) THEN ZHP_CLEAR(1:KFLEV) =SUM( ZPRES_HL(:,1:KFLEV),DIM=1,MASK=GCLEAR(:,:) )/FLOAT(ICLEAR_COL) ZHT_CLEAR(1:KFLEV) = SUM( ZT_HL(:,1:KFLEV) ,DIM=1,MASK=GCLEAR(:,:) )/FLOAT(ICLEAR_COL) ! - GCLEAR_SWB(:,:) = SPREAD(GCLEAR_2D(:),DIM=2,NCOPIES=KSWB) + GCLEAR_SWB(:,:) = SPREAD(GCLEAR_2D(:),DIM=2,NCOPIES=KSWB_MNH) ZALBP_CLEAR(:) = SUM( ZALBP(:,:),DIM=1,MASK=GCLEAR_SWB(:,:) ) & / FLOAT(ICLEAR_COL) ZALBD_CLEAR(:) = SUM( ZALBD(:,:),DIM=1,MASK=GCLEAR_SWB(:,:) ) & / FLOAT(ICLEAR_COL) ! - ZEMIS_CLEAR = SUM( ZEMIS(:),DIM=1,MASK=GCLEAR_2D(:)) / FLOAT(ICLEAR_COL) - ZEMIW_CLEAR = SUM( ZEMIW(:),DIM=1,MASK=GCLEAR_2D(:)) / FLOAT(ICLEAR_COL) + ZEMIS_CLEAR = SUM( ZEMIS(:,1),DIM=1,MASK=GCLEAR_2D(:)) / FLOAT(ICLEAR_COL) + ZEMIW_CLEAR = SUM( ZEMIW(:,1),DIM=1,MASK=GCLEAR_2D(:)) / FLOAT(ICLEAR_COL) ZRMU0_CLEAR = SUM( ZRMU0(:) ,DIM=1,MASK=GCLEAR_2D(:)) / FLOAT(ICLEAR_COL) ZTS_CLEAR = SUM( ZTS(:) ,DIM=1,MASK=GCLEAR_2D(:)) / FLOAT(ICLEAR_COL) ZLSM_CLEAR = SUM( ZLSM(:) ,DIM=1,MASK=GCLEAR_2D(:)) / FLOAT(ICLEAR_COL) ! - ELSE ! the first column is chosen, without physical meaning: it will not be + ELSE ! no clear columns -> the first column is chosen, without physical meaning: it will not be ! unpacked after the call to the radiation ecmwf routine ZT_CLEAR(:) = ZTAVE(1,:) ZP_CLEAR(:) = ZPAVE(1,:) @@ -1308,8 +1238,8 @@ IF(OCLOUD_ONLY .OR. OCLEAR_SKY) THEN ZALBP_CLEAR(:) = ZALBP(1,:) ZALBD_CLEAR(:) = ZALBD(1,:) ! - ZEMIS_CLEAR = ZEMIS(1) - ZEMIW_CLEAR = ZEMIW(1) + ZEMIS_CLEAR = ZEMIS(1,1) + ZEMIW_CLEAR = ZEMIW(1,1) ZRMU0_CLEAR = ZRMU0(1) ZTS_CLEAR = ZTS(1) ZLSM_CLEAR = ZLSM(1) @@ -1317,11 +1247,11 @@ IF(OCLOUD_ONLY .OR. OCLEAR_SKY) THEN ! GCLOUD(:,:) = .NOT.GCLEAR(:,:) ! .true. where the column is cloudy GCLOUDT(:,:)=TRANSPOSE(GCLOUD(:,:)) - ICLOUD = ICLOUD_COL*KFLEV + ICLOUD = ICLOUD_COL*KFLEV ! total number of voxels in cloudy columns ALLOCATE(ZWORK1(ICLOUD)) ALLOCATE(ZWORK2(ICLOUD+KFLEV)) ! allocation for the KFLEV levels of ! the ICLOUD cloudy columns - ! and of the single clear_sky one + ! and of the KFLEV levels of the clear sky one ! ! temperature profiles ! @@ -1511,50 +1441,50 @@ IF(OCLOUD_ONLY .OR. OCLEAR_SKY) THEN DEALLOCATE (ZWORK2AER) ! IF(CAOP=='EXPL')THEN - ALLOCATE(ZWORK1AER(ICLOUD,KSWB)) !New vector with value for all cld. points - ALLOCATE(ZWORK2AER(ICLOUD+KFLEV,KSWB)) !New vector with value for all cld.points + 1 clr column + ALLOCATE(ZWORK1AER(ICLOUD,KSWB_OLD)) !New vector with value for all cld. points + ALLOCATE(ZWORK2AER(ICLOUD+KFLEV,KSWB_OLD)) !New vector with value for all cld.points + 1 clr column !Single scattering albedo - DO WVL_IDX=1,KSWB + DO WVL_IDX=1,KSWB_OLD ZWORK1AER(:,WVL_IDX) = PACK( TRANSPOSE(ZPIZA_EQ(:,:,WVL_IDX)),MASK=GCLOUDT(:,:) ) ZWORK2AER(1:ICLOUD,WVL_IDX) = ZWORK1AER(:,WVL_IDX) ZWORK2AER(ICLOUD+1:,WVL_IDX) = ZPIZA_EQ_CLEAR(:,WVL_IDX) ENDDO DEALLOCATE(ZPIZA_EQ) - ALLOCATE(ZPIZA_EQ(ICLOUD_COL+1,KFLEV,KSWB)) - DO WVL_IDX=1,KSWB + ALLOCATE(ZPIZA_EQ(ICLOUD_COL+1,KFLEV,KSWB_OLD)) + DO WVL_IDX=1,KSWB_OLD ZPIZA_EQ(:,:,WVL_IDX) = TRANSPOSE( RESHAPE( ZWORK2AER(:,WVL_IDX),(/KFLEV,ICLOUD_COL+1/) ) ) ENDDO !Assymetry factor - DO WVL_IDX=1,KSWB + DO WVL_IDX=1,KSWB_OLD ZWORK1AER(:,WVL_IDX) = PACK(TRANSPOSE(ZCGA_EQ(:,:,WVL_IDX)), MASK=GCLOUDT(:,:)) ZWORK2AER(1:ICLOUD,WVL_IDX) = ZWORK1AER(:,WVL_IDX) ZWORK2AER(ICLOUD+1:,WVL_IDX) = ZCGA_EQ_CLEAR(:,WVL_IDX) ENDDO DEALLOCATE(ZCGA_EQ) - ALLOCATE(ZCGA_EQ(ICLOUD_COL+1,KFLEV,KSWB)) - DO WVL_IDX=1,KSWB + ALLOCATE(ZCGA_EQ(ICLOUD_COL+1,KFLEV,KSWB_OLD)) + DO WVL_IDX=1,KSWB_OLD ZCGA_EQ(:,:,WVL_IDX) = TRANSPOSE(RESHAPE(ZWORK2AER(:,WVL_IDX),(/KFLEV,ICLOUD_COL+1/))) ENDDO !Relative wavelength-distributed optical depth - DO WVL_IDX=1,KSWB + DO WVL_IDX=1,KSWB_OLD ZWORK1AER(:,WVL_IDX) = PACK(TRANSPOSE(ZTAUREL_EQ(:,:,WVL_IDX)), MASK=GCLOUDT(:,:)) ZWORK2AER(1:ICLOUD,WVL_IDX) = ZWORK1AER(:,WVL_IDX) ZWORK2AER(ICLOUD+1:,WVL_IDX) = ZTAUREL_EQ_CLEAR(:,WVL_IDX) ENDDO DEALLOCATE(ZTAUREL_EQ) - ALLOCATE(ZTAUREL_EQ(ICLOUD_COL+1,KFLEV,KSWB)) - DO WVL_IDX=1,KSWB + ALLOCATE(ZTAUREL_EQ(ICLOUD_COL+1,KFLEV,KSWB_OLD)) + DO WVL_IDX=1,KSWB_OLD ZTAUREL_EQ(:,:,WVL_IDX) = TRANSPOSE(RESHAPE(ZWORK2AER(:,WVL_IDX),(/KFLEV,ICLOUD_COL+1/))) ENDDO DEALLOCATE(ZWORK1AER) DEALLOCATE(ZWORK2AER) ELSE DEALLOCATE(ZPIZA_EQ) - ALLOCATE(ZPIZA_EQ(ICLOUD_COL+1,KFLEV,KSWB)) + ALLOCATE(ZPIZA_EQ(ICLOUD_COL+1,KFLEV,KSWB_OLD)) DEALLOCATE(ZCGA_EQ) - ALLOCATE(ZCGA_EQ(ICLOUD_COL+1,KFLEV,KSWB)) + ALLOCATE(ZCGA_EQ(ICLOUD_COL+1,KFLEV,KSWB_OLD)) DEALLOCATE(ZTAUREL_EQ) - ALLOCATE(ZTAUREL_EQ(ICLOUD_COL+1,KFLEV,KSWB)) + ALLOCATE(ZTAUREL_EQ(ICLOUD_COL+1,KFLEV,KSWB_OLD)) ENDIF !Check on LDUST ! half-level variables @@ -1578,42 +1508,42 @@ IF(OCLOUD_ONLY .OR. OCLEAR_SKY) THEN ! surface fields ! ALLOCATE(ZWORK3(ICLOUD_COL)) - ALLOCATE(ZWORK4(ICLOUD_COL,KSWB)) + ALLOCATE(ZWORK4(ICLOUD_COL,KSWB_MNH)) ALLOCATE(ZWORK(KDLON)) - DO JALBS=1,KSWB + DO JALBS=1,KSWB_MNH ZWORK(:) = ZALBP(:,JALBS) ZWORK3(:) = PACK( ZWORK(:),MASK=.NOT.GCLEAR_2D(:) ) ZWORK4(:,JALBS) = ZWORK3(:) END DO DEALLOCATE(ZALBP) - ALLOCATE(ZALBP(ICLOUD_COL+1,KSWB)) + ALLOCATE(ZALBP(ICLOUD_COL+1,KSWB_MNH)) ZALBP(1:ICLOUD_COL,:) = ZWORK4(1:ICLOUD_COL,:) ZALBP(ICLOUD_COL+1,:) = ZALBP_CLEAR(:) ! - DO JALBS=1,KSWB + DO JALBS=1,KSWB_MNH ZWORK(:) = ZALBD(:,JALBS) ZWORK3(:) = PACK( ZWORK(:),MASK=.NOT.GCLEAR_2D(:) ) ZWORK4(:,JALBS) = ZWORK3(:) END DO DEALLOCATE(ZALBD) - ALLOCATE(ZALBD(ICLOUD_COL+1,KSWB)) + ALLOCATE(ZALBD(ICLOUD_COL+1,KSWB_MNH)) ZALBD(1:ICLOUD_COL,:) = ZWORK4(1:ICLOUD_COL,:) ZALBD(ICLOUD_COL+1,:) = ZALBD_CLEAR(:) ! DEALLOCATE(ZWORK4) ! - ZWORK3(:) = PACK( ZEMIS(:),MASK=.NOT.GCLEAR_2D(:) ) + ZWORK3(:) = PACK( ZEMIS(:,1),MASK=.NOT.GCLEAR_2D(:) ) DEALLOCATE(ZEMIS) - ALLOCATE(ZEMIS(ICLOUD_COL+1)) - ZEMIS(1:ICLOUD_COL) = ZWORK3(1:ICLOUD_COL) - ZEMIS(ICLOUD_COL+1) = ZEMIS_CLEAR + ALLOCATE(ZEMIS(ICLOUD_COL+1,1)) + ZEMIS(1:ICLOUD_COL,1) = ZWORK3(1:ICLOUD_COL) + ZEMIS(ICLOUD_COL+1,1) = ZEMIS_CLEAR ! ! - ZWORK3(:) = PACK( ZEMIW(:),MASK=.NOT.GCLEAR_2D(:) ) + ZWORK3(:) = PACK( ZEMIW(:,1),MASK=.NOT.GCLEAR_2D(:) ) DEALLOCATE(ZEMIW) - ALLOCATE(ZEMIW(ICLOUD_COL+1)) - ZEMIW(1:ICLOUD_COL) = ZWORK3(1:ICLOUD_COL) - ZEMIW(ICLOUD_COL+1) = ZEMIW_CLEAR + ALLOCATE(ZEMIW(ICLOUD_COL+1,1)) + ZEMIW(1:ICLOUD_COL,1) = ZWORK3(1:ICLOUD_COL) + ZEMIW(ICLOUD_COL+1,1) = ZEMIW_CLEAR ! ! ZWORK3(:) = PACK( ZRMU0(:),MASK=.NOT.GCLEAR_2D(:) ) @@ -1639,9 +1569,9 @@ IF(OCLOUD_ONLY .OR. OCLEAR_SKY) THEN DEALLOCATE(ZWORK3) DEALLOCATE(ZWORK) ! - IDIM = ICLOUD_COL +1 + IDIM = ICLOUD_COL +1 ! Number of columns where RT is computed ! -ELSE +ELSE ! !* 5.3 RADIATION COMPUTATIONS FOR THE FULL COLUMN NUMBER (KDLON) ! @@ -1649,6 +1579,7 @@ ELSE END IF ! ! initialisation of cloud trace for the next radiation time step +! (if unchanged columns are not recomputed) WHERE ( ZCLOUD(:) <= 0.0 ) ICLEAR_2D_TM1(:) = 1 ELSEWHERE @@ -1658,7 +1589,7 @@ END WHERE DO JJ=IJB,IJE DO JI=IIB,IIE IIJ = 1 + (JI-IIB) + (IIE-IIB+1)*(JJ-IJB) - KCLEARCOL_TM1(JI,JJ) = ICLEAR_2D_TM1(IIJ) + KCLEARCOL_TM1(JI,JJ) = ICLEAR_2D_TM1(IIJ) ! output to be saved for next time step END DO END DO ! @@ -1840,7 +1771,7 @@ END DO IF (CAOP=='EXPL') THEN !TURN MORE FIELDS UPSIDE DOWN... !Dust single scattering albedo -DO JI=1,KSWB +DO JI=1,KSWB_OLD ZWORK_GRID(:,:)=ZPIZA_EQ(:,:,JI) DO JKRAD=1,KFLEV JK1=KFLEV+1-JKRAD @@ -1848,14 +1779,14 @@ DO JI=1,KSWB ENDDO ENDDO !Dust asymmetry factor -DO JI=1,KSWB +DO JI=1,KSWB_OLD ZWORK_GRID(:,:)=ZCGA_EQ(:,:,JI) DO JKRAD=1,KFLEV JK1=KFLEV+1-JKRAD ZCGA_EQ(:,JKRAD,JI)=ZWORK_GRID(:,JK1) ENDDO ENDDO -DO JI=1,KSWB +DO JI=1,KSWB_OLD ZWORK_GRID(:,:)=ZTAUREL_EQ(:,:,JI) DO JKRAD=1,KFLEV JK1=KFLEV+1-JKRAD @@ -1935,9 +1866,9 @@ END IF IF( KRAD_DIAG >= 4) THEN ALLOCATE(ZEFCL_RRTM(IDIM,KFLEV)) ALLOCATE(ZCLSW_TOTAL(IDIM,KFLEV)) - ALLOCATE(ZTAU_TOTAL(IDIM,KSWB,KFLEV)) - ALLOCATE(ZOMEGA_TOTAL(IDIM,KSWB,KFLEV)) - ALLOCATE(ZCG_TOTAL(IDIM,KSWB,KFLEV)) + ALLOCATE(ZTAU_TOTAL(IDIM,KSWB_OLD,KFLEV)) + ALLOCATE(ZOMEGA_TOTAL(IDIM,KSWB_OLD,KFLEV)) + ALLOCATE(ZCG_TOTAL(IDIM,KSWB_OLD,KFLEV)) ALLOCATE(ZEFCL_LWD(IDIM,KFLEV)) ALLOCATE(ZEFCL_LWU(IDIM,KFLEV)) ALLOCATE(ZFLWP(IDIM,KFLEV)) @@ -1958,56 +1889,119 @@ END IF ! !* 5.6 CALLS THE ECMWF_RADIATION ROUTINES ! -! mixing ratio -> specific humidity conversion -! +! mixing ratio -> specific humidity conversion (for ECMWF routine) +! mixing ratio = mv/md ; specific humidity = mv/(mv+md) -ZQVAVE(:,:) = ZQVAVE(:,:) / (1.+ZQVAVE(:,:)) +ZQVAVE(:,:) = ZQVAVE(:,:) / (1.+ZQVAVE(:,:)) ! Because +! ZAER = 1e-5*ZAER +! ZO3AVE = 1e-5*ZO3AVE +IF(LCARTESIAN) THEN + ZLAT(:) = XLAT0*(XPI/180.) + ZLON(:) = XLON0*(XPI/180.) +ELSE + DO JJ=IJB,IJE + DO JI=IIB,IIE + IIJ = 1 + (JI-IIB) + (IIE-IIB+1)*(JJ-IJB) + ZLAT(IIJ) = XLAT(JI,JJ)*(XPI/180.) + ZLON(IIJ) = XLON(JI,JJ)*(XPI/180.) + END DO + END DO +END IF +! ! IF( IDIM <= KRAD_COLNBR ) THEN ! -! there is less than KRAD_COLNBR verticals to be considered therefore +! there is less than KRAD_COLNBR columns to be considered therefore ! no split of the arrays is performed -! +! Note that radiation scheme only takes scalar emissivities so only fist value of the spectral emissivity is taken ALLOCATE(ZTAVE_RAD(SIZE(ZTAVE,1),SIZE(ZTAVE,2))) ALLOCATE(ZPAVE_RAD(SIZE(ZPAVE,1),SIZE(ZPAVE,2))) ZTAVE_RAD = ZTAVE ZPAVE_RAD = ZPAVE IF (CCLOUD == 'LIMA') THEN - CALL ECMWF_RADIATION_VERS2 ( IDIM ,KFLEV, KRAD_DIAG, KAER, & - ZDZ,HEFRADL,HEFRADI,HOPWSW, HOPISW, HOPWLW, HOPILW,PFUDG, & - ZRII0, ZAER , ZALBD, ZALBP, ZPRES_HL, ZPAVE_RAD, & - PCCO2, ZCFAVE, ZDPRES, ZEMIS, ZEMIW, ZLSM, ZRMU0, & - ZO3AVE , ZQVAVE, ZQIAVE ,ZQIWC,ZQLAVE,ZQLWC, ZQSAVE, ZQRAVE, ZQRWC, & - ZT_HL,ZTAVE_RAD, ZTS, ZCCT_LIMA, ZCRT_LIMA, ZCIT_LIMA, & - ZNFLW_CS, ZNFLW, ZNFSW_CS,ZNFSW, & - ZDTLW, ZDTSW, ZFLUX_TOP_GND_IRVISNIR, & - ZSFSWDIR, ZSFSWDIF, & - ZFLUX_SW_DOWN, ZFLUX_SW_UP, ZFLUX_LW , & - ZDTLW_CS, ZDTSW_CS, ZFLUX_TOP_GND_IRVISNIR_CS, & - ZFLUX_SW_DOWN_CS, ZFLUX_SW_UP_CS, ZFLUX_LW_CS, & - ZPLAN_ALB_VIS,ZPLAN_ALB_NIR, ZPLAN_TRA_VIS, ZPLAN_TRA_NIR, & - ZPLAN_ABS_VIS, ZPLAN_ABS_NIR,ZEFCL_LWD, ZEFCL_LWU, & - ZFLWP, ZFIWP,ZRADLP, ZRADIP,ZEFCL_RRTM, ZCLSW_TOTAL, ZTAU_TOTAL, & - ZOMEGA_TOTAL,ZCG_TOTAL, & - GAOP, ZPIZA_EQ,ZCGA_EQ,ZTAUREL_EQ ) + IF (CRAD == "ECMW") THEN + CALL ECMWF_RADIATION_VERS2 ( IDIM ,KFLEV, KRAD_DIAG, KAER, & + ZDZ,HEFRADL,HEFRADI,HOPWSW, HOPISW, HOPWLW, HOPILW,PFUDG, & + ZRII0, ZAER , ZALBD, ZALBP, ZPRES_HL, ZPAVE_RAD, & + PCCO2, ZCFAVE, ZDPRES, ZEMIS(:,1), ZEMIW(:,1), ZLSM, ZRMU0, & + ZO3AVE , ZQVAVE, ZQIAVE ,ZQIWC,ZQLAVE,ZQLWC, ZQSAVE, ZQRAVE, ZQRWC, & + ZT_HL,ZTAVE_RAD, ZTS, ZCCT_LIMA, ZCRT_LIMA, ZCIT_LIMA, & + ZNFLW_CS, ZNFLW, ZNFSW_CS,ZNFSW, & + ZDTLW, ZDTSW, ZFLUX_TOP_GND_IRVISNIR, & + ZSFSWDIR, ZSFSWDIF, & + ZFLUX_SW_DOWN, ZFLUX_SW_UP, ZFLUX_LW , & + ZDTLW_CS, ZDTSW_CS, ZFLUX_TOP_GND_IRVISNIR_CS, & + ZFLUX_SW_DOWN_CS, ZFLUX_SW_UP_CS, ZFLUX_LW_CS, & + ZPLAN_ALB_VIS,ZPLAN_ALB_NIR, ZPLAN_TRA_VIS, ZPLAN_TRA_NIR, & + ZPLAN_ABS_VIS, ZPLAN_ABS_NIR,ZEFCL_LWD, ZEFCL_LWU, & + ZFLWP, ZFIWP,ZRADLP, ZRADIP,ZEFCL_RRTM, ZCLSW_TOTAL, ZTAU_TOTAL, & + ZOMEGA_TOTAL,ZCG_TOTAL, & + GAOP, ZPIZA_EQ,ZCGA_EQ,ZTAUREL_EQ ) + + + ELSE IF (CRAD == "ECRA") THEN + CALL ECRAD_INTERFACE ( IDIM ,KFLEV, KRAD_DIAG, KAER, & + ZDZ,HEFRADL,HEFRADI,HOPWSW, HOPISW, HOPWLW, HOPILW,PFUDG, & + ZRII0, ZAER , ZALBD, ZALBP, ZPRES_HL, ZPAVE_RAD, & + PCCO2, ZCFAVE, ZDPRES, ZEMIS(:,1), ZEMIW(:,1), ZLSM, ZRMU0, & + ZO3AVE , ZQVAVE, ZQIAVE ,ZQIWC,ZQLAVE,ZQLWC, ZQSAVE, ZQRAVE, ZQRWC, & + ZT_HL,ZTAVE_RAD, ZTS, ZCCT_LIMA, ZCRT_LIMA, ZCIT_LIMA, & + ZNFLW, ZNFSW, ZNFLW_CS, ZNFSW_CS, & + ZDTLW, ZDTSW, ZFLUX_TOP_GND_IRVISNIR, & + ZSFSWDIR, ZSFSWDIF, & + ZFLUX_SW_DOWN, ZFLUX_SW_UP, ZFLUX_LW , & + ZDTLW_CS, ZDTSW_CS, ZFLUX_TOP_GND_IRVISNIR_CS, & + ZFLUX_SW_DOWN_CS, ZFLUX_SW_UP_CS, ZFLUX_LW_CS, & + ZPLAN_ALB_VIS,ZPLAN_ALB_NIR, ZPLAN_TRA_VIS, ZPLAN_TRA_NIR, & + ZPLAN_ABS_VIS, ZPLAN_ABS_NIR,ZEFCL_LWD, ZEFCL_LWU, & + ZFLWP, ZFIWP,ZRADLP, ZRADIP,ZEFCL_RRTM, ZCLSW_TOTAL, ZTAU_TOTAL, & + ZOMEGA_TOTAL,ZCG_TOTAL, & + GAOP, ZPIZA_EQ,ZCGA_EQ,ZTAUREL_EQ,ZLAT,ZLON ) + ENDIF + ELSE - CALL ECMWF_RADIATION_VERS2 ( IDIM ,KFLEV, KRAD_DIAG, KAER, & - ZDZ,HEFRADL,HEFRADI,HOPWSW, HOPISW, HOPWLW, HOPILW,PFUDG, & - ZRII0, ZAER , ZALBD, ZALBP, ZPRES_HL, ZPAVE_RAD, & - PCCO2, ZCFAVE, ZDPRES, ZEMIS, ZEMIW, ZLSM, ZRMU0, & - ZO3AVE , ZQVAVE, ZQIAVE ,ZQIWC,ZQLAVE,ZQLWC, ZQSAVE, ZQRAVE, ZQRWC, & - ZT_HL,ZTAVE_RAD, ZTS, ZCCT_C2R2, ZCRT_C2R2, ZCIT_C1R3, & - ZNFLW_CS, ZNFLW, ZNFSW_CS,ZNFSW, & - ZDTLW, ZDTSW, ZFLUX_TOP_GND_IRVISNIR, & - ZSFSWDIR, ZSFSWDIF, & - ZFLUX_SW_DOWN, ZFLUX_SW_UP, ZFLUX_LW , & - ZDTLW_CS, ZDTSW_CS, ZFLUX_TOP_GND_IRVISNIR_CS, & - ZFLUX_SW_DOWN_CS, ZFLUX_SW_UP_CS, ZFLUX_LW_CS, & - ZPLAN_ALB_VIS,ZPLAN_ALB_NIR, ZPLAN_TRA_VIS, ZPLAN_TRA_NIR, & - ZPLAN_ABS_VIS, ZPLAN_ABS_NIR,ZEFCL_LWD, ZEFCL_LWU, & - ZFLWP, ZFIWP,ZRADLP, ZRADIP,ZEFCL_RRTM, ZCLSW_TOTAL, ZTAU_TOTAL, & - ZOMEGA_TOTAL,ZCG_TOTAL, & - GAOP, ZPIZA_EQ,ZCGA_EQ,ZTAUREL_EQ ) + IF (CRAD == "ECMW") THEN + CALL ECMWF_RADIATION_VERS2 ( IDIM ,KFLEV, KRAD_DIAG, KAER, & + ZDZ,HEFRADL,HEFRADI,HOPWSW, HOPISW, HOPWLW, HOPILW,PFUDG, & + ZRII0, ZAER , ZALBD, ZALBP, ZPRES_HL, ZPAVE_RAD, & + PCCO2, ZCFAVE, ZDPRES, ZEMIS(:,1), ZEMIW(:,1), ZLSM, ZRMU0, & + ZO3AVE , ZQVAVE, ZQIAVE ,ZQIWC,ZQLAVE,ZQLWC, ZQSAVE, ZQRAVE, ZQRWC, & + ZT_HL,ZTAVE_RAD, ZTS, ZCCT_C2R2, ZCRT_C2R2, ZCIT_C1R3, & + ZNFLW_CS, ZNFLW, ZNFSW_CS,ZNFSW, & + ZDTLW, ZDTSW, ZFLUX_TOP_GND_IRVISNIR, & + ZSFSWDIR, ZSFSWDIF, & + ZFLUX_SW_DOWN, ZFLUX_SW_UP, ZFLUX_LW , & + ZDTLW_CS, ZDTSW_CS, ZFLUX_TOP_GND_IRVISNIR_CS, & + ZFLUX_SW_DOWN_CS, ZFLUX_SW_UP_CS, ZFLUX_LW_CS, & + ZPLAN_ALB_VIS,ZPLAN_ALB_NIR, ZPLAN_TRA_VIS, ZPLAN_TRA_NIR, & + ZPLAN_ABS_VIS, ZPLAN_ABS_NIR,ZEFCL_LWD, ZEFCL_LWU, & + ZFLWP, ZFIWP,ZRADLP, ZRADIP,ZEFCL_RRTM, ZCLSW_TOTAL, ZTAU_TOTAL, & + ZOMEGA_TOTAL,ZCG_TOTAL, & + GAOP, ZPIZA_EQ,ZCGA_EQ,ZTAUREL_EQ ) + + ELSE IF (CRAD == "ECRA") THEN +print*,"IDIM=",IDIM +print*,"SHAPE(ZLON):",SHAPE(ZLON) + CALL ECRAD_INTERFACE ( IDIM ,KFLEV, KRAD_DIAG, KAER, & + ZDZ,HEFRADL,HEFRADI,HOPWSW, HOPISW, HOPWLW, HOPILW,PFUDG, & + ZRII0, ZAER , ZALBD, ZALBP, ZPRES_HL, ZPAVE_RAD, & + PCCO2, ZCFAVE, ZDPRES, ZEMIS(:,1), ZEMIW(:,1), ZLSM, ZRMU0, & + ZO3AVE , ZQVAVE, ZQIAVE ,ZQIWC,ZQLAVE,ZQLWC, ZQSAVE, ZQRAVE, ZQRWC, & + ZT_HL,ZTAVE_RAD, ZTS, ZCCT_C2R2, ZCRT_C2R2, ZCIT_C1R3, & + ZNFLW, ZNFSW, ZNFLW_CS, ZNFSW_CS, & + ZDTLW, ZDTSW, ZFLUX_TOP_GND_IRVISNIR, & + ZSFSWDIR, ZSFSWDIF, & + ZFLUX_SW_DOWN, ZFLUX_SW_UP, ZFLUX_LW , & + ZDTLW_CS, ZDTSW_CS, ZFLUX_TOP_GND_IRVISNIR_CS, & + ZFLUX_SW_DOWN_CS, ZFLUX_SW_UP_CS, ZFLUX_LW_CS, & + ZPLAN_ALB_VIS,ZPLAN_ALB_NIR, ZPLAN_TRA_VIS, ZPLAN_TRA_NIR, & + ZPLAN_ABS_VIS, ZPLAN_ABS_NIR,ZEFCL_LWD, ZEFCL_LWU, & + ZFLWP, ZFIWP,ZRADLP, ZRADIP,ZEFCL_RRTM, ZCLSW_TOTAL, ZTAU_TOTAL, & + ZOMEGA_TOTAL,ZCG_TOTAL, & + GAOP, ZPIZA_EQ,ZCGA_EQ,ZTAUREL_EQ ,ZLAT,ZLON ) + END IF + + END IF DEALLOCATE(ZTAVE_RAD,ZPAVE_RAD) ! @@ -2022,11 +2016,13 @@ ELSE IDIM_EFF = MIN( IDIM_RESIDUE,KRAD_COLNBR ) ! IF( JI_SPLIT == 1 .OR. JI_SPLIT == INUM_CALL ) THEN - ALLOCATE( ZALBP_SPLIT(IDIM_EFF,KSWB)) - ALLOCATE( ZALBD_SPLIT(IDIM_EFF,KSWB)) + ALLOCATE( ZALBP_SPLIT(IDIM_EFF,KSWB_MNH)) + ALLOCATE( ZALBD_SPLIT(IDIM_EFF,KSWB_MNH)) ALLOCATE( ZEMIS_SPLIT(IDIM_EFF)) ALLOCATE( ZEMIW_SPLIT(IDIM_EFF)) ALLOCATE( ZRMU0_SPLIT(IDIM_EFF)) + ALLOCATE( ZLAT_SPLIT(IDIM_EFF)) + ALLOCATE( ZLON_SPLIT(IDIM_EFF)) ALLOCATE( ZCFAVE_SPLIT(IDIM_EFF,KFLEV)) ALLOCATE( ZO3AVE_SPLIT(IDIM_EFF,KFLEV)) ALLOCATE( ZT_HL_SPLIT(IDIM_EFF,KFLEV+1)) @@ -2042,9 +2038,9 @@ ELSE ALLOCATE( ZTAVE_SPLIT(IDIM_EFF,KFLEV)) ALLOCATE( ZPAVE_SPLIT(IDIM_EFF,KFLEV)) ALLOCATE( ZAER_SPLIT( IDIM_EFF,KFLEV,KAER)) - ALLOCATE( ZPIZA_EQ_SPLIT(IDIM_EFF,KFLEV,KSWB)) - ALLOCATE( ZCGA_EQ_SPLIT(IDIM_EFF,KFLEV,KSWB)) - ALLOCATE( ZTAUREL_EQ_SPLIT(IDIM_EFF,KFLEV,KSWB)) + ALLOCATE( ZPIZA_EQ_SPLIT(IDIM_EFF,KFLEV,KSWB_OLD)) + ALLOCATE( ZCGA_EQ_SPLIT(IDIM_EFF,KFLEV,KSWB_OLD)) + ALLOCATE( ZTAUREL_EQ_SPLIT(IDIM_EFF,KFLEV,KSWB_OLD)) ALLOCATE( ZDPRES_SPLIT(IDIM_EFF,KFLEV)) ALLOCATE( ZLSM_SPLIT(IDIM_EFF)) ALLOCATE( ZQSAVE_SPLIT(IDIM_EFF,KFLEV)) @@ -2104,9 +2100,9 @@ ELSE IF( KRAD_DIAG >= 4) THEN ALLOCATE( ZEFCL_RRTM_SPLIT(IDIM_EFF,KFLEV)) ALLOCATE( ZCLSW_TOTAL_SPLIT(IDIM_EFF,KFLEV)) - ALLOCATE( ZTAU_TOTAL_SPLIT(IDIM_EFF,KSWB,KFLEV)) - ALLOCATE( ZOMEGA_TOTAL_SPLIT(IDIM_EFF,KSWB,KFLEV)) - ALLOCATE( ZCG_TOTAL_SPLIT(IDIM_EFF,KSWB,KFLEV)) + ALLOCATE( ZTAU_TOTAL_SPLIT(IDIM_EFF,KSWB_OLD,KFLEV)) + ALLOCATE( ZOMEGA_TOTAL_SPLIT(IDIM_EFF,KSWB_OLD,KFLEV)) + ALLOCATE( ZCG_TOTAL_SPLIT(IDIM_EFF,KSWB_OLD,KFLEV)) ALLOCATE( ZEFCL_LWD_SPLIT(IDIM_EFF,KFLEV)) ALLOCATE( ZEFCL_LWU_SPLIT(IDIM_EFF,KFLEV)) ALLOCATE( ZFLWP_SPLIT(IDIM_EFF,KFLEV)) @@ -2161,9 +2157,11 @@ ELSE ! ZALBP_SPLIT(:,:) = ZALBP( IBEG:IEND ,:) ZALBD_SPLIT(:,:) = ZALBD( IBEG:IEND ,:) - ZEMIS_SPLIT(:) = ZEMIS ( IBEG:IEND ) - ZEMIW_SPLIT(:) = ZEMIW ( IBEG:IEND ) + ZEMIS_SPLIT(:) = ZEMIS ( IBEG:IEND,1 ) + ZEMIW_SPLIT(:) = ZEMIW ( IBEG:IEND,1 ) ZRMU0_SPLIT(:) = ZRMU0 ( IBEG:IEND ) + ZLAT_SPLIT(:) = ZLAT ( IBEG:IEND ) + ZLON_SPLIT(:) = ZLON ( IBEG:IEND ) ZCFAVE_SPLIT(:,:) = ZCFAVE( IBEG:IEND ,:) ZO3AVE_SPLIT(:,:) = ZO3AVE( IBEG:IEND ,:) ZT_HL_SPLIT(:,:) = ZT_HL( IBEG:IEND ,:) @@ -2196,51 +2194,101 @@ ELSE ZCCT_LIMA_SPLIT(:,:) = ZCCT_LIMA (IBEG:IEND ,:) ZCRT_LIMA_SPLIT(:,:) = ZCRT_LIMA (IBEG:IEND ,:) ZCIT_LIMA_SPLIT(:,:) = ZCIT_LIMA (IBEG:IEND ,:) -! - CALL ECMWF_RADIATION_VERS2 ( IDIM_EFF , KFLEV, KRAD_DIAG, KAER, & - ZDZ_SPLIT,HEFRADL,HEFRADI,HOPWSW, HOPISW, HOPWLW, HOPILW,PFUDG, & - ZRII0, ZAER_SPLIT , ZALBD_SPLIT, ZALBP_SPLIT, ZPRES_HL_SPLIT, & - ZPAVE_SPLIT,PCCO2, ZCFAVE_SPLIT, ZDPRES_SPLIT, ZEMIS_SPLIT, ZEMIW_SPLIT, & - ZLSM_SPLIT, ZRMU0_SPLIT,ZO3AVE_SPLIT , ZQVAVE_SPLIT, ZQIAVE_SPLIT ,ZQIWC_SPLIT, & - ZQLAVE_SPLIT,ZQLWC_SPLIT,ZQSAVE_SPLIT, ZQRAVE_SPLIT,ZQRWC_SPLIT, ZT_HL_SPLIT, & - ZTAVE_SPLIT, ZTS_SPLIT, ZCCT_LIMA_SPLIT,ZCRT_LIMA_SPLIT,ZCIT_LIMA_SPLIT, & - ZNFLW_CS_SPLIT, ZNFLW_SPLIT, ZNFSW_CS_SPLIT,ZNFSW_SPLIT, & - ZDTLW_SPLIT, ZDTSW_SPLIT, ZFLUX_TOP_GND_IRVISNIR_SPLIT, & - ZSFSWDIR_SPLIT, ZSFSWDIF_SPLIT, & - ZFLUX_SW_DOWN_SPLIT, ZFLUX_SW_UP_SPLIT, ZFLUX_LW_SPLIT , & - ZDTLW_CS_SPLIT, ZDTSW_CS_SPLIT, ZFLUX_TOP_GND_IRVISNIR_CS_SPLIT, & - ZFLUX_SW_DOWN_CS_SPLIT, ZFLUX_SW_UP_CS_SPLIT, ZFLUX_LW_CS_SPLIT, & - ZPLAN_ALB_VIS_SPLIT,ZPLAN_ALB_NIR_SPLIT, ZPLAN_TRA_VIS_SPLIT, & - ZPLAN_TRA_NIR_SPLIT, ZPLAN_ABS_VIS_SPLIT, ZPLAN_ABS_NIR_SPLIT, & - ZEFCL_LWD_SPLIT, ZEFCL_LWU_SPLIT, ZFLWP_SPLIT,ZFIWP_SPLIT, & - ZRADLP_SPLIT,ZRADIP_SPLIT,ZEFCL_RRTM_SPLIT, ZCLSW_TOTAL_SPLIT, & - ZTAU_TOTAL_SPLIT,ZOMEGA_TOTAL_SPLIT, ZCG_TOTAL_SPLIT, & - GAOP,ZPIZA_EQ_SPLIT,ZCGA_EQ_SPLIT,ZTAUREL_EQ_SPLIT ) + + IF (CRAD == "ECMW") THEN +! + CALL ECMWF_RADIATION_VERS2 ( IDIM_EFF , KFLEV, KRAD_DIAG, KAER, & + ZDZ_SPLIT,HEFRADL,HEFRADI,HOPWSW, HOPISW, HOPWLW, HOPILW,PFUDG, & + ZRII0, ZAER_SPLIT , ZALBD_SPLIT, ZALBP_SPLIT, ZPRES_HL_SPLIT, & + ZPAVE_SPLIT,PCCO2, ZCFAVE_SPLIT, ZDPRES_SPLIT, ZEMIS_SPLIT, ZEMIW_SPLIT, & + ZLSM_SPLIT, ZRMU0_SPLIT,ZO3AVE_SPLIT , ZQVAVE_SPLIT, ZQIAVE_SPLIT ,ZQIWC_SPLIT, & + ZQLAVE_SPLIT,ZQLWC_SPLIT,ZQSAVE_SPLIT, ZQRAVE_SPLIT,ZQRWC_SPLIT, ZT_HL_SPLIT, & + ZTAVE_SPLIT, ZTS_SPLIT, ZCCT_LIMA_SPLIT,ZCRT_LIMA_SPLIT,ZCIT_LIMA_SPLIT, & + ZNFLW_CS_SPLIT, ZNFLW_SPLIT, ZNFSW_CS_SPLIT,ZNFSW_SPLIT, & + ZDTLW_SPLIT, ZDTSW_SPLIT, ZFLUX_TOP_GND_IRVISNIR_SPLIT, & + ZSFSWDIR_SPLIT, ZSFSWDIF_SPLIT, & + ZFLUX_SW_DOWN_SPLIT, ZFLUX_SW_UP_SPLIT, ZFLUX_LW_SPLIT , & + ZDTLW_CS_SPLIT, ZDTSW_CS_SPLIT, ZFLUX_TOP_GND_IRVISNIR_CS_SPLIT, & + ZFLUX_SW_DOWN_CS_SPLIT, ZFLUX_SW_UP_CS_SPLIT, ZFLUX_LW_CS_SPLIT, & + ZPLAN_ALB_VIS_SPLIT,ZPLAN_ALB_NIR_SPLIT, ZPLAN_TRA_VIS_SPLIT, & + ZPLAN_TRA_NIR_SPLIT, ZPLAN_ABS_VIS_SPLIT, ZPLAN_ABS_NIR_SPLIT, & + ZEFCL_LWD_SPLIT, ZEFCL_LWU_SPLIT, ZFLWP_SPLIT,ZFIWP_SPLIT, & + ZRADLP_SPLIT,ZRADIP_SPLIT,ZEFCL_RRTM_SPLIT, ZCLSW_TOTAL_SPLIT, & + ZTAU_TOTAL_SPLIT,ZOMEGA_TOTAL_SPLIT, ZCG_TOTAL_SPLIT, & + GAOP,ZPIZA_EQ_SPLIT,ZCGA_EQ_SPLIT,ZTAUREL_EQ_SPLIT ) + + ELSE IF (CRAD == "ECRA") THEN + CALL ECRAD_INTERFACE ( IDIM_EFF ,KFLEV, KRAD_DIAG, KAER, & + ZDZ,HEFRADL,HEFRADI,HOPWSW, HOPISW, HOPWLW, HOPILW,PFUDG, & + ZRII0, ZAER_SPLIT , ZALBD_SPLIT, ZALBP_SPLIT, ZPRES_HL_SPLIT, ZPAVE_SPLIT, & + PCCO2, ZCFAVE_SPLIT, ZDPRES_SPLIT, ZEMIS_SPLIT, ZEMIW_SPLIT, ZLSM_SPLIT, ZRMU0_SPLIT, & + ZO3AVE_SPLIT , ZQVAVE_SPLIT, ZQIAVE_SPLIT ,ZQIWC_SPLIT,ZQLAVE_SPLIT,ZQLWC_SPLIT, & + ZQSAVE_SPLIT, ZQRAVE_SPLIT, ZQRWC_SPLIT, & + ZT_HL_SPLIT,ZTAVE_SPLIT, ZTS_SPLIT, ZCCT_LIMA_SPLIT, & + ZCRT_LIMA_SPLIT, ZCIT_LIMA_SPLIT, & + ZNFLW_SPLIT, ZNFSW_SPLIT, ZNFLW_CS_SPLIT, ZNFSW_CS_SPLIT, & + ZDTLW_SPLIT, ZDTSW_SPLIT, ZFLUX_TOP_GND_IRVISNIR_SPLIT, & + ZSFSWDIR_SPLIT, ZSFSWDIF_SPLIT, & + ZFLUX_SW_DOWN_SPLIT, ZFLUX_SW_UP_SPLIT, ZFLUX_LW_SPLIT , & + ZDTLW_CS_SPLIT, ZDTSW_CS_SPLIT, ZFLUX_TOP_GND_IRVISNIR_CS_SPLIT, & + ZFLUX_SW_DOWN_CS_SPLIT, ZFLUX_SW_UP_CS_SPLIT, ZFLUX_LW_CS_SPLIT, & + ZPLAN_ALB_VIS_SPLIT,ZPLAN_ALB_NIR_SPLIT, ZPLAN_TRA_VIS_SPLIT, ZPLAN_TRA_NIR_SPLIT, & + ZPLAN_ABS_VIS_SPLIT, ZPLAN_ABS_NIR_SPLIT,ZEFCL_LWD_SPLIT, ZEFCL_LWU_SPLIT, & + ZFLWP_SPLIT, ZFIWP_SPLIT,ZRADLP_SPLIT, ZRADIP_SPLIT, & + ZEFCL_RRTM_SPLIT, ZCLSW_TOTAL_SPLIT, ZTAU_TOTAL_SPLIT, & + ZOMEGA_TOTAL_SPLIT,ZCG_TOTAL_SPLIT, & + GAOP, ZPIZA_EQ_SPLIT,ZCGA_EQ_SPLIT,ZTAUREL_EQ_SPLIT,ZLAT_SPLIT,ZLON_SPLIT ) + END IF ELSE ! C2R2 concentrations IF (SIZE (ZCCT_C2R2) > 0) ZCCT_C2R2_SPLIT(:,:) = ZCCT_C2R2 (IBEG:IEND ,:) IF (SIZE (ZCRT_C2R2) > 0) ZCRT_C2R2_SPLIT(:,:) = ZCRT_C2R2 (IBEG:IEND ,:) IF (SIZE (ZCIT_C1R3) > 0) ZCIT_C1R3_SPLIT(:,:) = ZCIT_C1R3 (IBEG:IEND ,:) -! - CALL ECMWF_RADIATION_VERS2 ( IDIM_EFF , KFLEV, KRAD_DIAG, KAER, & - ZDZ_SPLIT,HEFRADL,HEFRADI,HOPWSW, HOPISW, HOPWLW, HOPILW,PFUDG, & - ZRII0, ZAER_SPLIT , ZALBD_SPLIT, ZALBP_SPLIT, ZPRES_HL_SPLIT, & - ZPAVE_SPLIT,PCCO2, ZCFAVE_SPLIT, ZDPRES_SPLIT, ZEMIS_SPLIT, ZEMIW_SPLIT, & - ZLSM_SPLIT, ZRMU0_SPLIT,ZO3AVE_SPLIT , ZQVAVE_SPLIT, ZQIAVE_SPLIT ,ZQIWC_SPLIT, & - ZQLAVE_SPLIT,ZQLWC_SPLIT,ZQSAVE_SPLIT, ZQRAVE_SPLIT,ZQRWC_SPLIT, ZT_HL_SPLIT, & - ZTAVE_SPLIT, ZTS_SPLIT, ZCCT_C2R2_SPLIT,ZCRT_C2R2_SPLIT,ZCIT_C1R3_SPLIT, & - ZNFLW_CS_SPLIT, ZNFLW_SPLIT, ZNFSW_CS_SPLIT,ZNFSW_SPLIT, & - ZDTLW_SPLIT, ZDTSW_SPLIT, ZFLUX_TOP_GND_IRVISNIR_SPLIT, & - ZSFSWDIR_SPLIT, ZSFSWDIF_SPLIT, & - ZFLUX_SW_DOWN_SPLIT, ZFLUX_SW_UP_SPLIT, ZFLUX_LW_SPLIT , & - ZDTLW_CS_SPLIT, ZDTSW_CS_SPLIT, ZFLUX_TOP_GND_IRVISNIR_CS_SPLIT, & - ZFLUX_SW_DOWN_CS_SPLIT, ZFLUX_SW_UP_CS_SPLIT, ZFLUX_LW_CS_SPLIT, & - ZPLAN_ALB_VIS_SPLIT,ZPLAN_ALB_NIR_SPLIT, ZPLAN_TRA_VIS_SPLIT, & - ZPLAN_TRA_NIR_SPLIT, ZPLAN_ABS_VIS_SPLIT, ZPLAN_ABS_NIR_SPLIT, & - ZEFCL_LWD_SPLIT, ZEFCL_LWU_SPLIT, ZFLWP_SPLIT,ZFIWP_SPLIT, & - ZRADLP_SPLIT,ZRADIP_SPLIT,ZEFCL_RRTM_SPLIT, ZCLSW_TOTAL_SPLIT, & - ZTAU_TOTAL_SPLIT,ZOMEGA_TOTAL_SPLIT, ZCG_TOTAL_SPLIT, & - GAOP,ZPIZA_EQ_SPLIT,ZCGA_EQ_SPLIT,ZTAUREL_EQ_SPLIT ) + IF (CRAD == "ECMW") THEN + CALL ECMWF_RADIATION_VERS2 ( IDIM_EFF , KFLEV, KRAD_DIAG, KAER, & + ZDZ_SPLIT,HEFRADL,HEFRADI,HOPWSW, HOPISW, HOPWLW, HOPILW,PFUDG, & + ZRII0, ZAER_SPLIT , ZALBD_SPLIT, ZALBP_SPLIT, ZPRES_HL_SPLIT, & + ZPAVE_SPLIT,PCCO2, ZCFAVE_SPLIT, ZDPRES_SPLIT, ZEMIS_SPLIT, ZEMIW_SPLIT, & + ZLSM_SPLIT, ZRMU0_SPLIT,ZO3AVE_SPLIT , ZQVAVE_SPLIT, ZQIAVE_SPLIT ,ZQIWC_SPLIT, & + ZQLAVE_SPLIT,ZQLWC_SPLIT,ZQSAVE_SPLIT, ZQRAVE_SPLIT,ZQRWC_SPLIT, ZT_HL_SPLIT, & + ZTAVE_SPLIT, ZTS_SPLIT, ZCCT_C2R2_SPLIT,ZCRT_C2R2_SPLIT,ZCIT_C1R3_SPLIT, & + ZNFLW_CS_SPLIT, ZNFLW_SPLIT, ZNFSW_CS_SPLIT,ZNFSW_SPLIT, & + ZDTLW_SPLIT, ZDTSW_SPLIT, ZFLUX_TOP_GND_IRVISNIR_SPLIT, & + ZSFSWDIR_SPLIT, ZSFSWDIF_SPLIT, & + ZFLUX_SW_DOWN_SPLIT, ZFLUX_SW_UP_SPLIT, ZFLUX_LW_SPLIT , & + ZDTLW_CS_SPLIT, ZDTSW_CS_SPLIT, ZFLUX_TOP_GND_IRVISNIR_CS_SPLIT, & + ZFLUX_SW_DOWN_CS_SPLIT, ZFLUX_SW_UP_CS_SPLIT, ZFLUX_LW_CS_SPLIT, & + ZPLAN_ALB_VIS_SPLIT,ZPLAN_ALB_NIR_SPLIT, ZPLAN_TRA_VIS_SPLIT, & + ZPLAN_TRA_NIR_SPLIT, ZPLAN_ABS_VIS_SPLIT, ZPLAN_ABS_NIR_SPLIT, & + ZEFCL_LWD_SPLIT, ZEFCL_LWU_SPLIT, ZFLWP_SPLIT,ZFIWP_SPLIT, & + ZRADLP_SPLIT,ZRADIP_SPLIT,ZEFCL_RRTM_SPLIT, ZCLSW_TOTAL_SPLIT, & + ZTAU_TOTAL_SPLIT,ZOMEGA_TOTAL_SPLIT, ZCG_TOTAL_SPLIT, & + GAOP,ZPIZA_EQ_SPLIT,ZCGA_EQ_SPLIT,ZTAUREL_EQ_SPLIT ) + + ELSE IF (CRAD == "ECRA") THEN + print*,"IDIM_EFF=",IDIM_EFF +print*,"SHAPE(ZLON_SPLIT):",SHAPE(ZLON_SPLIT) + CALL ECRAD_INTERFACE ( IDIM_EFF ,KFLEV, KRAD_DIAG, KAER, & + ZDZ_SPLIT,HEFRADL,HEFRADI,HOPWSW, HOPISW, HOPWLW, HOPILW,PFUDG, & + ZRII0, ZAER_SPLIT , ZALBD_SPLIT, ZALBP_SPLIT, ZPRES_HL_SPLIT, ZPAVE_SPLIT, & + PCCO2, ZCFAVE_SPLIT, ZDPRES_SPLIT, ZEMIS_SPLIT, ZEMIW_SPLIT, ZLSM_SPLIT, ZRMU0_SPLIT, & + ZO3AVE_SPLIT , ZQVAVE_SPLIT, ZQIAVE_SPLIT ,ZQIWC_SPLIT,ZQLAVE_SPLIT,ZQLWC_SPLIT, & + ZQSAVE_SPLIT, ZQRAVE_SPLIT, ZQRWC_SPLIT, & + ZT_HL_SPLIT,ZTAVE_SPLIT, ZTS_SPLIT, ZCCT_C2R2_SPLIT, & + ZCRT_C2R2_SPLIT, ZCIT_C1R3_SPLIT, & + ZNFLW_SPLIT, ZNFSW_SPLIT, ZNFLW_CS_SPLIT, ZNFSW_CS_SPLIT, & + ZDTLW_SPLIT, ZDTSW_SPLIT, ZFLUX_TOP_GND_IRVISNIR_SPLIT, & + ZSFSWDIR_SPLIT, ZSFSWDIF_SPLIT, & + ZFLUX_SW_DOWN_SPLIT, ZFLUX_SW_UP_SPLIT, ZFLUX_LW_SPLIT , & + ZDTLW_CS_SPLIT, ZDTSW_CS_SPLIT, ZFLUX_TOP_GND_IRVISNIR_CS_SPLIT, & + ZFLUX_SW_DOWN_CS_SPLIT, ZFLUX_SW_UP_CS_SPLIT, ZFLUX_LW_CS_SPLIT, & + ZPLAN_ALB_VIS_SPLIT,ZPLAN_ALB_NIR_SPLIT, ZPLAN_TRA_VIS_SPLIT, ZPLAN_TRA_NIR_SPLIT, & + ZPLAN_ABS_VIS_SPLIT, ZPLAN_ABS_NIR_SPLIT,ZEFCL_LWD_SPLIT, ZEFCL_LWU_SPLIT, & + ZFLWP_SPLIT, ZFIWP_SPLIT,ZRADLP_SPLIT, ZRADIP_SPLIT, & + ZEFCL_RRTM_SPLIT, ZCLSW_TOTAL_SPLIT, ZTAU_TOTAL_SPLIT, & + ZOMEGA_TOTAL_SPLIT,ZCG_TOTAL_SPLIT, & + GAOP, ZPIZA_EQ_SPLIT,ZCGA_EQ_SPLIT,ZTAUREL_EQ_SPLIT,ZLAT_SPLIT,ZLON_SPLIT ) + END IF END IF ! ! fill the full output arrays with the splitted arrays @@ -2302,6 +2350,8 @@ ELSE DEALLOCATE( ZALBD_SPLIT ) DEALLOCATE( ZEMIS_SPLIT ) DEALLOCATE( ZEMIW_SPLIT ) + DEALLOCATE( ZLAT_SPLIT ) + DEALLOCATE( ZLON_SPLIT ) DEALLOCATE( ZRMU0_SPLIT ) DEALLOCATE( ZCFAVE_SPLIT ) DEALLOCATE( ZO3AVE_SPLIT ) @@ -2391,6 +2441,8 @@ DEALLOCATE(ZDPRES) DEALLOCATE(ZCCT_C2R2) DEALLOCATE(ZCRT_C2R2) DEALLOCATE(ZCIT_C1R3) +DEALLOCATE(ZLAT) +DEALLOCATE(ZLON) IF (CCLOUD == 'LIMA') THEN DEALLOCATE(ZCCT_LIMA) DEALLOCATE(ZCRT_LIMA) @@ -2491,13 +2543,13 @@ DEALLOCATE(ZDTSW) DEALLOCATE(ZSFSWDIR) DEALLOCATE(ZSFSWDIF) ! -!------------------------------------------------------------------------------- +!-------------------------------------------------------------------------------------------- ! -!* 6. COMPUTES THE RADIATIVE SOURCES AND THE DOWNWARD SURFACE FLUXES -! -------------------------------------------------------------- +!* 6. COMPUTES THE RADIATIVE SOURCES AND THE DOWNWARD SURFACE FLUXES in 2D horizontal +! ------------------------------------------------------------------------------ ! ! Computes the SW and LW radiative tendencies -! note : tendencies in K/s for MNH +! note : tendencies in K/s for MNH (from K/day) ! ZDTRAD_LW(:,:,:)=0.0 ZDTRAD_SW(:,:,:)=0.0 @@ -2506,7 +2558,7 @@ DO JK=IKB,IKE DO JJ=IJB,IJE DO JI=IIB,IIE IIJ = 1 + (JI-IIB) + (IIE-IIB+1)*(JJ-IJB) - ZDTRAD_LW(JI,JJ,JK) = ZZDTLW(IIJ,JKRAD)/XDAY + ZDTRAD_LW(JI,JJ,JK) = ZZDTLW(IIJ,JKRAD)/XDAY ! XDAY from modd_cst (day duration in s) ZDTRAD_SW(JI,JJ,JK) = ZZDTSW(IIJ,JKRAD)/XDAY END DO END DO @@ -2530,8 +2582,7 @@ END DO !final THETA_radiative tendency and surface fluxes ! IF(OCLOUD_ONLY) THEN - !! Q.LIBOIS 06/2017 - !ZWORKL(:,:) = SUM(PCLDFR(:,:,:),DIM=3) > 0.0 + DO JJ=IJB,IJE DO JI=IIB,IIE IIJ = 1 + (JI-IIB) + (IIE-IIB+1)*(JJ-IJB) @@ -2539,8 +2590,8 @@ IF(OCLOUD_ONLY) THEN END DO END DO - ZWORKL(:,:) = GCLOUD_SURF(:,:) ! nouvelle condition - !! Q.LIBOIS 06/2017 + ZWORKL(:,:) = GCLOUD_SURF(:,:) + DO JK = IKB,IKE WHERE( ZWORKL(:,:) ) PDTHRAD(:,:,JK) = (ZDTRAD_LW(:,:,JK)+ZDTRAD_SW(:,:,JK))/ZEXNT(:,:,JK) @@ -2557,7 +2608,7 @@ IF(OCLOUD_ONLY) THEN END WHERE END DO ELSE - PDTHRAD(:,:,:) = (ZDTRAD_LW(:,:,:)+ZDTRAD_SW(:,:,:))/ZEXNT(:,:,:) + PDTHRAD(:,:,:) = (ZDTRAD_LW(:,:,:)+ZDTRAD_SW(:,:,:))/ZEXNT(:,:,:) ! tendency in potential temperature PDTHRADSW(:,:,:) = ZDTRAD_SW(:,:,:)/ZEXNT(:,:,:) PDTHRADLW(:,:,:) = ZDTRAD_LW(:,:,:)/ZEXNT(:,:,:) PSRFLWD(:,:) = ZLWD(:,:) @@ -2576,7 +2627,7 @@ ELSE PSWU(JI,JJ,JK) = ZFLUX_SW_UP(IIJ,JKRAD) PSWD(JI,JJ,JK) = ZFLUX_SW_DOWN(IIJ,JKRAD) PLWU(JI,JJ,JK) = ZFLUX_LW(IIJ,1,JKRAD) - PLWD(JI,JJ,JK) = -ZFLUX_LW(IIJ,2,JKRAD) + PLWD(JI,JJ,JK) = -ZFLUX_LW(IIJ,2,JKRAD) ! in ECMWF all fluxes are upward END DO END DO END DO @@ -3336,7 +3387,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN CALL IO_WRITE_FIELD(TPFILE,TZFIELD,ZSTORE_3D) ! ! spectral bands - IF (KSWB==6) THEN + IF (KSWB_OLD==6) THEN INIR = 4 ELSE INIR = 2 @@ -3345,11 +3396,11 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN DO JBAND=1,INIR-1 WRITE(YBAND_NAME(JBAND),'(A3,I1)') 'VIS', JBAND END DO - DO JBAND= INIR, KSWB + DO JBAND= INIR, KSWB_OLD WRITE(YBAND_NAME(JBAND),'(A3,I1)') 'NIR', JBAND END DO ! - DO JBAND=1,KSWB + DO JBAND=1,KSWB_OLD TZFIELD%CMNHNAME = 'ODAER_'//YBAND_NAME(JBAND) TZFIELD%CSTDNAME = '' TZFIELD%CLONGNAME = TRIM(TZFIELD%CMNHNAME) @@ -3387,7 +3438,7 @@ IF( OCLOSE_OUT .AND. (KRAD_DIAG >= 1) ) THEN CALL IO_WRITE_FIELD(TPFILE,TZFIELD,ZCGAZ(:,:,:,JBAND)) ENDDO - DO JBAND=1,KSWB + DO JBAND=1,KSWB_OLD DO JK=IKB,IKE JKRAD = JK - JPVEXT DO JJ=IJB,IJE @@ -3693,4 +3744,5 @@ DEALLOCATE(ZO3AVE) !------------------------------------------------------------------------------- ! END SUBROUTINE RADIATIONS - +! +END MODULE MODI_RADIATIONS diff --git a/src/MNH/read_desfmn.f90 b/src/MNH/read_desfmn.f90 index 459d7d43cadff5e58b0fbfd7e8600cc4d4544dea..2f9fea8e45e026d0f3d0b409e3b898738c749c2e 100644 --- a/src/MNH/read_desfmn.f90 +++ b/src/MNH/read_desfmn.f90 @@ -188,6 +188,7 @@ END MODULE MODI_READ_DESFM_n !! Modification 01/2015 (C. Barthe) Add explicit LNOx !! Modification 2016 (B.VIE) LIMA !! Modification 11/2016 (Ph. Wautelet) Allocate/initialise some output/backup structures +!! Modification 02/2018 (Q.Libois) ECRAD !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !------------------------------------------------------------------------------- ! @@ -209,6 +210,7 @@ USE MODN_DYN_n USE MODN_ADV_n USE MODN_PARAM_n USE MODN_PARAM_RAD_n +USE MODN_PARAM_ECRAD_n USE MODN_PARAM_KAFR_n USE MODN_PARAM_MFSHALL_n USE MODN_PARAM_ICE, ONLY : NAM_PARAM_ICE, ZWARM=>LWARM, ZSEDIC=>LSEDIC, & @@ -369,6 +371,14 @@ IF (GFOUND) THEN READ(UNIT=ILUDES,NML=NAM_PARAM_RADn) CALL UPDATE_NAM_PARAM_RADn END IF +#ifdef MNH_ECRAD +CALL POSNAM(ILUDES,'NAM_PARAM_ECRADN',GFOUND) +CALL INIT_NAM_PARAM_ECRADn +IF (GFOUND) THEN + READ(UNIT=ILUDES,NML=NAM_PARAM_ECRADn) + CALL UPDATE_NAM_PARAM_ECRADn +END IF +#endif CALL POSNAM(ILUDES,'NAM_PARAM_KAFRN',GFOUND) CALL INIT_NAM_PARAM_KAFRn IF (GFOUND) THEN @@ -625,6 +635,11 @@ IF (NVERB >= 10) THEN ! WRITE(UNIT=ILUOUT,FMT="('********** RADIATIONSn *************')") WRITE(UNIT=ILUOUT,NML=NAM_PARAM_RADn) +! +#ifdef MNH_ECRAD + WRITE(UNIT=ILUOUT,FMT="('********** ECRAD RADIATIONSn *************')") + WRITE(UNIT=ILUOUT,NML=NAM_PARAM_ECRADn) +#endif ! WRITE(UNIT=ILUOUT,FMT="('********** DEEP CONVECTIONn ********')") WRITE(UNIT=ILUOUT,NML=NAM_PARAM_KAFRn) diff --git a/src/MNH/read_exsegn.f90 b/src/MNH/read_exsegn.f90 index 45cf0522206a81a7496245b1275439bd6d80209a..8f19edb805b3a3ac587e849f521ecc0ab82b6651 100644 --- a/src/MNH/read_exsegn.f90 +++ b/src/MNH/read_exsegn.f90 @@ -284,6 +284,7 @@ END MODULE MODI_READ_EXSEG_n !! LUSERx-type variables for LIMA !! M.Leriche 06/2017 for spawn and prep_real avoid abort if wet dep for !! aerosol and no cloud scheme defined +!! Q.Libois 02/2018 ECRAD !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !!------------------------------------------------------------------------------ ! @@ -312,6 +313,7 @@ USE MODN_DYN_n ! to avoid the duplication of this routine for each model. USE MODN_ADV_n ! The final filling of these modules for the model n is USE MODN_PARAM_n ! realized in subroutine ini_model n USE MODN_PARAM_RAD_n +USE MODN_PARAM_ECRAD_n USE MODN_PARAM_KAFR_n USE MODN_PARAM_MFSHALL_n USE MODN_PARAM_ICE @@ -447,6 +449,9 @@ CALL INIT_NAM_DYNN CALL INIT_NAM_ADVN CALL INIT_NAM_PARAMN CALL INIT_NAM_PARAM_RADN +#ifdef MNH_ECRAD +CALL INIT_NAM_PARAM_ECRADN +#endif CALL INIT_NAM_PARAM_KAFRN CALL INIT_NAM_PARAM_MFSHALLN CALL INIT_NAM_LBCN @@ -469,6 +474,10 @@ CALL POSNAM(ILUSEG,'NAM_PARAMN',GFOUND,ILUOUT) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAMn) CALL POSNAM(ILUSEG,'NAM_PARAM_RADN',GFOUND,ILUOUT) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_RADn) +#ifdef MNH_ECRAD +CALL POSNAM(ILUSEG,'NAM_PARAM_ECRADN',GFOUND,ILUOUT) +IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_ECRADn) +#endif CALL POSNAM(ILUSEG,'NAM_PARAM_KAFRN',GFOUND,ILUOUT) IF (GFOUND) READ(UNIT=ILUSEG,NML=NAM_PARAM_KAFRn) CALL POSNAM(ILUSEG,'NAM_PARAM_MFSHALLN',GFOUND,ILUOUT) @@ -639,7 +648,11 @@ CALL TEST_NAM_VAR(ILUOUT,'CTEMP_SCHEME',CTEMP_SCHEME, & &'RK11','RK21','RK33','RKC4','RK53','RK4B','RK62','RK65','NP32','SP32','LEFR') ! CALL TEST_NAM_VAR(ILUOUT,'CTURB',CTURB,'NONE','TKEL') -CALL TEST_NAM_VAR(ILUOUT,'CRAD',CRAD,'NONE','FIXE','ECMW','TOPA') +CALL TEST_NAM_VAR(ILUOUT,'CRAD',CRAD,'NONE','FIXE','ECMW',& +#ifdef MNH_ECRAD + 'ECRA',& +#endif + 'TOPA') CALL TEST_NAM_VAR(ILUOUT,'CCLOUD',CCLOUD,'NONE','REVE','KESS', & & 'ICE2','ICE3','ICE4','C2R2','C3R5','KHKO','LIMA') CALL TEST_NAM_VAR(ILUOUT,'CDCONV',CDCONV,'NONE','KAFR') @@ -2728,6 +2741,9 @@ CALL UPDATE_NAM_DYNN CALL UPDATE_NAM_ADVN CALL UPDATE_NAM_PARAMN CALL UPDATE_NAM_PARAM_RADN +#ifdef MNH_ECRAD +CALL UPDATE_NAM_PARAM_ECRADN +#endif CALL UPDATE_NAM_PARAM_KAFRN CALL UPDATE_NAM_PARAM_MFSHALLN CALL UPDATE_NAM_LBCN diff --git a/src/MNH/reset_exseg.f90 b/src/MNH/reset_exseg.f90 index 5fe5ad949a7d94533124bbb4ec4dcc1c3aa0ffb7..ba9b61d895766d71d4c857c159f2f89d368e54cc 100644 --- a/src/MNH/reset_exseg.f90 +++ b/src/MNH/reset_exseg.f90 @@ -55,6 +55,7 @@ END MODULE MODI_RESET_EXSEG !! ------------- !! Original 14/09/00 !! Modifications 04/06/02 (P Jabouille) reset radiation and convective options +!! 02/2018 Q.Libois ECRAD !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !------------------------------------------------------------------------------- ! @@ -74,6 +75,7 @@ USE MODD_IO_ll, ONLY: TFILEDATA USE MODD_PARAM_n, ONLY: CDCONV, CRAD USE MODN_PARAM_KAFR_n USE MODN_PARAM_RAD_n +USE MODN_PARAM_ECRAD_n ! IMPLICIT NONE ! @@ -152,6 +154,15 @@ IF(NRAD_3D>=1) THEN CALL UPDATE_NAM_PARAM_RADn PRINT*, ' namelist NAM_PARAM_RADN read' END IF +#ifdef MNH_ECRAD + CALL POSNAM(ILUNAM,'NAM_PARAM_ECRADN',GFOUND) + IF (GFOUND) THEN + CALL INIT_NAM_PARAM_EcRADn + READ(UNIT=ILUNAM,NML=NAM_PARAM_ECRADN) + CALL UPDATE_NAM_PARAM_ECRADn + PRINT*, ' namelist NAM_PARAM_ECRADN read' + END IF +#endif ENDIF ! diff --git a/src/MNH/stationn.f90 b/src/MNH/stationn.f90 index c82827ccba268880dcdecfab05d65dbe409fa58b..66cae781b1358b9d8cade0b86c984775a6f254cd 100644 --- a/src/MNH/stationn.f90 +++ b/src/MNH/stationn.f90 @@ -399,6 +399,8 @@ IF (GSTORE) THEN TSTATION%LEI (IN,I) = STATION_INTERP_2D(XCURRENT_LEI ) TSTATION%GFLUX (IN,I) = STATION_INTERP_2D(XCURRENT_GFLUX ) TSTATION%SW (IN,I) = STATION_INTERP_2D(XCURRENT_SW ) + TSTATION%SWDIR (IN,I) = STATION_INTERP_2D(XCURRENT_SWDIR ) + TSTATION%SWDIFF(IN,I) = STATION_INTERP_2D(XCURRENT_SWDIFF) TSTATION%LW (IN,I) = STATION_INTERP_2D(XCURRENT_LW ) TSTATION%DSTAOD(IN,I) = STATION_INTERP_2D(XCURRENT_DSTAOD) TSTATION%SFCO2 (IN,I) = STATION_INTERP_2D(XCURRENT_SFCO2 ) @@ -432,6 +434,8 @@ IF (GSTORE) THEN TSTATION%LEI (IN,I) = XCURRENT_LEI(TSTATION%I(I),TSTATION%J(I)) TSTATION%GFLUX (IN,I) = XCURRENT_GFLUX(TSTATION%I(I),TSTATION%J(I)) TSTATION%SW (IN,I) = XCURRENT_SW(TSTATION%I(I),TSTATION%J(I)) + TSTATION%SWDIR (IN,I) = XCURRENT_SWDIR(TSTATION%I(I),TSTATION%J(I)) + TSTATION%SWDIFF(IN,I) = XCURRENT_SWDIFF(TSTATION%I(I),TSTATION%J(I)) TSTATION%LW (IN,I) = XCURRENT_LW(TSTATION%I(I),TSTATION%J(I)) TSTATION%DSTAOD(IN,I) = XCURRENT_DSTAOD(TSTATION%I(I),TSTATION%J(I)) TSTATION%SFCO2 (IN,I) = XCURRENT_SFCO2(TSTATION%I(I),TSTATION%J(I)) @@ -479,6 +483,8 @@ IF (GSTORE) THEN CALL DISTRIBUTE_STATION(TSTATION%LEI (IN,I)) CALL DISTRIBUTE_STATION(TSTATION%GFLUX (IN,I)) CALL DISTRIBUTE_STATION(TSTATION%SW (IN,I)) + CALL DISTRIBUTE_STATION(TSTATION%SWDIR (IN,I)) + CALL DISTRIBUTE_STATION(TSTATION%SWDIFF (IN,I)) CALL DISTRIBUTE_STATION(TSTATION%LW (IN,I)) CALL DISTRIBUTE_STATION(TSTATION%DSTAOD (IN,I)) CALL DISTRIBUTE_STATION(TSTATION%SFCO2 (IN,I)) diff --git a/src/MNH/test_nam_var.f90 b/src/MNH/test_nam_var.f90 index c4041dfa0e5bec76f4de00fa6cd34e3f256d257e..a0906e0eb816f77867cd0db8043b3eb7d2695ee5 100644 --- a/src/MNH/test_nam_var.f90 +++ b/src/MNH/test_nam_var.f90 @@ -185,6 +185,7 @@ IF ( PRESENT (HVALUE9) ) WRITE (KLUOUT,*) '"',HVALUE9,'"' IF ( PRESENT (HVALUE10) ) WRITE (KLUOUT,*) '"',HVALUE10,'"' IF ( PRESENT (HVALUE11) ) WRITE (KLUOUT,*) '"',HVALUE11,'"' IF ( PRESENT (HVALUE12) ) WRITE (KLUOUT,*) '"',HVALUE12,'"' +CALL FLUSH(KLUOUT) ! !callabortstop CALL ABORT diff --git a/src/MNH/write_desfmn.f90 b/src/MNH/write_desfmn.f90 index 861d65f3e62acfb48af71458fb968f051634ba80..0711827fbc024b407f3f36e2e761128bf4bf4ecf 100644 --- a/src/MNH/write_desfmn.f90 +++ b/src/MNH/write_desfmn.f90 @@ -141,6 +141,7 @@ END MODULE MODI_WRITE_DESFM_n !! Modification P. Tulet 01/2005 add dust, orilam !! Modification 05/2006 Remove EPS and OWRIGET !! Modification 01/2016 (JP Pinty) Add LIMA +!! 02/2018 Q.Libois ECRAD !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !------------------------------------------------------------------------------- ! @@ -165,6 +166,7 @@ USE MODN_DYN_n USE MODN_ADV_n USE MODN_PARAM_n USE MODN_PARAM_RAD_n +USE MODN_PARAM_ECRAD_n USE MODN_PARAM_KAFR_n USE MODN_PARAM_MFSHALL_n USE MODN_PARAM_ICE @@ -316,6 +318,10 @@ WRITE(UNIT=ILUSEG,NML=NAM_PARAMn) ! CALL INIT_NAM_PARAM_RADn IF(CRAD /= 'NONE') WRITE(UNIT=ILUSEG,NML=NAM_PARAM_RADn) +#ifdef MNH_ECRAD +CALL INIT_NAM_PARAM_ECRADn +IF(CRAD /= 'NONE') WRITE(UNIT=ILUSEG,NML=NAM_PARAM_ECRADn) +#endif ! CALL INIT_NAM_PARAM_KAFRn IF(CDCONV /= 'NONE' .OR. CSCONV == 'KAFR') & @@ -437,6 +443,10 @@ IF (NVERB >= 5) THEN ! WRITE(UNIT=ILUOUT,FMT="('********** RADIATIONn **************')") WRITE(UNIT=ILUOUT,NML=NAM_PARAM_RADn) +#ifdef MNH_ECRAD + WRITE(UNIT=ILUOUT,FMT="('********** ECRADn **************')") + WRITE(UNIT=ILUOUT,NML=NAM_PARAM_ECRADn) +#endif ! WRITE(UNIT=ILUOUT,FMT="('********** CONVECTIONn *************')") WRITE(UNIT=ILUOUT,NML=NAM_PARAM_KAFRn) diff --git a/src/MNH/write_lfifm1_for_diag_supp.f90 b/src/MNH/write_lfifm1_for_diag_supp.f90 index 001e7f60326aa8a3580493c734adbe2829f59d4b..dfa72a8bb426348d4c53adb20994ba1e5986c3aa 100644 --- a/src/MNH/write_lfifm1_for_diag_supp.f90 +++ b/src/MNH/write_lfifm1_for_diag_supp.f90 @@ -800,7 +800,7 @@ IF (LEN_TRIM(CRAD_SAT) /= 0 .AND. NRR /=0) THEN ZIRBT(:,:) = XUNDEF ZWVBT(:,:) = XUNDEF CALL RADTR_SATEL(TDTCUR%TDATE%YEAR,TDTCUR%TDATE%MONTH,TDTCUR%TDATE%DAY, & - TDTCUR%TIME, NDLON, NFLEV, NSTATM, NRAD_COLNBR, XEMIS, & + TDTCUR%TIME, NDLON, NFLEV, NSTATM, NRAD_COLNBR, XEMIS(:,:,1), & XCCO2, XTSRAD, XSTATM, XTHT, XRT, XPABST, XZZ, & XSIGS, XMFCONV, XCLDFR, LUSERI, LSIGMAS, & LSUBG_COND, LRAD_SUBG_COND, ZIRBT, ZWVBT, & diff --git a/src/MNH/write_lfin.f90 b/src/MNH/write_lfin.f90 index 765b68c82e7beb3faf41cc368bcaf65389c7687f..8cc4fabc50579c42fa811c950813bb7448bd323e 100644 --- a/src/MNH/write_lfin.f90 +++ b/src/MNH/write_lfin.f90 @@ -165,6 +165,7 @@ END MODULE MODI_WRITE_LFIFM_n !! M.Mazoyer 04/16 : Add supersaturation fields !! P.Wautelet 11/07/2016 removed MNH_NCWRIT define !! JP Chaboureau 27/11/2017 add wind tendency forcing +!! 02/2018 Q.Libois move Diagnostic related to the radiations in radiations.f90 !! Philippe Wautelet: 05/2016-04/2018: new data structures and calls for I/O !! !------------------------------------------------------------------------------- diff --git a/src/MNH/write_stationn.f90 b/src/MNH/write_stationn.f90 index 6676aa8b30350a42cab63d3e14bb89c95fa6bfa6..bc1149a08a25575c3a5ff6c4d6e2113f81d80e82 100644 --- a/src/MNH/write_stationn.f90 +++ b/src/MNH/write_stationn.f90 @@ -152,7 +152,7 @@ IF (TSTATION%Y(II)==XUNDEF) RETURN IPROC = 8 + SIZE(TSTATION%R,3) + SIZE(TSTATION%SV,3) IF (SIZE(TSTATION%TKE )>0) IPROC = IPROC + 1 -IF (LDIAG_IN_RUN) IPROC = IPROC + 13 +IF (LDIAG_IN_RUN) IPROC = IPROC + 15 IF (LORILAM) IPROC = IPROC + JPMODE*(3+NSOA+NCARB+NSP) IF (LDUST) IPROC = IPROC + NMODE_DST*3 IF (LSALT) IPROC = IPROC + NMODE_SLT*3 @@ -283,6 +283,18 @@ IF (LDIAG_IN_RUN) THEN YUNIT (JPROC) = 'W/m2' YCOMMENT (JPROC) = 'Downward short-wave radiation' ZWORK6 (1,1,1,:,1,JPROC) = TSTATION%SW(:,II) + ! + JPROC = JPROC + 1 + YTITLE (JPROC) = 'SWDIR' + YUNIT (JPROC) = 'W/m2' + YCOMMENT (JPROC) = 'Downward direct short-wave radiation' + ZWORK6 (1,1,1,:,1,JPROC) = TSTATION%SWDIR(:,II) + ! + JPROC = JPROC + 1 + YTITLE (JPROC) = 'SWDIFF' + YUNIT (JPROC) = 'W/m2' + YCOMMENT (JPROC) = 'Downward diffuse short-wave radiation' + ZWORK6 (1,1,1,:,1,JPROC) = TSTATION%SWDIFF(:,II) ! JPROC = JPROC + 1 YTITLE (JPROC) = 'LW' diff --git a/src/Makefile.MESONH.mk b/src/Makefile.MESONH.mk index 5c83cb498dd04c61b18d9b2fd33b28df2ee208be..6c8d4affbea62883ce60f637267f0f392fbe15e3 100644 --- a/src/Makefile.MESONH.mk +++ b/src/Makefile.MESONH.mk @@ -128,6 +128,15 @@ DIR_RAD += LIB/RAD/ECMWF_RAD #CPPFLAGS_RAD = INC_RAD = -I$(B)LIB/RAD/ECMWF_RAD # +ifdef MNH_ECRAD +DIR_RAD += LIB/RAD/ecrad-1.0.1_mnh +DIR_RAD += LIB/RAD/ecrad-1.0.1 +CPPFLAGS_RAD = -DMNH_ECRAD +INC_RAD += -I$(B)LIB/RAD/ecrad-1.0.1/include +ARCH_XYZ := $(ARCH_XYZ)-ECRAD +endif +# +# ifdef DIR_RAD DIR_MASTER += $(DIR_RAD) CPPFLAGS += $(CPPFLAGS_RAD) @@ -136,6 +145,16 @@ INC += $(INC_RAD) IGNORE_DEP_MASTER += olwu.D olwv.D rad1Driv_MACLATMOSPH_60LEVELS_ICRCCM3.D tstrad.D tstrad_chansubset.D tstrad_rttov7.D \ tstrad_sx6.D +OBJS0 += spll_orrtm_kgb1.o spll_orrtm_kgb14.o spll_orrtm_kgb3_a.o spll_orrtm_kgb4_b.o \ + spll_orrtm_kgb5_c.o spll_orrtm_kgb10.o spll_orrtm_kgb15.o spll_orrtm_kgb3_b.o \ + spll_orrtm_kgb4_c.o spll_orrtm_kgb6.o spll_orrtm_kgb11.o spll_orrtm_kgb16.o \ + spll_orrtm_kgb3_c.o spll_orrtm_kgb5.o spll_orrtm_kgb7.o spll_orrtm_kgb12.o \ + spll_orrtm_kgb2.o spll_orrtm_kgb4.o spll_orrtm_kgb5_a.o spll_orrtm_kgb8.o \ + spll_orrtm_kgb13.o spll_orrtm_kgb3.o spll_orrtm_kgb4_a.o spll_orrtm_kgb5_b.o \ + spll_orrtm_kgb9.o spll_read_xker_raccs.o spll_read_xker_rdryg.o spll_read_xker_sdryg.o \ + spll_suecaebc.o spll_suecaec.o spll_suecaeor.o spll_suecaesd.o \ + spll_suecaess.o spll_suecaesu.o spll_suecozc.o spll_suecozo.o +ifdef MNH_ECRAD OBJS0 += spll_rrtm_kgb1.o spll_rrtm_kgb14.o spll_rrtm_kgb3_a.o spll_rrtm_kgb4_b.o \ spll_rrtm_kgb5_c.o spll_rrtm_kgb10.o spll_rrtm_kgb15.o spll_rrtm_kgb3_b.o \ spll_rrtm_kgb4_c.o spll_rrtm_kgb6.o spll_rrtm_kgb11.o spll_rrtm_kgb16.o \ @@ -145,6 +164,10 @@ OBJS0 += spll_rrtm_kgb1.o spll_rrtm_kgb14.o spll_rrtm_kgb3_a.o spll_rrtm_kgb4_b. spll_rrtm_kgb9.o spll_read_xker_raccs.o spll_read_xker_rdryg.o spll_read_xker_sdryg.o \ spll_suecaebc.o spll_suecaec.o spll_suecaeor.o spll_suecaesd.o \ spll_suecaess.o spll_suecaesu.o spll_suecozc.o spll_suecozo.o +IGNORE_DEP_MASTER += rrtm_rrtm_140gp_mcica.D srtm_spcvrt_mcica.D srtm_srtm_224gp_mcica.D radiation_psrad.D \ + radiation_psrad_rrtm.D test_spartacus_math.D radiation_adding_ica_sw_test.D \ + radiation_adding_ica_sw_test2.D srtm_gas_optical_depth_test.D +endif $(OBJS0): OPT = $(OPT0) diff --git a/src/configure b/src/configure index ea33d929aca0b32693f2659bd29919ab73ca8688..89bcf6c8af4a0a784ed0ceb1acbeef0be008bc23 100755 --- a/src/configure +++ b/src/configure @@ -26,6 +26,10 @@ export VERSION_OASIS=${VERSION_OASIS:-"mct_v3"} export VERSION_TOY=${VERSION_TOY:-"v1-0"} export VERSION_NCL=${VERSION_NCL:-"ncl-6.4.0"} + +export VERSION_ECRAD=${VERSION_ECRAD:-"1.0.1"} + + export LEN_HREC=${LEN_HREC:-16} # @@ -398,7 +402,7 @@ fi # ${LOCAL}/bin/eval_dollar profile_mesonh.ihm > profile_mesonh chmod +x profile_mesonh -XYZ=${ARCH}-R${MNH_REAL}I${MNH_INT}-${VERSION_XYZ}${VER_USER:+-${VER_USER}}-${VER_MPI}-${OPTLEVEL} +XYZ=${ARCH}-R${MNH_REAL}I${MNH_INT}-${VERSION_XYZ}${MNH_ECRAD:+-ECRAD}${VER_USER:+-${VER_USER}}-${VER_MPI}-${OPTLEVEL} cp profile_mesonh profile_mesonh-${XYZ} # # Do some post-install stuff