diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/Create_restart_file_for_MNH.ncl b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/Create_restart_file_for_MNH.ncl new file mode 100755 index 0000000000000000000000000000000000000000..1ede0c5e86d8cc85aba73ead70946e449a5a04c1 --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/Create_restart_file_for_MNH.ncl @@ -0,0 +1,132 @@ +;================================================; +load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" +load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl" +load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" +; ================================================; +;############################################## +;#============================================# +;# Creating restart file from prep real +;# case files : mesonh model +;# Adapation from Create_restart_file_for_MNH.py +;# Author : S. Bielli +;# Date : 2016 +;#============================================# +;############################################## +; +begin +; +curdir_path=systemfunc("pwd")+"/" +; +file_RSTRT = curdir_path+"IROISE_5KM_201109_02_00.nc4" +a=addfile(file_RSTRT,"r") + +; fichier *.nc +dims = getfilevardimsizes(a,"LON") +print(dims) +imax=dims(1)-2 +jmax=dims(0)-2 +LON_MNH=a->LON(1:jmax,1:imax) +LAT_MNH=a->LAT(1:jmax,1:imax) +U10_MNH=a->UT(2,1:jmax,1:imax) +V10_MNH=a->VT(2,1:jmax,1:imax) +PRES_MNH=a->PABST(2,1:jmax,1:imax) + +if(isfilevar(a,"EVAP3D")) then + EVAP_MNH=a->EVAP3D(1:jmax,1:imax) +else + print("EVAP3D not found... imposed at 0!") + EVAP_MNH=new(dimsizes(LON_MNH),typeof(LON_MNH)) + EVAP_MNH=0. +end if + +if(isfilevar(a,"INPRR3D")) then + RAIN_MNH=a->INPRR3D(1:jmax,1:imax) +else + print("INPRR3D not found... imposed at 0!") + RAIN_MNH=new(dimsizes(LON_MNH),typeof(LON_MNH)) + RAIN_MNH=0. +end if + +if(isfilevar(a,"FMU")) then + FMU_MNH=a->FMU(1:jmax,1:imax) + FMV_MNH=a->FMV(1:jmax,1:imax) + H_MNH=a->H(1:jmax,1:imax) + RN_MNH=a->RN(1:jmax,1:imax) +else + print("Turbulent fluxes FMU, FMV, H and LE not found... imposed at 0!") + FMU_MNH=new(dimsizes(LON_MNH),typeof(LON_MNH)) + FMU_MNH=0. + FMV_MNH=new(dimsizes(LON_MNH),typeof(LON_MNH)) + FMV_MNH=0. + H_MNH=new(dimsizes(LON_MNH),typeof(LON_MNH)) + H_MNH=0. + RN_MNH=new(dimsizes(LON_MNH),typeof(LON_MNH)) + RN_MNH=0. +end if + +;######################################################################## + +print("------------------------------------------") +print(" Creating netcdf file : rstrt_MNH.nc") + +fout=curdir_path+"rstrt_MNH.nc" +c=addfile(fout,"c") +c@Description="Restart file for OASIS coupling" + +; ---------------------------------- +; Create the variables of the files +; ---------------------------------- +FMU_MNH!0="nlat" +FMU_MNH!1="nlon" +FMU_MNH@_FillValue=999. + +FMV_MNH!0="nlat" +FMV_MNH!1="nlon" +FMV_MNH@_FillValue=999. + +H_MNH!0="nlat" +H_MNH!1="nlon" +H_MNH@_FillValue=999. + +RN_MNH!0="nlat" +RN_MNH!1="nlon" +RN_MNH@_FillValue=999. + +EVAP_MNH!0="nlat" +EVAP_MNH!1="nlon" +EVAP_MNH@_FillValue=999. + +RAIN_MNH!0="nlat" +RAIN_MNH!1="nlon" +RAIN_MNH@_FillValue=999. + +PRES_MNH!0="nlat" +PRES_MNH!1="nlon" +PRES_MNH@_FillValue=999. + +U10_MNH!0="nlat" +U10_MNH!1="nlon" +U10_MNH@_FillValue=999. + +V10_MNH!0="nlat" +V10_MNH!1="nlon" +V10_MNH@_FillValue=999. + +; ---------------------------------- +; Write out the data arrays into the file +; ---------------------------------- +c->MNH_FMSU=FMU_MNH +c->MNH_FMSV=FMV_MNH +c->MNH_HEAT=H_MNH +c->MNH_SNET=RN_MNH +c->MNH_EVAP=EVAP_MNH +c->MNH_RAIN=RAIN_MNH +c->MNH_PRES=PRES_MNH +c->MNH__U10=U10_MNH +c->MNH__V10=V10_MNH + +print("Closing netcdf file : rstrt_MNH.nc") +print("-----------------------------------------") +;##################################################### + +end diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/Create_restart_file_for_MNH.py b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/Create_restart_file_for_MNH.py new file mode 100755 index 0000000000000000000000000000000000000000..13e244e7634b0ae96f641c71cc3e64476563d4d6 --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/Create_restart_file_for_MNH.py @@ -0,0 +1,98 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +############################################## +#============================================# +# Creating restart file from prep real +# case files : mesonh model +# Author : J. Pianezze +# Date : 2015 +#============================================# +############################################## + +import netCDF4 +import numpy as np +import os + +curdir_path=os.path.abspath(os.curdir)+'/' + +file_RSTRT = netCDF4.Dataset(curdir_path+'IROISE_5KM_201109_02_00.nc4') + +LON_MNH=file_RSTRT.variables['LON'][1:-1,1:-1] +LAT_MNH=file_RSTRT.variables['LAT'][1:-1,1:-1] +U10_MNH=file_RSTRT.variables['UT'][2,1:-1,1:-1] +V10_MNH=file_RSTRT.variables['VT'][2,1:-1,1:-1] +PRES_MNH=file_RSTRT.variables['PABST'][2,1:-1,1:-1] + +try: + EVAP_MNH=file_RSTRT.variables['EVAP3D'][1:-1,1:-1] +except KeyError: + print 'EVAP3D not found... imposed at 0!' + EVAP_MNH=np.zeros((np.shape(LON_MNH)[0],np.shape(LON_MNH)[1])) + +try: + RAIN_MNH=file_RSTRT.variables['INPRR3D'][1:-1,1:-1] +except KeyError: + print 'INPRR3D not found... imposed at 0!' + RAIN_MNH=np.zeros((np.shape(LON_MNH)[0],np.shape(LON_MNH)[1])) + +try: + FMU_MNH=file_RSTRT.variables['FMU'][1:-1,1:-1] + FMV_MNH=file_RSTRT.variables['FMV'][1:-1,1:-1] + H_MNH=file_RSTRT.variables['H'][1:-1,1:-1] + RN_MNH=file_RSTRT.variables['RN'][1:-1,1:-1] +except KeyError: + print 'Turbulent fluxes FMU, FMV, H and LE not found... imposed at 0!' + FMU_MNH=np.zeros((np.shape(LON_MNH)[0],np.shape(LON_MNH)[1])) + FMV_MNH=np.zeros((np.shape(LON_MNH)[0],np.shape(LON_MNH)[1])) + H_MNH=np.zeros((np.shape(LON_MNH)[0],np.shape(LON_MNH)[1])) + RN_MNH=np.zeros((np.shape(LON_MNH)[0],np.shape(LON_MNH)[1])) + +######################################################################## + +print '------------------------------------------' +print ' Creating netcdf file : rstrt_MNH.nc' + +fout=netCDF4.Dataset(curdir_path+'rstrt_MNH.nc','w',format='NETCDF3_64BIT') +fout.Description='Restart file for OASIS coupling' + +# ---------------------------------- +# Create the dimensions of the files +# ---------------------------------- +fout.createDimension ('nlon', len(LON_MNH[0,:])) +fout.createDimension ('nlat', len(LAT_MNH[:,0])) + +# ---------------------------------- +# Create the variables of the files +# ---------------------------------- +varout=fout.createVariable('MNH_FMSU','d',('nlat','nlon'),fill_value=999.) +varout=fout.createVariable('MNH_FMSV','d',('nlat','nlon'),fill_value=999.) +varout=fout.createVariable('MNH_HEAT','d',('nlat','nlon'),fill_value=999.) +varout=fout.createVariable('MNH_SNET','d',('nlat','nlon'),fill_value=999.) +varout=fout.createVariable('MNH_EVAP','d',('nlat','nlon'),fill_value=999.) +varout=fout.createVariable('MNH_RAIN','d',('nlat','nlon'),fill_value=999.) +varout=fout.createVariable('MNH_PRES','d',('nlat','nlon'),fill_value=999.) +varout=fout.createVariable('MNH__U10','d',('nlat','nlon'),fill_value=999.) +varout=fout.createVariable('MNH__V10','d',('nlat','nlon'),fill_value=999.) + +# ---------------------------------- +# Write out the data arrays into the file +# ---------------------------------- +fout.variables['MNH_FMSU'][:,:] = FMU_MNH[:,:] +fout.variables['MNH_FMSV'][:,:] = FMV_MNH[:,:] +fout.variables['MNH_HEAT'][:,:] = H_MNH[:,:] +fout.variables['MNH_SNET'][:,:] = RN_MNH[:,:] +fout.variables['MNH_EVAP'][:,:] = EVAP_MNH[:,:] +fout.variables['MNH_RAIN'][:,:] = RAIN_MNH[:,:] +fout.variables['MNH_PRES'][:,:] = PRES_MNH[:,:] +fout.variables['MNH__U10'][:,:] = U10_MNH[:,:] +fout.variables['MNH__V10'][:,:] = V10_MNH[:,:] + +# --------------------------------------- +# close the file +# --------------------------------------- +fout.close() + +print ' Closing netcdf file : rstrt_MNH.nc' +print '-----------------------------------------' +##################################################### diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/EXSEG1.nam_OCEAN b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/EXSEG1.nam_OCEAN new file mode 100755 index 0000000000000000000000000000000000000000..2f3a0bccbf971be155f12526548e098331926f04 --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/EXSEG1.nam_OCEAN @@ -0,0 +1,136 @@ +&NAM_CONFIO LCDF4=.TRUE., + LLFIOUT=.FALSE., + LLFIREAD=.FALSE. / + +&NAM_SFX_WAVE_CPL XTSTEP_CPL_WAVE = -1.0, + CWAVE_U10 = 'MNH__U10', + CWAVE_V10 = ' ', + CWAVE_CHA = 'MNH__CHA', + CWAVE_UCU = ' ', + CWAVE_VCU = ' ', + CWAVE_HS = ' ', + CWAVE_TP = ' ' / + +&NAM_SFX_SEA_CPL XTSTEP_CPL_SEA = 60., + CSEA_FWSU = 'MNH_FMSU', + CSEA_FWSV = 'MNH_FMSV', + CSEA_HEAT = 'MNH_HEAT', + CSEA_SNET = 'MNH_SNET', + CSEA_WIND = ' ', + CSEA_FWSM = ' ', + CSEA_EVAP = 'MNH_EVAP', + CSEA_RAIN = 'MNH_RAIN', + CSEA_SNOW = ' ', + CSEA_WATF = ' ', + CSEA_PRES = 'MNH_PRES', + CSEA_SST = 'MNH__SST', + CSEA_UCU = 'MNH__UCU', + CSEA_VCU = 'MNH__VCU' / + +&NAM_OASIS LOASIS=.TRUE., + LOASIS_GRID=.TRUE., + CMODEL_NAME='mesonh' / + +&NAM_CONFZ MPI_BUFFER_SIZE=200 / + +&NAM_CONF CCONF = "START", + NVERB=5, + NMODEL = 1, + CEXP = "IROIS", + CSEG = "00-01", + CSPLIT='BSPLITTING' / + +&NAM_DYN XSEGLEN = 360., + LCORIO = .TRUE., + LNUMDIFU = .TRUE., + LNUMDIFTH = .FALSE., + XALKTOP = 0.001, + XALZBOT = 1200. / + +&NAM_FMOUT XFMOUT(1,1)=360. / + +&NAM_CONFn LUSERV=.TRUE., + LUSECI=.TRUE., + LUSERC=.TRUE., + LUSERR=.TRUE., + LUSERI=.TRUE., + LUSERS=.TRUE., + LUSERG=.TRUE., + LUSERH=.FALSE., + NSV_USER=0 / + +&NAM_LUNITn CINIFILE = "IROISE_5KM_201109_02_00", + CINIFILEPGD="IROISE_5KM" / + +&NAM_DYNn XTSTEP = 10., + CPRESOPT = "ZRESI", + LITRADJ=.TRUE., + NITR = 8, + LHORELAX_UVWTH = .FALSE., + LHORELAX_RV = .FALSE., + LVE_RELAX = .TRUE., + NRIMX = 5, + NRIMY = 5, + XRIMKMAX = 0.01, + XT4DIFU = 300., + XT4DIFTH = 300. / + +&NAM_ADVn CUVW_ADV_SCHEME = "CEN4TH", + CMET_ADV_SCHEME = "PPM_01", + CSV_ADV_SCHEME = "PPM_01" / + +&NAM_PARAMn CCLOUD = "ICE3", + CTURB = "TKEL", + CRAD = "ECMW", + CDCONV = "NONE", + CSCONV="EDKF" / + +&NAM_PARAM_RADn XDTRAD = 600., + XDTRAD_CLONLY = 600. / + +&NAM_LBCn CLBCX = 2*"OPEN", + CLBCY = 2*"OPEN", + XCPHASE = 20., + XCPHASE_PBL = 0. / + +&NAM_LES / + +&NAM_TURBn CTURBLEN = "BL89", + CTURBDIM = "1DIM", + LRMC01 = .FALSE., + LTURB_FLX=.TRUE., + LTURB_DIAG=.TRUE., + LSUBG_COND =.FALSE., + XKEMIN=0.0000001 / + +&NAM_CH_MNHCn LUSECHEM = F / + +&NAM_DIAG_SURFn N2M=2, + LSURF_BUDGET=.TRUE., + LCOEF=.TRUE. / + +&NAM_DIAG_SURF_ATMn LFRAC=.TRUE., + LDIAG_GRID=.TRUE. / + +&NAM_ISBAn CSCOND="NP89", + CALBEDO="DRY", + CROUGH='NONE', + CC1DRY='DEF', + CSOILFRZ='DEF', + CDIFSFCOND='DEF', + CSNOWRES='DEF' / + +&NAM_SSOn CROUGH='BE04' / + +&NAM_DIAG_ISBAn / + +&NAM_SEAFLUXn CSEA_FLUX='COARE3', + CSEA_ALB='TA96', + LPWG=.FALSE., + LPRECIP=.FALSE., + LPWEBB=.FALSE., + LPROGSST=.FALSE., + NGRVWAVES=0, + CINTERPOL_SST='NONE', + XICHCE=0.0 / + diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/EXSEG1.nam_WAVE b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/EXSEG1.nam_WAVE new file mode 100755 index 0000000000000000000000000000000000000000..624e0f9ad2e6b9e853ce1be1503af3cf64e06ed3 --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/EXSEG1.nam_WAVE @@ -0,0 +1,136 @@ +&NAM_CONFIO LCDF4=.TRUE., + LLFIOUT=.FALSE., + LLFIREAD=.FALSE. / + +&NAM_SFX_WAVE_CPL XTSTEP_CPL_WAVE = 60.0, + CWAVE_U10 = 'MNH__U10', + CWAVE_V10 = ' ', + CWAVE_CHA = 'MNH__CHA', + CWAVE_UCU = ' ', + CWAVE_VCU = ' ', + CWAVE_HS = ' ', + CWAVE_TP = ' ' / + +&NAM_SFX_SEA_CPL XTSTEP_CPL_SEA = -1.0, + CSEA_FWSU = ' ', + CSEA_FWSV = ' ', + CSEA_HEAT = ' ', + CSEA_SNET = ' ', + CSEA_WIND = ' ', + CSEA_FWSM = ' ', + CSEA_EVAP = ' ', + CSEA_RAIN = ' ', + CSEA_SNOW = ' ', + CSEA_WATF = ' ', + CSEA_PRES = ' ', + CSEA_SST = ' ', + CSEA_UCU = ' ', + CSEA_VCU = ' ' / + +&NAM_OASIS LOASIS=.TRUE., + LOASIS_GRID=.TRUE., + CMODEL_NAME='mesonh' / + +&NAM_CONFZ MPI_BUFFER_SIZE=200 / + +&NAM_CONF CCONF = "START", + NVERB=5, + NMODEL = 1, + CEXP = "IROIS", + CSEG = "00-01", + CSPLIT='BSPLITTING' / + +&NAM_DYN XSEGLEN = 360., + LCORIO = .TRUE., + LNUMDIFU = .TRUE., + LNUMDIFTH = .FALSE., + XALKTOP = 0.001, + XALZBOT = 1200. / + +&NAM_FMOUT XFMOUT(1,1)=360. / + +&NAM_CONFn LUSERV=.TRUE., + LUSECI=.TRUE., + LUSERC=.TRUE., + LUSERR=.TRUE., + LUSERI=.TRUE., + LUSERS=.TRUE., + LUSERG=.TRUE., + LUSERH=.FALSE., + NSV_USER=0 / + +&NAM_LUNITn CINIFILE = "IROISE_5KM_201109_02_00", + CINIFILEPGD="IROISE_5KM" / + +&NAM_DYNn XTSTEP = 10., + CPRESOPT = "ZRESI", + LITRADJ=.TRUE., + NITR = 8, + LHORELAX_UVWTH = .FALSE., + LHORELAX_RV = .FALSE., + LVE_RELAX = .TRUE., + NRIMX = 5, + NRIMY = 5, + XRIMKMAX = 0.01, + XT4DIFU = 300., + XT4DIFTH = 300. / + +&NAM_ADVn CUVW_ADV_SCHEME = "CEN4TH", + CMET_ADV_SCHEME = "PPM_01", + CSV_ADV_SCHEME = "PPM_01" / + +&NAM_PARAMn CCLOUD = "ICE3", + CTURB = "TKEL", + CRAD = "ECMW", + CDCONV = "NONE", + CSCONV="EDKF" / + +&NAM_PARAM_RADn XDTRAD = 600., + XDTRAD_CLONLY = 600. / + +&NAM_LBCn CLBCX = 2*"OPEN", + CLBCY = 2*"OPEN", + XCPHASE = 20., + XCPHASE_PBL = 0. / + +&NAM_LES / + +&NAM_TURBn CTURBLEN = "BL89", + CTURBDIM = "1DIM", + LRMC01 = .FALSE., + LTURB_FLX=.TRUE., + LTURB_DIAG=.TRUE., + LSUBG_COND =.FALSE., + XKEMIN=0.0000001 / + +&NAM_CH_MNHCn LUSECHEM = F / + +&NAM_DIAG_SURFn N2M=2, + LSURF_BUDGET=.TRUE., + LCOEF=.TRUE. / + +&NAM_DIAG_SURF_ATMn LFRAC=.TRUE., + LDIAG_GRID=.TRUE. / + +&NAM_ISBAn CSCOND="NP89", + CALBEDO="DRY", + CROUGH='NONE', + CC1DRY='DEF', + CSOILFRZ='DEF', + CDIFSFCOND='DEF', + CSNOWRES='DEF' / + +&NAM_SSOn CROUGH='BE04' / + +&NAM_DIAG_ISBAn / + +&NAM_SEAFLUXn CSEA_FLUX='COARE3', + CSEA_ALB='TA96', + LPWG=.FALSE., + LPRECIP=.FALSE., + LPWEBB=.FALSE., + LPROGSST=.FALSE., + NGRVWAVES=0, + CINTERPOL_SST='NONE', + XICHCE=0.0 / + diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/PRE_IDEA1.nam b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/PRE_IDEA1.nam new file mode 100644 index 0000000000000000000000000000000000000000..5a13fe988fb47bb26556a610f38a3d631f92a1cd --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/PRE_IDEA1.nam @@ -0,0 +1,56 @@ +&NAM_CONFIO LCDF4=.TRUE., + LLFIOUT=.FALSE., + LLFIREAD=.FALSE. / + +&NAM_VER_GRID NKMAX=48, + YZGRID_TYPE='FUNCTN', + ZDZGRD=10., + ZDZTOP=800., + ZZMAX_STRGRD=100., + ZSTRGRD=5., + ZSTRTOP=5. / + +&NAM_CONF_PRE LBOUSS=.FALSE., + NVERB=5, + CIDEAL='RSOU', + CZS='FLAT', + LSHIFT=F / + +&NAM_REAL_PGD CPGD_FILE='IROISE_5KM', + LREAD_ZS=.TRUE., + LREAD_GROUND_PARAM=.TRUE. / + +&NAM_LUNITn CINIFILE='IROISE_5KM_201109_02_00', + CINIFILEPGD='IROISE_5KM' / + +&NAM_LBCn_PRE CLBCX= 2*'OPEN', CLBCY= 2*'OPEN' / + +&NAM_VPROF_PRE CTYPELOC='IJGRID', NILOC=10, NJLOC=2, + CFUNU='ZZZ', CFUNV='ZZZ', + LGEOSBAL=.FALSE. / + +&NAM_PREP_ISBA XHUG_SURF=10., + XHUG_ROOT=10., + XHUG_DEEP=10., + XTG_SURF=290., + XTG_ROOT=290., + XTG_DEEP=290. / + +&NAM_PREP_SEAFLUX XSST_UNIF=290. / + +&NAM_PREP_WATFLUX XTS_WATER_UNIF=290. / + +RSOU +2011 9 2 0. +'ZUVTHDMR' +0.0 +100000. +285. +0.0 +3 + 10. 2. 0. + 1000. 10. 0. + 10000. 10. 0. +3 + 10. 284. 0. + 10000. 300. 0. diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/PRE_PGD1.nam b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/PRE_PGD1.nam new file mode 100644 index 0000000000000000000000000000000000000000..6a231a4f463f93190f61eb80ccf91e7d906f45ce --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/PRE_PGD1.nam @@ -0,0 +1,54 @@ +&NAM_CONFIO LCDF4=.TRUE., + LLFIOUT=.FALSE., + LLFIREAD=.FALSE. / + +&NAM_PGDFILE CPGDFILE='IROISE_5KM', + NHALO=15 / + +&NAM_PGD_GRID CGRID='CONF PROJ' / + +&NAM_CONF_PROJ XLAT0=48.25, + XLON0=-5.0, + XRPK=0., + XBETA=0. / + +&NAM_CONF_PROJ_GRID XLATCEN=48.25, + XLONCEN=-5.0, + NIMAX=20, + NJMAX=20, + XDX=10000., + XDY=10000. / + +&NAM_PGD_ARRANGE_COVER LWATER_TO_NATURE=.FALSE., + LTOWN_TO_ROCK=.TRUE. / + +&NAM_COVER YCOVER='ECOCLIMAP_v2.0', + YCOVERFILETYPE='DIRECT' / + +&NAM_ZS YZS='gtopo30', + YZSFILETYPE='DIRECT' / + +&NAM_ZSFILTER NZSFILTER=1 / + +&NAM_ISBA YCLAY='CLAY_HWSD_MOY', + YCLAYFILETYPE='DIRECT', + YSAND='SAND_HWSD_MOY', + YSANDFILETYPE='DIRECT' / + +&NAM_DIAG_SURF_ATMn LFRAC=.TRUE., + LDIAG_GRID=.TRUE. / + +&NAM_DIAG_SURFn N2M=2, + LSURF_BUDGET=.TRUE., + LCOEF=.TRUE. / + +&NAM_SEABATHY YSEABATHY='etopo2.nc', + YSEABATHYFILETYPE='NETCDF', + YNCVARNAME='topo' / + +&NAM_PGD_SCHEMES CNATURE='ISBA', + CSEA='SEAFLX', + CTOWN='TEB', + CWATER='WATFLX', + LGARDEN=.FALSE. / + diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/clean_prep_mesonh_xyz b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/clean_prep_mesonh_xyz new file mode 100755 index 0000000000000000000000000000000000000000..f0551d49de2d0c630468942b12caf19e9b858b62 --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/clean_prep_mesonh_xyz @@ -0,0 +1,18 @@ +#!/bin/bash + +# cleaning PGD files +rm -f IROISE* fort* +rm -f file* +rm -f *.dir *.hdr +rm -f OUTPUT_LISTING* OUTPUT_TRANSFER pipe* *.tex +rm -f etop* + +# cleaning PIC files +rm -f arome* +rm -f file* +rm -f ecmwf* OUTPUT_LISTING* OUTPUT_TRANSFER pipe* *.tex +rm -f *.txt IROIS* +rm -f PRE_REAL1.nam + +# cleaning rstrt files +rm -f rstrt_*.nc diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/run_prep_mesonh_xyz b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/run_prep_mesonh_xyz new file mode 100755 index 0000000000000000000000000000000000000000..2878ec01bd1ffa44de8aab54558b3e4967ccafeb --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/1_INPUT_MNH/run_prep_mesonh_xyz @@ -0,0 +1,43 @@ +#!/bin/bash +echo '--------------------------------------' +echo '-- input for Meso-NH : PREP_PGD ' +echo '--------------------------------------' + +if [ "$PREP_PGD_FILES" = "" ] +then + +echo 'Your directory PREP_PGD_FILES=$PREP_PGD_FILES doesnt exist.' +echo 'Please define the location of your PREP_PGD_FILES through' +echo 'the environment variable PREP_PGD_FILES' +exit + +else + +ln -sf $PREP_PGD_FILES/CLAY_HWSD_MOY.??? . +ln -sf $PREP_PGD_FILES/SAND_HWSD_MOY.??? . +ln -sf $PREP_PGD_FILES/ECOCLIMAP_v2.0.??? . +ln -sf $PREP_PGD_FILES/gtopo30.??? . +ln -sf $PREP_PGD_FILES/etopo2.nc . + +time ${MONORUN} PREP_PGD${XYZ} + +#rm *.hdr +#rm *.dir +#rm etopo2.nc + +echo '---------------------------------------' +echo '-- input for Meso-NH : PREP_IDEAL_CASE' +echo '---------------------------------------' + +time ${MONORUN} PREP_IDEAL_CASE${XYZ} + +echo '---------------------------------------' +echo '-- input for Meso-NH : ' +echo '-- Create_restart_file_for_MNH.ncl/py ' +echo '---------------------------------------' + +ncl Create_restart_file_for_MNH.ncl +#python Create_restart_file_for_MNH.py + +fi +#---------------------------- diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/2_INPUT_TOY/Create_grid_and_restart_files_for_TOY.ncl b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/2_INPUT_TOY/Create_grid_and_restart_files_for_TOY.ncl new file mode 100755 index 0000000000000000000000000000000000000000..2403b03d55ea14a9b1d04c645dfc2c4f14b2c74a --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/2_INPUT_TOY/Create_grid_and_restart_files_for_TOY.ncl @@ -0,0 +1,192 @@ +;================================================; +load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" +load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl" +load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" +;================================================; +;################################################### +;=================================================# +; Creating grid and restart file for toy model +; Adaptation From Create_grid_and_restart_files_for_TOY.py +; Author : S. Bielli +; Date : 2016 +;=================================================# +;################################################## + +begin + +curdir_path=systemfunc("pwd")+"/" + +;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +; To be defined by the user +;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ + +;-- Limit of the grid (from etopo) +lat_domain=(/47.0, 49.5/) +lon_domain=(/-6.2, -4.0/) + +;-- Type of forcing to create the restart file +; for the toy : CNSTE or SINUS + +; CNSTE +value_CNSTE=290.0 + +; SINUS +value_SINUS_COEF=0.011 +value_SINUS_LENGTH=1000. + +;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ + +file_topo = "topo.nc" +a=addfile(file_topo,"r") + +;------ Read variables +lon_full=a->lon +lat_full=a->lat +topo_full=a->topo + +ind_min_lon=ind(lon_full.gt.lon_domain(0)) +print(ind_min_lon(0)) +ind_max_lon=ind(lon_full.gt.lon_domain(1))-1 +print(ind_max_lon(0)) +ind_min_lat=ind(lat_full.gt.lat_domain(0)) +print(ind_min_lat(0)) +ind_max_lat=ind(lat_full.gt.lat_domain(1))-1 +print(ind_max_lat(0)) + + +lon=lon_full(ind_min_lon(0):ind_max_lon(0)) +print(dimsizes(lon)) +lat=lat_full(ind_min_lat(0):ind_max_lat(0)) +topo=topo_full(ind_min_lat(0):ind_max_lat(0),ind_min_lon(0):ind_max_lon(0)) + +dims=dimsizes(topo) +nlon=dims(1) +print("nlon="+nlon) +nlat=dims(0) +print("nlat="+nlat) +ncorn=4 ; print 'ncorn=', ncorn + +print("---- longitude/latitude") + +printVarSummary(lat) +printVarSummary(lon) +print(nlat) +print(nlon) +lat2d=conform_dims((/nlat,nlon/),lat,0) +lon2d=conform_dims((/nlat,nlon/),lon,1) +printVarSummary(lon2d) + +print("---- corners longitude/latitude") +clo=new((/ncorn,nlat,nlon/),typeof(lon)) +cla=new((/ncorn,nlat,nlon/),typeof(lon)) +; +deltax=lon(1)-lon(0) +print("deltax="+deltax) +clo(0,:,:)=lon2d(:,:)+deltax/2.0 +clo(1,:,:)=lon2d(:,:)-deltax/2.0 +clo(2,:,:)=lon2d(:,:)-deltax/2.0 +clo(3,:,:)=lon2d(:,:)+deltax/2.0 +; +deltay=lat(1)-lat(0) +print("deltay="+deltay) +cla(0,:,:)=lat2d(:,:)+deltay/2.0 +cla(1,:,:)=lat2d(:,:)+deltay/2.0 +cla(2,:,:)=lat2d(:,:)-deltay/2.0 +cla(3,:,:)=lat2d(:,:)-deltay/2.0 +; +print("---- surface") +surface=new((/nlat,nlon/),typeof(lon)) +surface=deltax*deltay + +; +print("---- mask and var send by toy") +maskt=new((/nlat,nlon/),typeof(lon)) +toyvarcnste=new((/nlat,nlon/),typeof(lon)) +toyvarsinus=new((/nlat,nlon/),typeof(lon)) + +maskt= where(topo.gt.0.,0,1) +toyvarcnste = value_CNSTE + +pi=3.141592653589793 +do ind_lat=0,dimsizes(lat)-1 + toyvarsinus(ind_lat,:) = value_SINUS_COEF*sin(lat(ind_lat)*pi/180.0*value_SINUS_LENGTH) +end do + +;################################################## +print("------------------------------------------") +print(" Creating netcdf file : grid_toy_model.nc") + +grid_file=curdir_path+"grid_toy_model.nc" +c=addfile(grid_file,"c") +c@Description="Grid file for OASIS coupling" + +; ---------------------------------- +; Create the variables of the files +; ---------------------------------- + +lon2d!0="nlat" +lon2d!1="nlon" + +lat2d!0="nlat" +lat2d!1="nlon" + +clo!0="ncorner" +clo!1="nlat" +clo!2="nlon" + +cla!0="ncorner" +cla!1="nlat" +cla!2="nlon" + +surface!0="nlat" +surface!1="nlon" + +maskt!0="nlat" +maskt!1="nlon" + +;# --------------------------------------- +;# Write out the data arrays into the file +;# --------------------------------------- +c->lon=lon2d +c->lat=lat2d +c->clo=clo +c->cla=cla +c->srf=surface +c->imask=maskt + +print(" Closing netcdf file : grid_toy_model.nc") +print("------------------------------------------") +;################################################## + +;################################################## +print("------------------------------------------") +print(" Creating netcdf file : rstrt_TOY.nc") + +rstrt_file=curdir_path+"rstrt_TOY.nc" +d=addfile(rstrt_file,"c") +d@Description="Restart file for OASIS coupling" + +; ---------------------------------- +; Create the variables of the files +; ---------------------------------- + +toyvarcnste!0="nlat" +toyvarcnste!1="nlon" + +toyvarsinus!0="nlat" +toyvarsinus!1="nlon" + +; --------------------------------------- +; Write out the data arrays into the file +; --------------------------------------- + +d->VARCNSTE=toyvarcnste +d->VARSIN01=toyvarsinus +d->VARSIN02=toyvarsinus + +print(" Closing netcdf file : rstrt_TOY.nc") +print("-----------------------------------------") +;##################################################### + +end diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/2_INPUT_TOY/Create_grid_and_restart_files_for_TOY.py b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/2_INPUT_TOY/Create_grid_and_restart_files_for_TOY.py new file mode 100755 index 0000000000000000000000000000000000000000..153d1fcb664f3ff6a66fbc4749a3da7cd1b24bed --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/2_INPUT_TOY/Create_grid_and_restart_files_for_TOY.py @@ -0,0 +1,190 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# +################################################### +#=================================================# +# Creating grid and restart file for toy model +# Author : J. Pianezze +# Date : 2015 +#=================================================# +################################################### +# +import netCDF4 +import numpy as np +import scipy +import matplotlib.pyplot as plt +import math +from pylab import * +import os +# +curdir_path=os.path.abspath(os.curdir)+'/' +# +#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +# To be defined by the user +#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +# +#-- Limit of the grid (from etopo) +lat_domain=[47.0, 49.5] +lon_domain=[-6.2, -4.0] + +#-- Type of forcing to create the restart file +# for the toy : CNSTE or SINUS + +# CNSTE +value_CNSTE=290.0 + +# SINUS +value_SINUS_COEF=0.011 +value_SINUS_LENGTH=1000. +# +#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ + +file_topo = netCDF4.Dataset('topo.nc') + +#------ Read variables +lon_full=file_topo.variables['lon'][:] +lat_full=file_topo.variables['lat'][:] +topo_full=file_topo.variables['topo'][:,:] + +ind_min_lon=find(lon_full[:]>lon_domain[0])[0] ; print ind_min_lon +ind_max_lon=find(lon_full[:]>lon_domain[1])[0] ; print ind_max_lon +ind_min_lat=find(lat_full[:]>lat_domain[0])[0] ; print ind_min_lat +ind_max_lat=find(lat_full[:]>lat_domain[1])[0] ; print ind_max_lat + +lon=lon_full[ind_min_lon:ind_max_lon] +lat=lat_full[ind_min_lat:ind_max_lat] +topo=topo_full[ind_min_lat:ind_max_lat,ind_min_lon:ind_max_lon] + +#plt.contourf(topo) +#plt.show() + +nlon=np.size(lon) ; print 'nlon=', nlon +nlat=np.size(lat) ; print 'nlat=', nlat +ncorn=4 ; print 'ncorn=', ncorn + +print '---- longitude/latitude' +lon2D=np.zeros((nlat,nlon)) +lat2D=np.zeros((nlat,nlon)) + +for ind_lon in xrange(nlon): + lat2D[:,ind_lon]=lat[:] +for ind_lat in xrange(nlat): + lon2D[ind_lat,:]=lon[:] + +print '---- corners longitude/latitude' +clo=np.zeros((ncorn,nlat,nlon)) +cla=np.zeros((ncorn,nlat,nlon)) + +deltax=lon[1]-lon[0] ; print 'deltax=', deltax +clo[0,:,:]=lon2D[:,:]+deltax/2.0 +clo[1,:,:]=lon2D[:,:]-deltax/2.0 +clo[2,:,:]=lon2D[:,:]-deltax/2.0 +clo[3,:,:]=lon2D[:,:]+deltax/2.0 + +deltay=lat[1]-lat[0] ; print 'deltay=', deltay +cla[0,:,:]=lat2D[:,:]+deltay/2.0 +cla[1,:,:]=lat2D[:,:]+deltay/2.0 +cla[2,:,:]=lat2D[:,:]-deltay/2.0 +cla[3,:,:]=lat2D[:,:]-deltay/2.0 + +print '---- surface' +surface=np.zeros((nlat,nlon)) +surface[:,:]=deltax*deltay + + +print '---- mask and var send by toy' +mask=np.zeros((nlat,nlon)) +toyvarcnste=np.zeros((nlat,nlon)) +toyvarsinus=np.zeros((nlat,nlon)) + +for ind_lon in xrange(nlon): + for ind_lat in xrange(nlat): + if topo[ind_lat,ind_lon] > 0.0 : + mask[ind_lat,ind_lon]=0 + toyvarcnste[ind_lat,ind_lon] = value_CNSTE + toyvarsinus[ind_lat,ind_lon] = value_SINUS_COEF*math.sin(lat[ind_lat]*math.pi/180.0*value_SINUS_LENGTH) + else: + mask[ind_lat,ind_lon]=1 + toyvarcnste[ind_lat,ind_lon]=value_CNSTE + toyvarsinus[ind_lat,ind_lon]= value_SINUS_COEF*math.sin(lat[ind_lat]*math.pi/180.0*value_SINUS_LENGTH) + + +################################################## +print '------------------------------------------' +print ' Creating netcdf file : grid_toy_model.nc' + +grid_file=netCDF4.Dataset(curdir_path+'grid_toy_model.nc','w',format='NETCDF3_64BIT') +grid_file.Description='Grid file for OASIS coupling' + +# ---------------------------------- +# Create the dimensions of the files +# ---------------------------------- +grid_file.createDimension ('nlon', nlon) +grid_file.createDimension ('nlat', nlat) +grid_file.createDimension ('ncorner', 4 ) + +# ---------------------------------- +# Create the variables of the files +# ---------------------------------- +varout=grid_file.createVariable('lon','d',('nlat','nlon')) +varout=grid_file.createVariable('lat','d',('nlat','nlon')) +varout=grid_file.createVariable('clo','d',('ncorner','nlat','nlon')) +varout=grid_file.createVariable('cla','d',('ncorner','nlat','nlon')) +varout=grid_file.createVariable('srf','d',('nlat','nlon')) +varout=grid_file.createVariable('imask','d',('nlat','nlon')) + +# --------------------------------------- +# Write out the data arrays into the file +# --------------------------------------- +grid_file.variables['lon'][:,:] = lon2D[:,:] +grid_file.variables['lat'][:,:] = lat2D[:,:] +grid_file.variables['clo'][:,:] = clo[:,:,:] +grid_file.variables['cla'][:,:] = cla[:,:,:] +grid_file.variables['srf'][:,:] = surface[:,:] +grid_file.variables['imask'][:,:] = mask[:,:] + +# --------------------------------------- +# close the file +# --------------------------------------- +grid_file.close() + +print ' Closing netcdf file : grid_toy_model.nc' +print '------------------------------------------' +################################################## + +################################################## +print '------------------------------------------' +print ' Creating netcdf file : rstrt_TOY.nc' + +rstrt_file=netCDF4.Dataset(curdir_path+'rstrt_TOY.nc','w',format='NETCDF3_64BIT') +rstrt_file.Description='Restart file for OASIS coupling' + +# ---------------------------------- +# Create the dimensions of the files +# ---------------------------------- +rstrt_file.createDimension ('nlon', nlon) +rstrt_file.createDimension ('nlat', nlat) + +# ---------------------------------- +# Create the variables of the files +# ---------------------------------- +varout=rstrt_file.createVariable('VARCNSTE','d',('nlat','nlon')) +varout=rstrt_file.createVariable('VARSIN01','d',('nlat','nlon')) +varout=rstrt_file.createVariable('VARSIN02','d',('nlat','nlon')) + +# --------------------------------------- +# Write out the data arrays into the file +# --------------------------------------- +rstrt_file.variables['VARCNSTE'][:,:] = toyvarcnste[:,:] +rstrt_file.variables['VARSIN01'][:,:] = toyvarsinus[:,:] +rstrt_file.variables['VARSIN02'][:,:] = toyvarsinus[:,:] + +# --------------------------------------- +# close the file +# --------------------------------------- +rstrt_file.close() + +print ' Closing netcdf file : rstrt_TOY.nc' +print '-----------------------------------------' +##################################################### diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/2_INPUT_TOY/TOYNAMELIST.nam_OCEAN b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/2_INPUT_TOY/TOYNAMELIST.nam_OCEAN new file mode 100644 index 0000000000000000000000000000000000000000..55123e9e7f5b596e5870986d40610b628e7bf2a4 --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/2_INPUT_TOY/TOYNAMELIST.nam_OCEAN @@ -0,0 +1,20 @@ +&NAM_OASIS IL_NB_TIME_STEPS=6, + DELTA_T=60, + DATA_FILENAME='grid_toy_model.nc' / + +&NAM_FCT_SEND CTYPE_FCT='CNSTE', + VALUE=290.0 / + +&NAM_RECV_FIELDS NB_RECV_FIELDS=7, + CRCVFIELDS(1)='VARRCV01', + CRCVFIELDS(2)='VARRCV02', + CRCVFIELDS(3)='VARRCV03', + CRCVFIELDS(4)='VARRCV04', + CRCVFIELDS(5)='VARRCV05', + CRCVFIELDS(6)='VARRCV06', + CRCVFIELDS(7)='VARRCV07' / + +&NAM_SEND_FIELDS NB_SEND_FIELDS=3, + CSNDFIELDS(1)='VARCNSTE', + CSNDFIELDS(2)='VARSIN01', + CSNDFIELDS(3)='VARSIN02' / diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/2_INPUT_TOY/TOYNAMELIST.nam_WAVE b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/2_INPUT_TOY/TOYNAMELIST.nam_WAVE new file mode 100644 index 0000000000000000000000000000000000000000..7306d0b863ef4eb58f6396a32cef6fe396555649 --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/2_INPUT_TOY/TOYNAMELIST.nam_WAVE @@ -0,0 +1,12 @@ +&NAM_OASIS IL_NB_TIME_STEPS=6, + DELTA_T=60, + DATA_FILENAME='grid_toy_model.nc' / + +&NAM_FCT_SEND CTYPE_FCT='SINUS', + VALUE=0.011 / + +&NAM_RECV_FIELDS NB_RECV_FIELDS=1, + CRCVFIELDS(1)='VARRCV01' / + +&NAM_SEND_FIELDS NB_SEND_FIELDS=1, + CSNDFIELDS(1)='VARSIN01' / diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/2_INPUT_TOY/clean_prep_toy b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/2_INPUT_TOY/clean_prep_toy new file mode 100755 index 0000000000000000000000000000000000000000..a3480a36b6075bbf5e85c60fa94a74b6d8f69d09 --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/2_INPUT_TOY/clean_prep_toy @@ -0,0 +1,3 @@ +#!/bin/bash + +rm -f *.nc diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/2_INPUT_TOY/run_prep_toy b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/2_INPUT_TOY/run_prep_toy new file mode 100755 index 0000000000000000000000000000000000000000..09790be31c69cd5fc91c5b50d3e9ec5491bfc748 --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/2_INPUT_TOY/run_prep_toy @@ -0,0 +1,21 @@ +#!/bin/bash +echo '--------------------------------------' +echo '-- input for TOY ' +echo '--------------------------------------' + +if [ "$PREP_PGD_FILES" = "" ] +then + +echo 'Your directory PREP_PGD_FILES=$PREP_PGD_FILES doesnt exist.' +echo 'Please define the location of your PREP_PGD_FILES through' +echo 'the environment variable PREP_PGD_FILES' +exit + +else + +ln -sf $PREP_PGD_FILES/etopo2.nc topo.nc + +ncl Create_grid_and_restart_files_for_TOY.ncl +#python Create_grid_and_restart_files_for_TOY.py + +fi diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/3_INPUT_OASIS/namcouple_OCEAN b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/3_INPUT_OASIS/namcouple_OCEAN new file mode 100755 index 0000000000000000000000000000000000000000..bcfbff4902dad0f01c456b71b0a8ab4ee05d0f77 --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/3_INPUT_OASIS/namcouple_OCEAN @@ -0,0 +1,137 @@ +# This is a typical input file for OASIS3-MCT. +# Keywords used in previous versions of OASIS3 +# but now obsolete are marked "Not used" +# Don't hesitate to ask precisions or make suggestions (oasishelp@cerfacs.fr). +# +# Any line beginning with # is ignored. Blank lines are not allowed. +# +######################################################################### + $NFIELDS +# The number of fields described in the second part of the namcouple. +# + 10 + $END +######################################################################### + $NBMODEL +# The number of models in this experiment + their names (6 characters) +# + 2 mesonh toyexe + $END +########################################################################### + $RUNTIME +# The total simulated time for this run in seconds +# + 360 + $END +########################################################################### + $NLOGPRT +# Amount of information written to OASIS3-MCT log files (see User Guide) +# Premier nombre: quantite d'information pour debugger +# Second nombre: statistics des processeurs + 30 3 + $END +########################################################################### + $STRINGS +# +# The above variables are the general parameters for the experiment. +# Everything below has to do with the fields being exchanged. +# +# ----------------------------------------- +# MESONH (mesonh) ==> TOY (toyexe) +# ----------------------------------------- +# +#~~~~~~~~~~~ +# Field 1 : +#~~~~~~~~~~~ +MNH_FMSU VARRCV01 1 60 1 rst_A.nc EXPOUT +20 20 66 75 ssea toyt LAG=+10 +R 0 R 0 +SCRIPR +DISTWGT LR SCALAR LATLON 1 4 +# +#~~~~~~~~~~~ +# Field 2 : +#~~~~~~~~~~~ +MNH_FMSV VARRCV02 1 60 1 rst_A.nc EXPOUT +20 20 66 75 ssea toyt LAG=+10 +R 0 R 0 +SCRIPR +DISTWGT LR SCALAR LATLON 1 4 +# +#~~~~~~~~~~~ +# Field 3 : +#~~~~~~~~~~~ +MNH_HEAT VARRCV03 1 60 1 rst_A.nc EXPOUT +20 20 66 75 ssea toyt LAG=+10 +R 0 R 0 +SCRIPR +DISTWGT LR SCALAR LATLON 1 4 +# +#~~~~~~~~~~~ +# Field 4 : +#~~~~~~~~~~~ +MNH_SNET VARRCV04 1 60 1 rst_A.nc EXPOUT +20 20 66 75 ssea toyt LAG=+10 +R 0 R 0 +SCRIPR +DISTWGT LR SCALAR LATLON 1 4 +# +#~~~~~~~~~~~ +# Field 5 : +#~~~~~~~~~~~ +MNH_EVAP VARRCV05 1 60 1 rst_A.nc EXPOUT +20 20 66 75 ssea toyt LAG=+10 +R 0 R 0 +SCRIPR +DISTWGT LR SCALAR LATLON 1 4 +# +#~~~~~~~~~~~ +# Field 6 : +#~~~~~~~~~~~ +MNH_RAIN VARRCV06 1 60 1 rst_A.nc EXPOUT +20 20 66 75 ssea toyt LAG=+10 +R 0 R 0 +SCRIPR +DISTWGT LR SCALAR LATLON 1 4 +# +#~~~~~~~~~~~ +# Field 7 : +#~~~~~~~~~~~ +MNH_PRES VARRCV07 1 180 1 rst_A.nc EXPOUT +20 20 66 75 ssea toyt LAG=+10 +R 0 R 0 +SCRIPR +DISTWGT LR SCALAR LATLON 1 4 +# +# ------------------------------------------ +# TOY (toyexe) ==> MESONH (mesonh) +# ------------------------------------------ +# +#~~~~~~~~~~~ +# Field 8 : +#~~~~~~~~~~~ +VARCNSTE MNH__SST 1 60 1 rst_T.nc EXPOUT +66 75 20 20 toyt ssea LAG=+60 +R 0 R 0 +SCRIPR +DISTWGT LR SCALAR LATLON 1 4 +# +#~~~~~~~~~~~ +# Field 9 : +#~~~~~~~~~~~ +VARSIN01 MNH__UCU 1 60 1 rst_T.nc EXPOUT +66 75 20 20 toyt ssea LAG=+60 +R 0 R 0 +SCRIPR +DISTWGT LR SCALAR LATLON 1 4 +# +#~~~~~~~~~~~ +# Field 10 : +#~~~~~~~~~~~ +VARSIN02 MNH__VCU 1 60 1 rst_T.nc EXPOUT +66 75 20 20 toyt ssea LAG=+60 +R 0 R 0 +SCRIPR +DISTWGT LR SCALAR LATLON 1 4 +# + $END diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/3_INPUT_OASIS/namcouple_WAVE b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/3_INPUT_OASIS/namcouple_WAVE new file mode 100755 index 0000000000000000000000000000000000000000..7efe75749c4b843eb81f53df554cf4ed4cb49356 --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/3_INPUT_OASIS/namcouple_WAVE @@ -0,0 +1,65 @@ +# This is a typical input file for OASIS3-MCT. +# Keywords used in previous versions of OASIS3 +# but now obsolete are marked "Not used" +# Don't hesitate to ask precisions or make suggestions (oasishelp@cerfacs.fr). +# +# Any line beginning with # is ignored. Blank lines are not allowed. +# +######################################################################### + $NFIELDS +# The number of fields described in the second part of the namcouple. +# + 2 + $END +######################################################################### + $NBMODEL +# The number of models in this experiment + their names (6 characters) +# + 2 mesonh toyexe + $END +########################################################################### + $RUNTIME +# The total simulated time for this run in seconds +# + 360 + $END +########################################################################### + $NLOGPRT +# Amount of information written to OASIS3-MCT log files (see User Guide) +# Premier nombre: quantite d'information pour debugger +# Second nombre: statistics des processeurs + 30 3 + $END +########################################################################### + $STRINGS +# +# The above variables are the general parameters for the experiment. +# Everything below has to do with the fields being exchanged. +# +# ----------------------------------------- +# MESONH (mesonh) ==> TOY (toyexe) +# ----------------------------------------- +# +#~~~~~~~~~~~ +# Field 1 : +#~~~~~~~~~~~ +MNH__U10 VARRCV01 1 60 1 rst_A.nc EXPOUT +20 20 66 75 ssea toyt LAG=+10 +R 0 R 0 +SCRIPR +DISTWGT LR SCALAR LATLON 1 4 +# +# ------------------------------------------ +# TOY (toyexe) ==> MESONH (mesonh) +# ------------------------------------------ +# +#~~~~~~~~~~~ +# Field 2 : +#~~~~~~~~~~~ +VARSIN01 MNH__CHA 1 60 1 rst_T.nc EXPOUT +66 75 20 20 toyt ssea LAG=+60 +R 0 R 0 +SCRIPR +DISTWGT LR SCALAR LATLON 1 4 +# + $END diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/A_RUN_MNH_TOY/clean_mesonh_xyz b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/A_RUN_MNH_TOY/clean_mesonh_xyz new file mode 100755 index 0000000000000000000000000000000000000000..9ed68a75ff863f68ea1b3c239a94bace632c770b --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/A_RUN_MNH_TOY/clean_mesonh_xyz @@ -0,0 +1,15 @@ +#!/bin/bash + +rm -f file_* +rm -f IROIS* +rm -f OUTPUT_LIST* REMAP* +rm -f PRESSURE* +rm -f *.nc +rm -f EXSEG1.nam +rm -f namcouple +rm -f TOYNAMELIST.nam +rm -f debug* mesonh* toyexe* +rm -f nout.000000 +rm -f OUTPUT_TOY.txt +rm -f pipe_name + diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/A_RUN_MNH_TOY/clean_plot b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/A_RUN_MNH_TOY/clean_plot new file mode 100755 index 0000000000000000000000000000000000000000..658660d3c9078b47a0e8490fa6f51912f2e61bf2 --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/A_RUN_MNH_TOY/clean_plot @@ -0,0 +1,4 @@ +#!/bin/bash + +rm -Rf MSU_MSV/ +rm -Rf U10_CHA/ diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/A_RUN_MNH_TOY/plot_coupling_model_toy.ncl b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/A_RUN_MNH_TOY/plot_coupling_model_toy.ncl new file mode 100755 index 0000000000000000000000000000000000000000..e1160270bfed1dca343fbc3a0bb612b6f1bb16f2 --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/A_RUN_MNH_TOY/plot_coupling_model_toy.ncl @@ -0,0 +1,217 @@ +;================================================; +load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl" +load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl" +load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl" +;================================================; +;################################################### +;==================================================# +; Visualization of the coupling outputs +; Adaptation from plot_coupling_model_toy.py +; Author : S. Bielli +; Date : 2016 +;==================================================# +;################################################### + +begin + +;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +; To be defined by the user +;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +; +print("===========================================") + +curdir_path=systemfunc("pwd")+"/" +print(curdir_path) + +name_file_VAR1_TOY=systemfunc("ls *toyexe_01.nc") +a1=addfile(name_file_VAR1_TOY,"r") +VAR1_T=getfilevarnames(a1) +name_file_VAR1_MOD=systemfunc("ls *mesonh_01.nc") +b1=addfile(name_file_VAR1_MOD,"r") +VAR1_M=getfilevarnames(b1) +VAR1_all=stringtochar(name_file_VAR1_MOD) +VAR1=VAR1_all(5:7) + +name_file_VAR2_TOY=systemfunc("ls *toyexe_02.nc") +a2=addfile(name_file_VAR2_TOY,"r") +VAR2_T=getfilevarnames(a2) +name_file_VAR2_MOD=systemfunc("ls *mesonh_02.nc") +b2=addfile(name_file_VAR2_MOD,"r") +VAR2_M=getfilevarnames(b2) +VAR2_all=stringtochar(name_file_VAR2_MOD) +VAR2=VAR2_all(5:7) + +name_file_GRIDS="grids.nc" +g=addfile(name_file_GRIDS,"r") + +;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ + +print("=============================================") +system("mkdir -p " +curdir_path+VAR1+"_"+VAR2) +print("Making directory") + +print("=============================================") +print("~~~~ Plot these variables : "+ VAR1+" "+ VAR2) + +;~~~~~ TOY +LAT_TOY=g->$"toyt.lat"$ +LON_TOY=g->$"toyt.lon"$ +dims_toy=dimsizes(LAT_TOY) +DIM_LAT_TOY=dims_toy(0) +DIM_LON_TOY=dims_toy(1) +print("DIM_LAT_TOY="+ DIM_LON_TOY+ " DIM_LAT_TOY="+DIM_LON_TOY) + +;~~~~~ MOD +LAT_MOD=g->$"ssea.lat"$ +LON_MOD=g->$"ssea.lon"$ +dims_mod=dimsizes(LAT_MOD) +DIM_LAT_MOD=dims_mod(0) +DIM_LON_MOD=dims_mod(1) +print("DIM_LAT_MOD = "+ DIM_LON_MOD+ " DIM_LAT_MOD="+ DIM_LON_MOD) + +;~~~~~ VAR1/VAR2 +if (VAR1_T(0).eq."time") then +VAR1_TOY=a1->$VAR1_T(1)$ +VAR1_MOD=b1->$VAR1_M(1)$ +else +VAR1_TOY=a1->$VAR1_T(0)$ +VAR1_MOD=b1->$VAR1_M(0)$ +end if + +VAR1_MOD@_FillValue = 999. +VAR1_TOY@_FillValue = 999. +VAR1_MOD = where (VAR1_MOD.gt.1000000 , VAR1_MOD@_FillValue, VAR1_MOD) +VAR1_TOY = where (VAR1_TOY.gt.1000000 , VAR1_TOY@_FillValue, VAR1_TOY) + +if (VAR2_T(0).eq."time") then +VAR2_TOY=a2->$VAR2_T(1)$ +VAR2_MOD=b2->$VAR2_M(1)$ +else +VAR2_TOY=a2->$VAR2_T(0)$ +VAR2_MOD=b2->$VAR2_M(0)$ +end if + +VAR1_MOD@lat2d=LAT_MOD +VAR1_MOD@lon2d=LON_MOD +VAR2_MOD@lat2d=LAT_MOD +VAR2_MOD@lon2d=LON_MOD +VAR1_TOY@lat2d=LAT_TOY +VAR1_TOY@lon2d=LON_TOY +VAR2_TOY@lat2d=LAT_TOY +VAR2_TOY@lon2d=LON_TOY + +;~~~~~ TIME TOY +TIME_TOY=a1->time + +;~~~~~ CONVERT VARIABLES +if (VAR2.eq."CHA") then + print("Multiply Charnock coefficient by 1000") + printVarSummary(VAR2_TOY) + VAR2_TOY=VAR2_TOY*1000.0 + VAR2_MOD=VAR2_MOD*1000.0 + OPVAR2="*1000.0" +else + OPVAR2="" +end if + +OPVAR1="" + +;===================================================== +;===================================================== + +lev_min_VAR1 = stringtofloat(sprintf("%5.2f",min(VAR1_TOY))) +lev_max_VAR1 = stringtofloat(sprintf("%5.2f",max(VAR1_TOY))) +lev_int_VAR1 = stringtofloat(sprintf("%4.2f",(lev_max_VAR1-lev_min_VAR1 ) / 30.)) + +lev_min_VAR2 = stringtofloat(sprintf("%5.2f",min(VAR2_MOD))) +lev_max_VAR2 = stringtofloat(sprintf("%5.2f",max(VAR2_MOD))) +lev_int_VAR2 = stringtofloat(sprintf("%4.2f",(lev_max_VAR2-lev_min_VAR2 ) / 30.)) + +;----------------------------------------------------- +print("~~~~ Temporal loop") +;----------------------------------------------------- +; Open workstation and define colormap +; ------------------------------------- + + type = "png" ; open a x11 window + ; change type to png, ps or pdf to get the plot into a file + wks = gsn_open_wks(type,"plt_BasicMap") ; + gsn_define_colormap(wks,"BlueDarkRed18") + + + res = True + res@gsnFrame = False + res@gsnDraw = False + + res@lbLabelAutoStride = True + + res@tiXAxisString = "longitude" ; x-axis label + res@tiYAxisString = "latitude" + + res@tmXBTickSpacingF= 2 + res@tmYLTickSpacingF= 1 + + res@lbOrientation = "vertical" + + res@cnFillOn = True + res@cnFillMode = "RasterFill" + res@cnLinesOn = False + + res@mpMaxLatF = min((/max(LAT_MOD),max(LAT_TOY)/)) ; choose subregion + res@mpMinLatF = max((/min(LAT_MOD),min(LAT_TOY)/)) + res@mpMaxLonF = min((/max(LON_TOY),max(LON_MOD)/)) + res@mpMinLonF = max((/min(LON_TOY),min(LON_MOD)/)) + + res@mpOutlineOn = False + + res@cnLevelSelectionMode = "ManualLevels" + + res@gsnSpreadColors = True + + resP = True +; gsn_define_colormap(wks,"topo_15lev") ; Choose colormap + +do ind_time=0,dimsizes(TIME_TOY)-2 + plot = new(4,graphic) + print(" ~~~~ Current time :"+ TIME_TOY(ind_time)) + + resP@txString = "Cumulated time " + TIME_TOY(ind_time)+"s" + resP@tiMainFontHeightF = 0.04 + + ;---------------------- + res@tiMainString = "SND MNH " + VAR1+OPVAR1 + res@cnMinLevelValF = lev_min_VAR1 + res@cnMaxLevelValF = lev_max_VAR1 + res@cnLevelSpacingF = lev_int_VAR1 + plot(0) =gsn_csm_contour_map(wks,VAR1_MOD(ind_time,:,:),res) + + ;---------------------- + res@tiMainString = "RCV TOY " + VAR1+OPVAR1 + plot(1) =gsn_csm_contour_map(wks,VAR1_TOY(ind_time,:,:),res) + + ;---------------------- + res@tiMainString = "SND TOY " + VAR2+OPVAR2 + res@cnMinLevelValF = lev_min_VAR2 + res@cnMaxLevelValF = lev_max_VAR2 + res@cnLevelSpacingF = lev_int_VAR2 + plot(2) =gsn_csm_contour_map(wks,VAR2_TOY(ind_time,:,:),res) + + ;---------------------- + res@tiMainString = "RCV MNH " + VAR2+OPVAR2 + plot(3) =gsn_csm_contour_map(wks,VAR2_MOD(ind_time,:,:),res) + + ;------------------------ + + gsn_panel(wks,plot,(/2,2/),resP) + +end do +print("=============================================") + +do ind_time=0,dimsizes(TIME_TOY)-2 +system("mv plt_BasicMap.00000"+(ind_time+1)+".png " + curdir_path+VAR1+"_"+VAR2+"/"+VAR1+"_"+VAR2+"_MOD_TOY_T"+ind_time+".png") +end do + +end diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/A_RUN_MNH_TOY/plot_coupling_model_toy.py b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/A_RUN_MNH_TOY/plot_coupling_model_toy.py new file mode 100755 index 0000000000000000000000000000000000000000..78d35fbb1cd217de573b4f07df5a7c75e7a80431 --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/A_RUN_MNH_TOY/plot_coupling_model_toy.py @@ -0,0 +1,159 @@ +##!/usr/bin/python +# -*- coding: utf-8 -*- +# +#################################################### +#==================================================# +# Visualization of the coupling outputs +# Author : J. Pianezze +# Date : 2015 +#==================================================# +#################################################### + +import netCDF4 +import numpy as np +import scipy +import matplotlib.pyplot as plt +from pylab import * +import os +import glob + +#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +# To be defined by the user +#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +# +print '==============================================' +curdir_path=os.path.abspath(os.curdir)+'/' +print curdir_path +# +name_file_VAR1_TOY=glob.glob('*toyexe_01.nc')[0] +name_file_VAR1_MOD=glob.glob('*mesonh_01.nc')[0] +VAR1=name_file_VAR1_MOD[5:8] +# +name_file_VAR2_TOY=glob.glob('*toyexe_02.nc')[0] +name_file_VAR2_MOD=glob.glob('*mesonh_02.nc')[0] +VAR2=name_file_VAR2_MOD[5:8] +# +name_file_GRIDS='grids.nc' +# +#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ +#$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$ + +print '==============================================' +try : + os.mkdir(curdir_path+VAR1+'_'+VAR2+'/') +except OSError: + print 'Directory already created' +else: + print 'Making directory' + +print '==============================================' +print '~~~~ Plot these variables :', VAR1, VAR2 + +file_VAR1_TOY = netCDF4.Dataset(name_file_VAR1_TOY) +file_VAR1_MOD = netCDF4.Dataset(name_file_VAR1_MOD) + +file_VAR2_TOY = netCDF4.Dataset(name_file_VAR2_TOY) +file_VAR2_MOD = netCDF4.Dataset(name_file_VAR2_MOD) + +file_GRIDS = netCDF4.Dataset(name_file_GRIDS) + +#~~~~~ TOY +LAT_TOY=file_GRIDS.variables['toyt.lat'] +LON_TOY=file_GRIDS.variables['toyt.lon'] +DIM_LAT_TOY=np.shape(LAT_TOY)[0] +DIM_LON_TOY=np.shape(LON_TOY)[1] +print 'DIM_LAT_TOY, DIM_LON_TOY', DIM_LAT_TOY, DIM_LON_TOY + +#~~~~~ MOD +LAT_MOD=file_GRIDS.variables['ssea.lat'] +LON_MOD=file_GRIDS.variables['ssea.lon'] +DIM_LAT_MOD=np.shape(LAT_MOD)[0] +DIM_LON_MOD=np.shape(LON_MOD)[1] +print 'DIM_LAT_MOD, DIM_LON_MOD', DIM_LAT_MOD, DIM_LON_MOD + +#~~~~~ VAR1/VAR2 +VAR1_TOY=file_VAR1_TOY.variables[name_file_VAR1_TOY[0:8]][:,:,:] +VAR1_MOD=file_VAR1_MOD.variables[name_file_VAR1_MOD[0:8]][:,:,:] +MASK_VAR1_MOD = (VAR1_MOD[:,:,:] == 1E20) +VAR1_MOD = np.ma.MaskedArray(VAR1_MOD, mask=MASK_VAR1_MOD) + +VAR2_TOY=file_VAR2_TOY.variables[name_file_VAR2_TOY[0:8]][:,:,:] +VAR2_MOD=file_VAR2_MOD.variables[name_file_VAR2_MOD[0:8]][:,:,:] + +OPVAR1='' +OPVAR2='' + +#~~~~~ TIME TOY +TIME_TOY=file_VAR1_TOY.variables['time'][:] + +#~~~~~ CONVERT VARIABLES +if VAR2=='CHA': + print 'Multiply Charnock coefficient by 1000' + VAR2_TOY[:,:,:]=VAR2_TOY[:,:,:]*1000.0 + VAR2_MOD[:,:,:]=VAR2_MOD[:,:,:]*1000.0 + OPVAR2='*1000.0' + +#===================================================== +#===================================================== + +#----------------------------------------------------- +print '~~~~ Temporal loop' +#----------------------------------------------------- +for ind_time in xrange(np.size(TIME_TOY)-1): + print ' ~~~~ Current time :', TIME_TOY[ind_time] + + fig = plt.figure() + fig.suptitle('Cumulated time : '+str(TIME_TOY[ind_time])+'s', fontsize=18) + + #---------------------- + ax = fig.add_subplot(221) + plt.title('SND MNH '+VAR1+OPVAR1,fontsize=18) + CS=plt.pcolormesh(LON_MOD[:,:],LAT_MOD[:,:],VAR1_MOD[ind_time,:,:],cmap=plt.cm.RdBu_r,\ + vmin=np.min(VAR1_TOY), vmax=np.max(VAR1_TOY)) + cbar = plt.colorbar(CS,orientation='vertical',format='%.3f') + plt.ylabel(r'latitude [-]',fontsize=18) + plt.tick_params(axis='x',which='both',bottom='on',top='on',labelbottom='off') + xlim(( max(np.min(LON_MOD[:,:]),np.min(LON_TOY[:,:])), min(np.max(LON_MOD[:,:]),np.max(LON_TOY[:,:])) )) + ylim(( max(np.min(LAT_MOD[:,:]),np.min(LAT_TOY[:,:])), min(np.max(LAT_MOD[:,:]),np.max(LAT_TOY[:,:])) )) + + #---------------------- + ax = fig.add_subplot(222) + plt.title('RCV TOY '+VAR1+OPVAR1,fontsize=18) + CS=plt.pcolormesh(LON_TOY[:,:],LAT_TOY[:,:],VAR1_TOY[ind_time,:,:],cmap=plt.cm.RdBu_r,\ + vmin=np.min(VAR1_TOY), vmax=np.max(VAR1_TOY)) + cbar = plt.colorbar(CS,orientation='vertical',format='%.3f') + plt.tick_params(axis='x',which='both',bottom='on',top='on',labelbottom='off') + plt.tick_params(axis='y',which='both',bottom='on',top='on',labelleft='off') + xlim(( max(np.min(LON_MOD[:,:]),np.min(LON_TOY[:,:])), min(np.max(LON_MOD[:,:]),np.max(LON_TOY[:,:])) )) + ylim(( max(np.min(LAT_MOD[:,:]),np.min(LAT_TOY[:,:])), min(np.max(LAT_MOD[:,:]),np.max(LAT_TOY[:,:])) )) + + #---------------------- + ax = fig.add_subplot(223) + plt.title('SND TOY '+VAR2+OPVAR2,fontsize=18) + CS=plt.pcolormesh(LON_TOY[:,:],LAT_TOY[:,:],VAR2_TOY[ind_time,:,:],cmap=plt.cm.RdBu_r,\ + vmin=np.min(VAR2_MOD), vmax=np.max(VAR2_MOD)) + cbar = plt.colorbar(CS,orientation='vertical',format='%.3f') + plt.ylabel(r'latitude [-]',fontsize=18) + plt.xlabel(r'longitude [-]',fontsize=18) + xlim(( max(np.min(LON_MOD[:,:]),np.min(LON_TOY[:,:])), min(np.max(LON_MOD[:,:]),np.max(LON_TOY[:,:])) )) + ylim(( max(np.min(LAT_MOD[:,:]),np.min(LAT_TOY[:,:])), min(np.max(LAT_MOD[:,:]),np.max(LAT_TOY[:,:])) )) + + #---------------------- + ax = fig.add_subplot(224) + plt.title('RCV MNH '+VAR2+OPVAR2,fontsize=18) + CS=plt.pcolormesh(LON_MOD[:,:],LAT_MOD[:,:],VAR2_MOD[ind_time,:,:],cmap=plt.cm.RdBu_r,\ + vmin=np.min(VAR2_MOD), vmax=np.max(VAR2_MOD)) + cbar = plt.colorbar(CS,orientation='vertical',format='%.3f') + plt.xlabel(r'longitude [-]',fontsize=18) + plt.tick_params(axis='y',which='both',bottom='on',top='on',labelleft='off') + xlim(( max(np.min(LON_MOD[:,:]),np.min(LON_TOY[:,:])), min(np.max(LON_MOD[:,:]),np.max(LON_TOY[:,:])) )) + ylim(( max(np.min(LAT_MOD[:,:]),np.min(LAT_TOY[:,:])), min(np.max(LAT_MOD[:,:]),np.max(LAT_TOY[:,:])) )) + + #------------------------ + plt.savefig(curdir_path+VAR1+"_"+VAR2+"/"+VAR1+"_"+VAR2+"_MOD_TOY_T"+str(ind_time)+".pdf") + plt.savefig(curdir_path+VAR1+"_"+VAR2+"/"+VAR1+"_"+VAR2+"_MOD_TOY_T"+str(ind_time)+".png") + plt.show() + plt.close() +print '==============================================' diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/A_RUN_MNH_TOY/run_mesonh_xyz b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/A_RUN_MNH_TOY/run_mesonh_xyz new file mode 100755 index 0000000000000000000000000000000000000000..ff4c6de9b35a8852fb0ef4f5acd805bfa60286be --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/A_RUN_MNH_TOY/run_mesonh_xyz @@ -0,0 +1,26 @@ +#!/bin/bash + +echo '--------------------------------------' +echo '-- run Meso-NH coupling ' +echo '--------------------------------------' + +export PATH_EXETOY=${SRC_MESONH}/src/LIB/toy_v1-0/ + +#~~~~~ OCEAN OR WAVE +export TYPE_TOY='WAVE' + +#~~~~~ MESONH +ln -sf ../1_INPUT_MNH/IROISE_5KM.??? . +ln -sf ../1_INPUT_MNH/IROISE_5KM_201109_0?_??.??? . +cp ../1_INPUT_MNH/rstrt_MNH.nc rst_A.nc +ln -sf ../1_INPUT_MNH/EXSEG1.nam_${TYPE_TOY} EXSEG1.nam + +#~~~~~ TOY +ln -sf ../2_INPUT_TOY/grid_toy_model.nc . +cp ../2_INPUT_TOY/rstrt_TOY.nc rst_T.nc +ln -sf ../2_INPUT_TOY/TOYNAMELIST.nam_${TYPE_TOY} TOYNAMELIST.nam + +#~~~~~ OASIS +ln -fs ../3_INPUT_OASIS/namcouple_${TYPE_TOY} namcouple + +time Mpirun -np 1 MESONH${XYZ} : -np 1 $PATH_EXETOY/toy_model diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/A_RUN_MNH_TOY/run_plot b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/A_RUN_MNH_TOY/run_plot new file mode 100755 index 0000000000000000000000000000000000000000..77081ee33a84ef4a8234bde522328c7f34af6174 --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/A_RUN_MNH_TOY/run_plot @@ -0,0 +1,11 @@ +#!/bin/bash + +ncl plot_coupling_model_toy.ncl +#python plot_coupling_model_toy.py + +display */*0.png +display */*1.png +display */*2.png +display */*3.png +display */*4.png + diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/Makefile b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..b7b81c49d2c1ebf2f1bcc17bdf615bae2bfdba44 --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/Makefile @@ -0,0 +1,10 @@ +all: + cd 1_INPUT_MNH/ && run_prep_mesonh_xyz + cd 2_INPUT_TOY/ && run_prep_toy + cd A_RUN_MNH_TOY/ && run_mesonh_xyz + cd A_RUN_MNH_TOY/ && run_plot +clean: + cd 1_INPUT_MNH/ && clean_prep_mesonh_xyz + cd 2_INPUT_TOY/ && clean_prep_toy + cd A_RUN_MNH_TOY/ && clean_mesonh_xyz + cd A_RUN_MNH_TOY/ && clean_plot diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/Readme b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/Readme new file mode 100644 index 0000000000000000000000000000000000000000..e292ecba8b37b4109af333f2bd67444471496d26 --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/Readme @@ -0,0 +1,82 @@ +===================================================== +===== Readme for 013_Iroise_ideal_case_coupling +===================================================== + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~ To compile Meso-NH with the coupling stuff +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The automatic compilation of Meso-NH works with +gfortran/openMPI. + +Adaptation of the Makefile for OASIS is required +if you want to use another compiler. + +----------------------------------------------------- +1. Define the environnment variables for Meso-NH +----------------------------------------------------- +VER_CDF=CDFAUTO +VER_OASIS=OASISAUTO +export CPLOASIS=1 +./configure +. ../conf/profile_mesonh + + +CDFAUTO and OASISAUTO means you want to use OASIS and +NETCDF librairies compiled with the Meso-NH package. + +----------------------------------------------------- +2. Compile the MASTER branch of Meso-NH +----------------------------------------------------- +make +make installmaster + +----------------------------------------------------- +4. To launch the coupling run +----------------------------------------------------- +Before launching the coupling run, you have to define +the environnment variable PREP_PGD_FILES. +It corresponds to the directory where the files +needed by the PGD program (ECOCLIMAP, gtopo30, SAND*, CLAY*) +are stored. You can download these files at this location: +http://mesonh.aero.obs-mip.fr/mesonh52/Download + +The toy model need the etopo2.nc file, you can dowload it there: +http://mesonh.aero.obs-mip.fr/mesonh49/Download +You have to put this file at the same location as the pgd files. + +Define the PREP_PGD_FILES environnment variable: +export PREP_PGD_FILES=/full/path/of/your/files/directory + +Then go to the coupling ktest: +cd mnh_v5-3-0/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/ + + +Launch the coupling run: +./run_013_Iroise_real_case_coupling + +NB: +--- + +~~ By default the toy represent a wave model, to change the toy + for an oceanic model, you have to modify the file: + A_RUN_MNH_TOY/run_mesonh_xyz + and put + export TYPE_TOY='OCEAN' + +~~ By default the scripts are in NCL (version installed with + the Meso-NH package). To use the python scripts, you have to change + the scripts run* where python can be used. + +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +~~~~ Tree of the KTEST 013 for the coupling +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +013_Iroise_real_case_coupling/ +~~~~ 1_INPUT_MNH/ +~~~~ 2_INPUT_TOY/ +~~~~ 3_INPUT_OASIS/ +~~~~ A_RUN_MNH_TOY/ +~~~~ Readme +~~~~ Makefile +~~~~ run_013_Iroise_real_case_coupling + diff --git a/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/run_013_Iroise_coupling b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/run_013_Iroise_coupling new file mode 100755 index 0000000000000000000000000000000000000000..3a496ea65ee68d49587c4faf8f4d17a21d3bda06 --- /dev/null +++ b/MY_RUN/KTEST/013_Iroise_ideal_case_coupling/run_013_Iroise_coupling @@ -0,0 +1,12 @@ +#!/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. + +export MONORUN="Mpirun -np 1 " +export MPIRUN="Mpirun -np 4 " + +make clean +make +