erai74c + implementation BDY dans little_nemo r85 ... pour vérif du merge des codes (key_obc)
2000-2003
clim-ORCA025_LIM-T323
r85_BDY
400
126 nemo +2 xios
curie thin nodes
Objet:implementation BDY dans little_nemo r85
passage r73 => r85 (on vire dynadv_ubs.F90 (bug UBS 1/32 1/8) et sbcblk_core.F90 (pour l'understress) de MY_SRC)
+ ajout dans la namelist de "rn_usecrt" pour gérer avec ou sans understress
Run de contrôle sur 15 jours pour retrouver erai74c => (cdo -diffv 0 errors found OK)
Merge des codes: Julien (NEMO_r4018 + MY_SRC) avec Little_nemo_r85
Reste le problème de la modif du calcul de flux de chaleur lié à emp (sbcblk_core.F90 trasbc.F90)
qui crée un bug alors qu'on devrait retrouver le même resultat en remplaçant T2m par tsurf...
- On écrase le BDY de little_NEMO par celui de NEMO_r4018
JULIEN_MY_SRC="/ccc/work/cont005/ra0542/hourdinc/sources/JULIEN_BDY/MY_SRC"
NEMO_r4018="/ccc/work/cont005/ra0542/hourdinc/sources/NEMO_r4018_base_JULIEN/NEMO/OPA_SRC"
little_NEMO_r85_BDY="/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/NEMO/OPA_SRC"
COMPDIR="/ccc/work/cont005/ra0542/hourdinc/wd/peru12_nemo/exp/bdy/compile/nemo/MY_SRC"
-------------------------------
A prendre dans MY_SRC Julien
-------------------------------
BDY: bdy_oce.F90 bdydta.F90 bdydyn.F90 bdydyn2d.F90 bdyice_lim.F90 bdyini.F90 bdytides.F90
DOM: domvvl.F90
DOM: dommsk.F90 (identique entre Little_nemo_r85 et NEMO_r4018)
dom_msk_nsa dans dom_msk QUESTCE QUE C'est???
dommsk.F90: !! dom_msk : compute land/ocean mask
dommsk.F90: !! dom_msk_nsa : update land/ocean mask when no-slip accurate option is used.
DOM: dom_oce.F90
DOM: domain.F90
DYN: dynnxt.F90 (identique entre Little_nemo_r85 et NEMO_r4018)
DYN: dynspg.F90
DYN: dynspg_flt.F90
DYN: dynspg_ts.F90
DYN: dynzdf.F90 (identique entre Little_nemo_r85 et NEMO_r4018)
DYN: dynzdf_imp.F90
LBC: lib_mpp.F90 (... to optimize the BDY and OBC communications)
SBC: sbcblk_core.F90
DYN: sshwzv.F90
TRA: traadv_ubs.F90 (identique entre Little_nemo_r85 et NEMO_r4018)
TRA: tradmp.F90 (identique entre Little_nemo_r85 et NEMO_r4018)
TRA: traqsr.F90
TRD: trdmod.F90 (identique entre Little_nemo_r85 et NEMO_r4018)
TRD: trdmod_oce.F90 (identique entre Little_nemo_r85 et NEMO_r4018)
SBC: updtide.F90
ZDF: zdftke.F90
nemogcm.F90
oce.F90
step.F90
stpctl.F90 (set the minimum value of tke) (identique entre Little_nemo_r85 et NEMO_r4018)
cd ${JULIEN_MY_SRC}
cp bdy_oce.F90 bdydta.F90 bdydyn.F90 bdydyn2d.F90 bdyice_lim.F90 bdyini.F90 bdytides.F90 domvvl.F90 dommsk.F90 dom_oce.F90 domain.F90 dynnxt.F90 dynspg.F90 dynspg_flt.F90 dynspg_ts.F90 dynzdf.F90 dynzdf_imp.F90 lib_mpp.F90 sbcblk_core.F90 sshwzv.F90 traadv_ubs.F90 tradmp.F90 traqsr.F90 trdmod.F90 trdmod_oce.F90 updtide.F90 zdftke.F90 nemogcm.F90 oce.F90 step.F90 stpctl.F90 ${COMPDIR}
-------------------------------
Ne pas prendre dans MY_SRC Julien
-------------------------------
divcur.F90 (commentaire JMM)
dynadv_ubs.F90 (shema 4eme ordre - diagnostique couteux)
dynnept.F90 (ne marche pas et doit etre enlevee)
domhgr.F90
dtatsd.F90 (separe rappel et initialisation LEVITUS)
obc_par.F90
obc_par_GOLFO36.h90
obc_par_NATL025.h90
obc_par_TROPICAL.h90
obcdta.F90
obcini.F90
obcvol.F90
par_GOLFO36.h90
par_NATL025.h90
par_TROPICAL.h90
par_oce.F90
-------------------------------
Recuperer dans NEMO_r4018
-------------------------------
SBC: sbcapr.F90 sbctide.F90 tideini.F90 sbcrnf.F90
SBC: sbc_oce.F90 (pour nn_ice_embd mais ATTENTION!! vire emps qui est utilisé dans plusieurs routines!!!!)
SBC: dynadv.F90 (identique entre Little_nemo_r85 et NEMO_r4018)
LBC: lbclnk.F90 (pour lbc_bdy_lnk)
DOM: domzgr_substitute.h90 (identique entre Little_nemo_r85 et NEMO_r4018)
cd ${NEMO_r4018}
cd SBC
cp sbcapr.F90 sbctide.F90 tideini.F90 sbcrnf.F90 sbc_oce.F90 ${COMPDIR}
cd ../LBC
cp lbclnk.F90 ${COMPDIR}
cd ../DOM
cp domzgr_substitute.h90 ${COMPDIR}
-------------------------------
N'existe pas dans Little_nemo_r85 et NEMO_r4018 et pas forcement utile???
-------------------------------
flxish.F90
!!==========================================================================
!! *** MODULE flxish ***
!! add net heat and fresh water flux from ice shelf melting
!! into the adjacent ocean using the parameterisation by
!! Beckmann and Goosse (2003), "A parameterization of ice shelf-ocean
!! interaction for climate models", Ocean Modelling 5(2003) 157-170.
!! (hereafter BG)
!!==========================================================================
limdmp_2.F90
!!======================================================================
!! *** MODULE limdmp_2 ***
!! LIM-2 ice model : restoring Ice thickness and Fraction leads
!!======================================================================
limsbc_2.F90
!!======================================================================
!! *** MODULE limsbc_2 ***
!! LIM-2 : updates the fluxes at the ocean surface with ice-ocean fluxes
!!======================================================================
-------------------------------
Doublons
-------------------------------
nemogcm.F90.jc
step.F90.jc
-------------------------------
gmake: *** No rule to make target `asmbkg.o', needed by `nemogcm.o'. Stop.
cd ${NEMO_r4018}/ASM; cp asmbkg.F90 ${COMPDIR}
-------------------------------
gmake: *** No rule to make target `icbini.o', needed by `nemogcm.o'. Stop.
new features in nemo_v3_5_beta: ICB: iceberg floats (Bigg et al 1997, Martin and Adcroft 2010)
cd ${NEMO_r4018}; cp -r ICB ${little_NEMO_r85_BDY}
-------------------------------
gmake: *** No rule to make target `cyclone.o', needed by `sbcblk_core.o'. Stop.
cd ${NEMO_r4018}/SBC; cp cyclone.F90 ${COMPDIR}
-------------------------------
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/solmat.f90(232): error #6285: There is no matching specific subroutine for this generic subroutine call. [LBC_LNK_E]
CALL lbc_lnk_e( gcp (:,:,1), c_solver_pt, 1. ) ! lateral boundary conditions
dans LBC/lbclnk.F90:
INTERFACE lbc_lnk_e
MODULE PROCEDURE mpp_lnk_2d_e
END INTERFACE
dans LBC/lib_mpp.F90:
SUBROUTINE mpp_lnk_2d_e( pt2d, cd_type, psgn, jpri, jprj )
incohérent avec le nombre d'arguments dans l'appel dans solmat.F90.
=> On récupère tout le répertoire SOL de NEMO_r4018 qui n'a visiblement changé que ce passage d'arguments dans toutes ses routines.
rm -rf ${little_NEMO_r85_BDY}/SOL ; cp -r ${NEMO_r4018}/SOL ${little_NEMO_r85_BDY}
-------------------------------
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/closea.f90(248): error #6911: The syntax of this substring is invalid. [EMPS]
emps(:,:) = emps(:,:) + zfwf(jc) / surf(jpncs+1)
!! *** MODULE closea ***
!! Closed Seas : specific treatments associated with closed seas
cp ${NEMO_r4018}/DOM/closea.F90 ${COMPDIR}
-------------------------------
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/closea.f90(24): error #6580: Name in only-list does not exist. [DDPDD]
USE lib_fortran, ONLY: glob_sum, DDPDD
cp ${NEMO_r4018}/lib_fortran.F90 ${COMPDIR}
-------------------------------
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/sbcana.f90(123): error #6911: The syntax of this substring is invalid. [EMPS]
emps(:,:) = rn_emp0
!! *** MODULE sbcana ***
!! Ocean forcing: analytical momentum, heat and freshwater forcings
cp ${NEMO_r4018}/SBC/sbcana.F90 ${COMPDIR}
-------------------------------
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/domzgr.f90(524): error #6404: This name does not have a type, and must have an explicit type. [NCLOSEA]
IF( nclosea == 0 ) THEN ! NO closed seas or lakes !
cp ${NEMO_r4018}/DOM/domzgr.F90 ${COMPDIR}
!! 3.4 ! 2012-08 (J. Siddorn) added Siddorn and Furner stretching function
-------------------------------
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/traqsr.f90(182): error #6404: This name does not have a type, and must have an explicit type. [R1_RAU0_RCP]
qsr_hc(:,:,jk) = r1_rau0_rcp * ( etot3(:,:,jk) - etot3(:,:,jk+1) )
!! *** MODULE traqsr ***
!! Ocean physics: solar radiation penetration in the top ocean levels
r1_rau0_rcp définit dans phycst.F90
cp ${NEMO_r4018}/DOM/phycst.F90 ${COMPDIR}
!! *** MODULE phycst ***
!! Definition of of both ocean and ice parameters used in the code
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/trabbc.f90(178): error #6404: This name does not have a type, and must have an explicit type. [RO0CPR]
qgh_trd0(:,:) = ro0cpr * rn_geoflx_cst
en fait dans NEMO_r4018, ro0cpr est renommé r1_rau0_rcp (= 1. / ( rau0 * rcp ))
On détruit donc traqsr.f90 récupéré dans MY_SRC de JULLIEN qui permettait d'être cohérent avec le phycst.F90 de NEMO_r4018 (avec r1_rau0_rcp) et on garde le traqsr.f90 de little_NEMO_r85 qui est cohérent avec le phycst.F90 de little_NEMO_r85 (avec ro0cpr)
rm -f ${COMPDIR}/traqsr.f90 ${COMPDIR}/phycst.F90
-------------------------------
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/sbcflx.f90(185): error #6911: The syntax of this substring is invalid. [EMPS]
emps(:,:) = emp (:,:) ! Initialization of emps (needed when no ice model)
cp ${NEMO_r4018}/SBC/sbcflx.F90 ${COMPDIR}
-------------------------------
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/sbcblk_clio.f90(379): error #6911: The syntax of this substring is invalid. [EMPS]
emps(:,:) = emp(:,:)
finalement on vire toutes les routines qui font appel à emps à cause du remplacement de la routine sbc_oce.F90 pour avoir le mot clé nn_ice_embd. On le rajoutera quand nécessaire
rm -f closea.F90 lib_fortran.F90 sbcana.F90 sbcflx.F90 sbc_oce.F90
-------------------------------
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/zdftke.f90(89): error #6401: The attributes of this name conflict with those made accessible by a USE statement. [AVT_K]
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/zdftke.f90(89): error #6401: The attributes of this name conflict with those made accessible by a USE statement. [AVM_K]
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/zdftke.f90(90): error #6401: The attributes of this name conflict with those made accessible by a USE statement. [AVMU_K]
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/zdftke.f90(90): error #6401: The attributes of this name conflict with those made accessible by a USE statement. [AVMV_K]
REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: avt_k , avm_k ! not enhanced Kz
REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: avt_k , avm_k ! not enhanced Kz
REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: avmu_k, avmv_k ! not enhanced Kz
REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: avmu_k, avmv_k ! not enhanced Kz
avt_k avm_k avmu_k avmv_k sont définit dans zdf_oce.F90 dans little_NEMO_r85 et pas dans celui de NEMO_r4018
C'est la seule différence dans zdf_oce.F90 entre les 2 versions NEMO. On récupère donc celui de NEMO_r4018 dans little_NEMO_r85
cp ${NEMO_r4018}/ZDF/zdf_oce.F90 ${COMPDIR}
-------------------------------
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/sbcrnf.f90(153): error #6404: This name does not have a type, and must have an explicit type. [R1_RAU0]
rnf_tsc(:,:,jp_tem) = ( sf_t_rnf(1)%fnow(:,:,1) ) * rnf(:,:) * r1_rau0
La version récupérée dans NEMO_r4018 a besoin de la version ad'hoc de phycst.F90 pour les définitions de constantes.
On conserve la version de phycst.F90 de little_NEMO_r85 et on ajoute les définitions nécessaires pour les routines récupérées pour BDY.
cp ${little_NEMO_r85_BDY}/DOM/phycst.F90 ${COMPDIR}
ajout de r1_rau0:
diff phycst.F90 /ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/NEMO/OPA_SRC/DOM/phycst.F90
56d55
< REAL(wp), PUBLIC :: r1_rau0 !: = 1. / rau0 [m3/kg]
116d114
< r1_rau0 = 1._wp / rau0
158d155
< WRITE(numout,*) ' 1. / rau0 r1_rau0 = ', r1_rau0, ' m^3/kg'
-------------------------------
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/icbini.f90(350): error #6404: This name does not have a type, and must have an explicit type. [LN_ICEBERGS]
NAMELIST/namberg/ ln_icebergs , ln_bergdia , nn_sample_rate , rn_initial_mass ,
cp ${little_NEMO_r85_BDY}/SBC/sbc_oce.F90 ${COMPDIR}
On ajoute la définition de ln_icebergs et nn_ice_embd
[hourdinc@curie51:/ccc/work/cont005/ra0542/hourdinc/wd/peru12_nemo/exp/bdy/compile/nemo/MY_SRC] diff /ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90 .
42c42,47
< INTEGER , PUBLIC :: nn_ice = 0 !: flag on ice in the surface boundary condition (=0/1/2/3)
---
> LOGICAL , PUBLIC :: ln_icebergs = .FALSE. !: Icebergs
> INTEGER , PUBLIC :: nn_ice = 0 !: flag for ice in the surface boundary condition (=0/1/2/3)
> INTEGER , PUBLIC :: nn_ice_embd = 0 !: flag for levitating/embedding sea-ice in the ocean
> ! !: =0 levitating ice (no mass exchange, concentration/dilution effect)
> ! !: =1 levitating ice with mass and salt exchange but no presure effect
> ! !: =2 embedded sea-ice (full salt and mass exchanges and pressure)
-------------------------------
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/sbcblk_core.f90(211): error #6911: The syntax of this substring is invalid. [SFX]
sfx(:,:) = 0._wp ! salt flux; zero unless ice is present (computed in limsbc(_2).F90)
On ajoute sfx qui est déclaré dans sbc_oce.F90
[hourdinc@curie51:/ccc/work/cont005/ra0542/hourdinc/wd/peru12_nemo/exp/bdy/compile/nemo/MY_SRC] diff /ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90 .
64a70
> REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sfx , sfx_b !: salt flux [PSU/m2/s]
110a117
> & sfx (jpi,jpj) , &
-------------------------------
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/sbcblk_core.f90(405): error #6404: This name does not have a type, and must have an explicit type. [CPIC]
& * ( MIN( sf(jp_tair)%fnow(:,:,1), rt0_snow ) - rt0 ) * cpic
On ajoute cpic dans le phycst.F90 de little_NEMO_r85 aui est dans MY_SRC pour le cas ou ni defined key_lim3 ni defined key_cice
[hourdinc@curie51:/ccc/work/cont005/ra0542/hourdinc/wd/peru12_nemo/exp/bdy/compile/nemo/MY_SRC] diff /ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/NEMO/OPA_SRC/DOM/phycst.F90 .
72a74
> REAL(wp), PUBLIC :: cpic !: = rcpic / rhoic (specific heat for ice) [J/Kg/K]
168a173
> cpic = rcpic / rhoic ! specific heat for ice [J/Kg/K]
-------------------------------
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/sbcmod.f90(312): error #6404: This name does not have a type, and must have an explicit type. [NCLOSEA]
IF( nclosea == 1 ) CALL sbc_clo( kt ) ! treatment of closed sea in the model domain
On ajoute dans MY_SRC/domain.F90:
nclosea = nn_closea
et dans MY_SRC/dom_oce.F90:
INTEGER , PUBLIC :: nn_closea = 0 !: =0 suppress closed sea/lake from the ORCA domain or not (=1)
-------------------------------
mpif90 -o nemo.exe /ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/obj/nemo.o -L/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/lib -l__fcm__nemo -L/usr/local/netcdf-4.2_hdf5_parallel/lib -L/usr/local/hdf5-1.8.9_parallel/lib -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lhdf5 -lz -lcurl -lstdc++ -L /ccc/work/cont005/ra0542/hourdinc/sources/XIOS_r416/lib -lxios
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/lib/lib__fcm__nemo.a(step.o): In function `step_mp_stp_':
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/step.f90:(.text+0xc32): undefined reference to `asm_bkg_wri_'
step.F90 appelle asm_bkg_wri qui est définit dans ASM/asmtrj.F90 dans la version little_NEMO_r85 et dans ASM/asmbkg.F90 dans la version NEMO_r4018.
!! *** MODULE asmtrj -> asmbkg ***
!! Assimilation trajectory interface: Write to file the background state and the model state trajectory
On recupere tous le repertoire ASM de NEMO_r4018 dans little_NEMO_r85 (inutile pour nous)
rm -rf ${little_NEMO_r85_BDY}/ASM ; cp -r ${NEMO_r4018}/ASM ${little_NEMO_r85_BDY}
du coup on peut détruire MY_SRC/asmbkg.F90
rm -f ${COMPDIR}/asmbkg.F90
-------------------------------
Toujours le même problème:
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/step.f90:(.text+0xc32): undefined reference to `asm_bkg_wri_'
cp ${little_NEMO_r85_BDY}/step_oce.F90 ${COMPDIR}
On ajoute la ligne
USE asmbkg
pour que step.F90 appelle step_oce.F90 qui appelle la nouvelle routine ASM asmbkg.F90 qui elle contient la définition de asm_bkg_wri
-------------------------------
a la compilation avec -g et -traceback:
-------------------------------
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/step.f90:209: undefined reference to `bdy_tra_dmp_'
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/step.f90:251: undefined reference to `bdy_dyn3d_dmp_'
On ajoute les lignes
USE bdytra ! bdy cond. for tracers (bdy_tra routine)
USE bdydyn3d ! bdy cond. for baroclinic vel. (bdy_dyn3d routine)
pour que step.F90 appelle step_oce.F90 qui appelle les routines BDY bdytra.F90 et bdydyn3d.F90 qui contiennent les définitions de bdy_tra_dmp et bdy_dyn3d_dmp
-------------------------------
=== : E R R O R
===========
iom_open ~~~
File ./snow_y2000.nc* not found
on remet dans la version sbcblk_core.F90 de Julien les lignes de la version de little_NEMO_r85 qui permettent de ne pas prendre en compte les précips solides (neige et grêle) dans les forçages.
Seb avait du virer tout ce qui était de l'ordre des precips solides contre l'avis de maître Gurvan. Mais à priori sans trop d'effet en forcé sur les tropiques.
! do we use snow information?
jfld = jfld - COUNT( (/ nn_ice == 0 /) )
-------------------------------
Mais plante plus loin: "segmentation fault" ligne 403 de sbcblk_core.f90 dans la routine blk_oce_core car utilise snow dans le calcul de qns
forrtl: severe (174): SIGSEGV, segmentation fault occurred
Image PC Routine Line Source
nemo.exe 0000000000AAB75A sbcblk_core_mp_bl 403 sbcblk_core.f90
qns(:,:) = zqlw(:,:) - zqsb(:,:) - zqla(:,:) & ! Downward Non Solar flux
& - sf(jp_snow)%fnow(:,:,1) * rn_pfac * lfus & ! remove latent melting heat for solid precip
& - zevap(:,:) * pst(:,:) * rcp & ! remove evap heat content at SST
& + ( sf(jp_prec)%fnow(:,:,1) - sf(jp_snow)%fnow(:,:,1) ) * rn_pfac & ! add liquid precip heat content at Tair
& * ( sf(jp_tair)%fnow(:,:,1) - rt0 ) * rcp &
& + sf(jp_snow)%fnow(:,:,1) * rn_pfac & ! add solid precip heat content at min(Tair,Tsnow)
& * ( MIN( sf(jp_tair)%fnow(:,:,1), rt0_snow ) - rt0 ) * cpic
! Chris: On enleve tout ce qui fait appel a snow (precip solide neige ou grele)
qns(:,:) = zqlw(:,:) - zqsb(:,:) - zqla(:,:) & ! Downward Non Solar flux
& - zevap(:,:) * pst(:,:) * rcp & ! remove evap heat content at SST
& + sf(jp_prec)%fnow(:,:,1) * rn_pfac & ! add liquid precip heat content at Tair
& * ( sf(jp_tair)%fnow(:,:,1) - rt0 ) * rcp
réécriture dans la 3.5 du transport du flux de chaleur lié à evaporation/condensation.
dans la 3.4:
qns(:,:) = zqlw(:,:) - zqsb(:,:) - zqla(:,:) ! Downward Non Solar flux
Il faut donc prendre le pendant de cette formulation dans trasbc.F90
cp ${NEMO_r4018}/TRA/trasbc.F90 ${COMPDIR}
-------------------------------
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/trasbc.f90(198): error #6404: This name does not have a type, and must have an explicit type. [R1_RAU0_RCP]
sbc_tsc(ji,jj,jp_tem) = r1_rau0_rcp * qns(ji,jj) ! non solar heat flux
On ajoute dans MY_SRC/phycst.F90:
REAL(wp), PUBLIC :: r1_rau0_rcp !: = 1. / ( rau0 * rcp )
-------------------------------
> Error [CObjectFactory::GetObject(const StdString & id)] : In file '/ccc/work/cont005/ra0542/hourdinc/sources/XIOS/src/object_factory_impl.hpp', line 79 -> [ id = emp_x_sst, U = field ] object is not referenced !
on commente
! CALL iom_put( "emp_x_sst", emp (:,:) * tsn(:,:,1,jp_tem) ) ! c/d term on sst
! CALL iom_put( "emp_x_sss", emp (:,:) * tsn(:,:,1,jp_sal) ) ! c/d term on sss
-------------------------------
> Error [CObjectFactory::GetObject(const StdString & id)] : In file '/ccc/work/cont005/ra0542/hourdinc/sources/XIOS/src/object_factory_impl.hpp', line 79 -> [ id = qhc_oce, U = field ] object is not referenced !
On ajoute dans field_def.xml le nouveau champ qhc_oce lié à la nouvelle formulation
<field id="qhc_oce" long_name="Downward Heat Content of E-P over open ocean" unit="W/m2" />
-------------------------------
> Error [CObjectFactory::GetObject(const StdString & id)] : In file '/ccc/work/cont005/ra0542/hourdinc/sources/XIOS/src/object_factory_impl.hpp', line 79 -> [ id = tem_ldfubs, U = field ] object is not referenced !
definitions de ces champs introuvables dans tous les exemples de field_def.xml des différentes configs => on commente les CALL iom_put (sans doute des termes de la version de développement de J. Chanut)
traadv_ubs.F90:
zwx
zwy
traadv_ubs.F90:
tem_ldfubs
trdmod.F90:
tem_ldf
tem_zdf
tem_qsr
tem_qns
tem_xad
tem_yad
tem_zad
-------------------------------
FINALEMENT on teste en virant sbcblk_core.F90 et trasbc.F90 pour rester avec l'ancienne formulation sur le flux de chaleur lié à emp.
-------------------------------
Compilation avec key_bdy:
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/bdydta.f90(241): error #6627: This is an actual argument keyword name, and not a dummy argument name. [KIT]
& kit=jit, kt_offset=time_offset )
/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/CONFIG/PERU12/BLD/ppsrc/nemo/bdydta.f90(241): error #6627: This is an actual argument keyword name, and not a dummy argument name. [KT_OFFSET]
& kit=jit, kt_offset=time_offset )
cp ${NEMO_r4018}/SBC/fldread.F90 ${COMPDIR}
-------------------------------
JULIEN_MY_SRC="/ccc/work/cont005/ra0542/hourdinc/sources/JULIEN_BDY/MY_SRC"
NEMO_r4018="/ccc/work/cont005/ra0542/hourdinc/sources/NEMO_r4018_base_JULIEN/NEMO/OPA_SRC"
little_NEMO_r85_BDY="/ccc/work/cont005/ra0542/hourdinc/sources/little_NEMO_r85_BDY/NEMOGCM/NEMO/OPA_SRC"
COMPDIR="/ccc/work/cont005/ra0542/hourdinc/wd/peru12_nemo/exp/bdy/compile/nemo/MY_SRC"
-------------------------------
TODO LISTE
-------------------------------
AJOUTER ln_icebergs et nn_ice_embd dans la namelist
PENSER a virer le laplacien dynamique de la sponge!!!
dans la nameliste:
nous:
ln_sssr_bnd = .false. ! flag to bound erp term (associated with nn_sssr=2)
julien:
ln_sssr_bnd = .true. ! flag to bound erp term (associated with nn_sssr=2)
faut il modifier :
>nam_tide ! tide parameters (#ifdef key_tide)
comparer les namelistes julien et la notre pour réglage des différents paramètres.
Que fait on avec tide?
Modifs t2 ou t10 h2 ou h10?!? dans le changement de version de sbcblk_core.F90?
On vire les routines de la sponge pour OBC (dom_oce.F90 dommsk.F90 domwri.F90 dynldf_lap.F90 traldf_lap.F90)
bdy2
bdy + key_bdy (bdy coordinates, mais pas de data)
2000 (test 5days)
clim-ORCA025_LIM-T323
r85_BDY
400
126 nemo +2 xios
curie thin nodes
Objet:Run test de 5 jours avec bdy, mais seulement le fichier de coordonnées des points frontières comme info
Pas de prescription de T,S,U,V,ssh aux points frontières. Bdy lit l'état de démarrage pour imposer T et S aux frontières et mets U, V à zero.
bdy4 + obc au lieu de bdy (little_nemo r73 au lieu de r85_BDY sans impact) sans understress comme tous les runs OBC
2000 - 2008
T et S de tr12_quik_5d_20000105_grid_T_3D.nc
r73
400
126 nemo +2 xios
curie thin nodes
Objet:obc au lieu de bdy
Attention: little_nemo r73 au lieu de r85_BDY, mais à priori sans impact parce qu'il y a toujours dans MY_SRC dynadv_ubs.F90 pour la correction gamma 1/32 pour ubs et sbcblk_core.F90 pour la non prise en compte de l'understress (cf "diff erai74c/bdy" pour le passage de little_nemo r73 a r85_BDY ne changeait rien sur un run OBC
bdy4b + Correction bug free-slip dans dynadv_ubs.F90 (Nicolas Ducousso)
2000-2008
T et S de tr12_quik_5d_20000105_grid_T_3D.nc
r85_BDY
400
126 nemo +2 xios
curie thin nodes
Objet:Correction bug free-slip (Nicolas Ducousso)
on remet le module.sh qui ne fonctionnait plus depuis la maintenance du 25 Mars 2014. Pour que les commandes modules fonctionnent dans les scripts, on remplace sh par bash.
Nouvelle maintenance : 17 Juin 2014 . Même en remettant l'ancien environnement avec "module purge; module load bullxscs/4r2u2" on ne parvient pas à recréer le même executable nemo de bdy4b au bit près. En revanche, je refais tourner le run bdy4b recompilé sur 1 jours, et les 216 pdt du fichiers solver.stat sont identiques.
Après cette vérif, on recompile nemo avec la correction de bug de Nicolas Ducousso et on relance le même run que bdy4b. http://forge.ipsl.jussieu.fr/nemo/ticket/1339
The bugfix allows to recover a free-slip character for UBS scheme close to the boundary as illustrated in the joint movie cmp_evol_C4_vs_modified_UBS.mpeg.
n relance le même run que bdy4b.
bdy4c + Correction bug dynkeg et dynvor (Nicolas Ducousso) - dynvor déjà testée dans erai70e
2000-2008
T et S de tr12_quik_5d_20000105_grid_T_3D.nc
r85_BDY
400
126 nemo +2 xios
curie thin nodes
Objet:Correction bug dynkeg et dynvor (Nicolas Ducousso)
================================================================================
===== diff bdy4c / bdy4d =====
================================================================================
--------------------------------------------------------------------------------
diff -b -w -r -x .svn bdy4c/compile/nemo/MY_SRC bdy4d/compile/nemo/MY_SRC
--------------------------------------------------------------------------------
Only in bdy4d/compile/nemo/MY_SRC: dynkeg.F90
Only in bdy4d/compile/nemo/MY_SRC: dynvor.F90
Mise à plat + Convergence complète trop12 + bdy OK
run
base
periode
restart
little_nemo
pdt
cpu
machine
proc
time
p12n_bdy_tr12n_quik
Frontières (à 5 jours) et phasage complet avec le run tr12_quik
2000-2008
T et S de tr12_quik_5d_20000105_grid_T_3D.nc
r86
400
126 nemo +2 xios
curie thin nodes
Objet:Test efficacité bdy (=> tout comme tr12_quik)
Réponse:Sur les diags actuels, bdy semble bien faire son travail... diag
Version little_NEMO : tr12_quik r85 (donc sans les corrections de Nicolas Ducousso sur dynadv_ubs, dynkeg et dynvor)
Version little_NEMO : on ramène toutes les routines différentes de little_NEMO_r85_BDY dans MY_SRC => retour à little_NEMO_r85
Version little_NEMO : test sur 2 x 1 jours des 2 versions. Même solver.stat
Version little_NEMO : r86: commit Print de rn_usecrt dans ocean.output : SBC/sbcblk_core.F90
cpp : on vire key_dtatem key_dtasal obsolete de cpp_PERU12
cpp : on vire key_traldf_c2d key_dynldf_c2d car on est en UBS
cpp : on ne prend pas dans cpp_TROP12 key_ldfslp (car UBS) ni key_zdftmx (tide avec mask pour indonésie uniquement) => pas besoin des fichiers K1 M2...
Forçages: on enlève le cycle diurne pour coller à trop12
Forçages: on prend les fichiers erai et quikscat de Seb
Forçages: on prend les fichiers de poids de PERU12 (bicubic pour les vents et bilin pour le reste comme dans trop12)
2 bands au lieu de RGB
runoffs: on prend les fichiers de Seb
Chlorophyll: on prend les fichiers de Seb (mais pas utilisé avec le 2 bands)
bathy: TROP12_NEST_PERU12 + extraction de x=1-361 sur 382 + on bouche la mer des caraibes (idem a l'extraction de PERU12 sur la bathy de trop12)
coordinates: TROP12 extraction de PERU12 (idem au coordinates de Stephane)
le fichier restart de tr12_quik (tr12_eranocrt 19991231 n'existe plus) => T et S de tr12_quik_5d_20000105_grid_T_3D.nc
Ajout des sorties mensuelles
p12n_bdy_tr12n_quik_ND
p12n_bdy_tr12n_quik + 3 bug fix Nicolas Ducousso + 1 bug fix GM (no fmask)
2000-2008
T et S de tr12_quik_5d_20000105_grid_T_3D.nc
r86
400
126 nemo +2 xios
curie thin nodes
Objet:3 bug fix Nicolas Ducousso + 1 bug fix GM (no fmask)
Réponse:
Tous ces bugs fix n'affectent pas beaucoup notre solution...
================================================================================
===== diff p12n_bdy_tr12n_quik / p12n_bdy_tr12n_quik_ND =====
================================================================================
--------------------------------------------------------------------------------
diff -b -w -r -x .svn p12n_bdy_tr12n_quik/compile/nemo/MY_SRC p12n_bdy_tr12n_quik_ND/compile/nemo/MY_SRC
--------------------------------------------------------------------------------
Only in p12n_bdy_tr12n_quik_ND/compile/nemo/MY_SRC: dynadv_ubs.F90
Only in p12n_bdy_tr12n_quik_ND/compile/nemo/MY_SRC: dynkeg.F90
Only in p12n_bdy_tr12n_quik_ND/compile/nemo/MY_SRC: dynvor.F90
p12n_bdy_tr12n_quik_blp1
p12n_bdy_tr12n_quik_ND + UBS dyn => Vector Form + Bilap -2.5e10
2000-2008
T et S de tr12_quik_5d_20000105_grid_T_3D.nc
r86
400
126 nemo +2 xios
curie thin nodes
Objet:Rendre plus visqueux avec Vector Form + bilap sur la dyn au lieu de UBS pour diminuer la var_ssh
Réponse:
En rendant le milieu plus visqueux (surtout là où les courants sont faibles), avec vector from + bilap au lieu de UBS, on réduit bien la var de ssh, et on refroidit l'upwelling le long des côtes Chiliennes:
Version little_NEMO r86 +
--------------------------------------------------------------------------------
diff -b -w p12n_bdy_tr12n_quik_ND/param_inputs/namelist.base.oce p12n_bdy_tr12n_quik_blp1/param_inputs/namelist.base.oce
--------------------------------------------------------------------------------
637c637
< ln_dynadv_vec = .false. ! vector form (T) or flux form (F)
---
> ln_dynadv_vec = .true. ! vector form (T) or flux form (F)
639c639
< ln_dynadv_ubs = .true. ! flux form - 3rd order UBS scheme
---
> ln_dynadv_ubs = .false. ! flux form - 3rd order UBS scheme
672c672
< ln_dynldf_bilap = .false. ! bilaplacian operator
---
> ln_dynldf_bilap = .true. ! bilaplacian operator
680c680
< rn_ahm_0_blp = -1.8e11 ! horizontal bilaplacian eddy viscosity [m4/s]
---
> rn_ahm_0_blp = -2.5e10 ! horizontal bilaplacian eddy viscosity [m4/s]
run tiré de tr025n_fm02: tr025n_fm00 + fct + msc + ln_traldf_blp + nn_aht_ijk_t=31
nouveau schéma d'advection sur les traceurs: fct au lieu de tvd
p12n_bdy_soda2
p12n_bdy_tr12_quik + Frontières SODA2 5jours
2000-2008
T et S de tr12_quik_5d_20000105_grid_T_3D.nc
r86
400
126 nemo +2 xios
curie thin nodes
Objet:sensibilité aux fontières (diff entre bdy tr12_quik et bdy soda2)
Réponse:les meilleurs resultats du run bdy tr12_quik par rapport au run bdy soda2 peut s'expliquer par le fait que les bdy tr12_quik sont générées par le même modèle que le modèle utilisé. Il y a une cohérence entre les 2. Ca peut inciter à faire du AGRIF plutôt que du BDY.
Objet:Responsabilité des partial steps sue les pb d'EKE trop fort à la côte
Réponse:
Historique:
Pour passer de partial steps en steps, il faut fournir un fichier bathy en level et non en meter.
On relit donc le mbathy du mesh_mask de p12n_bdy_soda2_B qu'on écrit dans un fichier bathy_level.nc
Objet:Responsabilité de la pente sur les pb d'EKE trop fort à la côte
Réponse:
Historique:
la bathy de François est seuillée à -25m. On multiplie donc cette bathy (ETOPO1_NESTPERU_R12_mask_Caribbean_361x505_rfact.nc)
par l'ancien mesh_mask (mesh_mask_peru12.L75_from_trop12.nc) pour recréer une bathy lissée avec exactement la même côte
que l'expérience précédente (ETOPO1_NESTPERU_R12_mask_Caribbean_361x505_rfact_mask.nc)