= Getting and compiling DYNAMICO = == Getting DYNAMICO == DYNAMICO is licensed under the [http://www.cecill.info/index.en.html CeCILL] open source license and should be considered beta-stage code. Selected releases are available for download : * [attachment:codes_icosagcm_trunk-277.zip r277] * [attachment:codes_icosagcm_trunk-339.zip r339 (DYNAMICO-1.0)] Please let us know if you use DYNAMICO (dubos at lmd dot polytechnique dot fr). The latest version is accessible through svn : {{{ svn co http://forge.ipsl.jussieu.fr/dynamico/svn/codes/icosagcm/trunk }}} Registered IPSL forge users belonging to the DYNAMICO group can do : {{{ svn co svn+ssh://mylogin@forge.ipsl.jussieu.fr/ipsl/forge/projets/dynamico/svn/codes/icosagcm/trunk DYNAMICO }}} 'mylogin' should be your forge login. svn will create the DYNAMICO directory and download the source code there. == Compiling DYNAMICO == DYNAMICO is written in Fortran 90 with some legacy code in Fortran 77. The build process is based on [http://metomi.github.io/fcm/doc/user_guide/make.html FCM]. DYNAMICO requires the NetCDF library, including the F90 modules. MPI is required for parallel execution but DYNAMICO can compile and run without MPI. DYNAMICO depends on the NetCDF and BLAS libraries. The compiling process is automated but some information is needed to guide it. This information is contained in text files in source:codes/icosagcm/trunk/arch . Sample files corresponding to a few machines (Ada at IDRIS, Curie at TGCC) are present. Assuming you compile on Ada : {{{ cd DYNAMICO ./make_icosa -arch X64_ADA -parallel mpi -prod -job 8 }}} will compile DYNAMICO. The make_icosa script accepts keyword-value pairs which drive its behaviour. The most important option is arch=ARCH (here ARCH=X64_ADA). It directs make_icosa to use the information contained in : * arch/arch-ARCH.env * arch/arch-ARCH.fcm * arch/arch-ARCH.path The *.env file is a shell script that is executed by make_icosa. It sets up the environment for use by *.path. *.path defines paths to libraries and modules needed for compilation. *.fcm defines the commands used to compile, link, etc. as well as options to be passed to the compiler/linker . The option "-job 8" is similar to "make -j 8" and compiles in parallel for speed. After a successful build the main executable is found in the bin/ directory. == Compiling with XIOS output == DYNAMICO can direct its output through XIOS, a parallel I/O library and server. See https://forge.ipsl.jussieu.fr/ioserver . To enable XIOS output : * get and compile XIOS in a separate directory * set the variables XIOS_INCDIR , XIOS_LIBDIR and XIOS_LIB to appropriate values in your arch.path * use the option "-with_xios" in your "make_icosa" command Why use XIOS : * without XIOS, each output field is written to a separate NetCDF file. Post-processing is required to group several fields together. * with XIOS, several fields can be written to a few output files. This behavior is controlled by the input file xios.xml (required). See https://forge.ipsl.jussieu.fr/ioserver for the syntax of this XML file. * without XIOS, data to be written is communicated to the main MPI process, which writes to the NetCDF files while other MPI processes stay idle. This is not expected to scale to a large number of MPI processes. * XIOS provides asynchronous, parallel I/O in order to scale to large MPI process counts.