[[PageOutline]] Last edited [[Timestamp]] [[BR]] '''Author''' : S. Masson '''ticket''' : #974 '''Branch''' : [https://forge.ipsl.jussieu.fr/nemo/browser/branches/2012/dev_r3406_LOCEAN4_XIOS ] svn+ssh://rblod@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/2012/dev_r3406_LOCEAN4_XIOS ---- === Description === This is a brand new code so old one (XMLF90 and XML_IOSERVER) can be removed.[[BR]] XIOS imported from http://forge.ipsl.jussieu.fr/ioserver/svn/XIOS/trunk (rev 348) and added under EXTERNAL with the following commands: NOTE it was update to revision 353 on july 9 {{{ #!/bin/bash prjname=nemo userlog=rblod forge=forge.ipsl.jussieu.fr rootsrc=${userlog}@${forge}/ipsl/forge/projets/${prjname}/svn #========================== # create XIOS vendor #========================== # vendor=XIOS # # get it: svn export http://forge.ipsl.jussieu.fr/ioserver/svn/XIOS/trunk XIOS_SRC # stupid untar cd XIOS_SRC for tarname in tools/archive/*.tar.gz; do tar -xzf "$tarname"; done rm -rf tools/archive/* rm -rf tools/FCM cd - # import it in vendors svn import XIOS_SRC svn+ssh://${rootsrc}/vendors/${vendor}/current -m "importing initial ${vendor} vendor drop" revname=r_348 svn copy svn+ssh://${rootsrc}/vendors/${vendor}/current svn+ssh://${rootsrc}/vendors/${vendor}/${revname} -m "tagging ${vendor} ${revname}" rm -rf XIOS_SRC # #========================== # import in external #========================== #svn copy svn+ssh://rblod@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/vendors/XIOS_r348 svn+ssh://rblod@forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/2012/dev_r3406_LOCEAN4_XIOS/NEMOGCM/EXTERNAL/XIOS -m "Import XIOS in dev_r3406_LOCEAN4_XIOS" }}} === NEMO code changes === Very few, iom.F90 totally modified, nemogcm.F90 for init and finalize, diawri.F90 for new variables, step.F90 for iom_setkt, sbcmod.F90[[BR]] svn diff OPA_SRC/step.F90 OPA_SRC/nemogcm.F90 OPA_SRC/SBC/sbcmod.F90 OPA_SRC/DIA/diawri.F90 {{{ Index: OPA_SRC/step.F90 =================================================================== --- OPA_SRC/step.F90 (revision 3410) +++ OPA_SRC/step.F90 (working copy) @@ -88,7 +88,7 @@ #endif indic = 0 ! reset to no error condition IF( kstp /= nit000 ) CALL day( kstp ) ! Calendar (day was already called at nit000 in day_init) - CALL iom_setkt( kstp ) ! say to iom that we are at time step kstp + CALL iom_setkt( kstp - nit000 + 1 ) ! say to iom that we are at time step kstp !>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ! Update data, open boundaries, surface boundary condition (including sea-ice) Index: OPA_SRC/nemogcm.F90 =================================================================== --- OPA_SRC/nemogcm.F90 (revision 3410) +++ OPA_SRC/nemogcm.F90 (working copy) @@ -72,7 +72,7 @@ #endif USE lib_mpp ! distributed memory computing #if defined key_iomput - USE mod_ioclient + USE xios #endif IMPLICIT NONE @@ -183,8 +183,13 @@ CALL nemo_closefile #if defined key_oasis3 || defined key_oasis4 CALL cpl_prism_finalize ! end coupling and mpp communications with OASIS -#else +# if defined key_iomput + IF( Agrif_Root() ) THEN + CALL xios_finalize ! end mpp communications + ENDIF +# else IF( lk_mpp ) CALL mppstop ! end mpp communications +# endif #endif ! END SUBROUTINE nemo_gcm @@ -218,9 +223,11 @@ #if defined key_iomput IF( Agrif_Root() ) THEN # if defined key_oasis3 || defined key_oasis4 - CALL cpl_prism_init( ilocal_comm ) ! nemo local communicator given by oasis + CALL cpl_prism_init( ilocal_comm ) ! nemo local communicator given by oasis + CALL xios_initialize( "oceanx",local_comm=ilocal_comm ) +# else + CALL xios_initialize( "nemo",return_comm=ilocal_comm ) # endif - CALL init_ioclient( ilocal_comm ) ! exchange io_server nemo local communicator with the io_server ENDIF narea = mynode( cltxt, numnam, nstop, ilocal_comm ) ! Nodes selection #else Index: OPA_SRC/SBC/sbcmod.F90 =================================================================== --- OPA_SRC/SBC/sbcmod.F90 (revision 3410) +++ OPA_SRC/SBC/sbcmod.F90 (working copy) @@ -240,7 +240,7 @@ ! ! forcing field computation ! ! ! ---------------------------------------- ! - CALL iom_setkt( kt + nn_fsbc - 1 ) ! in sbc, iom_put is called every nn_fsbc time step +! CALL iom_setkt( kt + nn_fsbc - 1 ) ! in sbc, iom_put is called every nn_fsbc time step ! IF( ln_apr_dyn ) CALL sbc_apr( kt ) ! atmospheric pressure provided at kt+0.5*nn_fsbc ! (caution called before sbc_ssm) @@ -343,7 +343,7 @@ IF( nn_ice > 0 ) CALL iom_put( "ice_cover", fr_i ) ! ice fraction ENDIF ! - CALL iom_setkt( kt ) ! iom_put outside of sbc is called at every time step +! CALL iom_setkt( kt ) ! iom_put outside of sbc is called at every time step ! CALL iom_put( "utau", utau ) ! i-wind stress (stress can be updated at CALL iom_put( "vtau", vtau ) ! j-wind stress each time step in sea-ice) Index: OPA_SRC/DIA/diawri.F90 =================================================================== --- OPA_SRC/DIA/diawri.F90 (revision 3410) +++ OPA_SRC/DIA/diawri.F90 (working copy) @@ -144,7 +144,9 @@ CALL iom_put( "sss" , tsn(:,:,1,jp_sal) ) ! sea surface salinity CALL iom_put( "sss2" , tsn(:,:,1,jp_sal) * tsn(:,:,1,jp_sal) ) ! square of sea surface salinity CALL iom_put( "uoce" , un ) ! i-current + CALL iom_put( "suoce" , un(:,:,1) ) ! surface i-current CALL iom_put( "voce" , vn ) ! j-current + CALL iom_put( "svoce" , vn(:,:,1) ) ! surface j-current CALL iom_put( "avt" , avt ) ! T vert. eddy diff. coef. CALL iom_put( "avm" , avmu ) ! T vert. eddy visc. coef. }}} === Compilation === The new code is located under EXTERNAL/XIOS. The old one has none been removed yet but is useless.[[BR]] * netcdf has to be version 4 build with hdf5 support (hdf5 installed too) * variables for XIOS have been added to arch files. For now, just ARCH/arch-X64_CURIE.fcm. I didn't try to mix options for NEMO and XIOS so there is duplication * XIOS is compiled to generate a library under XIOS/lib and a binary under XIOS/bin. So makenemo has few modifications, just 3 lines to before NEMO compilations. For this part -j option is forced to 1 * TOOLS/COMPILE/bldxag.cfg has been modified to include correct path to XIOS * clean option doesn't include cleaning of XIOS, since it takes a while * IOIPSL is still compiled because of sn4 stuff I didn't remove Note it can't be compiled without key_mpp_mpi, also OASIS case is not treated correctly at compilation. I'm not sure this branch can be compiled with AGRIF or without key_iomput === Execution === * file xmlio_server.def is not needed anymore, informations are now included at the end of iodef.xml * iodef.xml can be split into szveral files using include files, here we define domain.xml and field.xml wchi shouldn't need to be changed, unless we had a new variables or new zoom ---- === Testing === Testing could consider (where appropriate) other configurations in addition to NVTK]. ||NVTK Tested||!'''YES/NO!'''|| ||Other model configurations||!'''YES/NO!'''|| ||Processor configurations tested||[ Enter processor configs tested here ]|| ||If adding new functionality please confirm that the [[BR]]New code doesn't change results when it is switched off [[BR]]and !''works!'' when switched on||!'''YES/NO/NA!'''|| (Answering UNSURE is likely to generate further questions from reviewers.) 'Please add further summary details here' * Processor configurations tested * etc---- === Bit Comparability === ||Does this change preserve answers in your tested standard configurations (to the last bit) ?||!'''YES/NO !'''|| ||Does this change bit compare across various processor configurations. (1xM, Nx1 and MxN are recommended)||!'''YES/NO!'''|| ||Is this change expected to preserve answers in all possible model configurations?||!'''YES/NO!'''|| ||Is this change expected to preserve all diagnostics? [[BR]]!,,!''Preserving answers in model runs does not necessarily imply preserved diagnostics. !''||!'''YES/NO!'''|| If you answered !'''NO!''' to any of the above, please provide further details: * Which routine(s) are causing the difference? * Why the changes are not protected by a logical switch or new section-version * What is needed to achieve regression with the previous model release (e.g. a regression branch, hand-edits etc). If this is not possible, explain why not. * What do you expect to see occur in the test harness jobs? * Which diagnostics have you altered and why have they changed?Please add details here........ ---- === System Changes === ||Does your change alter namelists?||!'''YES/NO !'''|| ||Does your change require a change in compiler options?||!'''YES/NO !'''|| If any of these apply, please document the changes required here....... ---- === Resources === !''Please !''summarize!'' any changes in runtime or memory use caused by this change......!'' ---- === IPR issues === ||Has the code been wholly (100%) produced by NEMO developers staff working exclusively on NEMO?||!'''YES/ NO !'''|| If No: * Identify the collaboration agreement details * Ensure the code routine header is in accordance with the agreement, (Copyright/Redistribution etc).Add further details here if required..........