| | 1 | == Compilation instructions == |
| | 2 | |
| | 3 | 1.- Extraction of the source code: |
| | 4 | $ svn co http://svn.lmd.jussieu.fr/LMDZ_WRF LMDZ_WRF |
| | 5 | |
| | 6 | 1.- Copy (not int the repository folder...) folder 'WRFV3' to the desired spatial resolution (F77 legacy). As example one for 80x90x39 |
| | 7 | $ cp -R WRFV3 ${WORKDIR}/WRFV3_80x90x39 |
| | 8 | |
| | 9 | 1.- Go to the ${WORKDIR} and compile there |
| | 10 | $ cd ${WORKDIR}/WRFV3_80x90x39 |
| | 11 | |
| | 12 | 1.- Define domain size for LMDZ editing file lmdz/dimensions.h (see documentation for more details) |
| | 13 | $ cat lmdz/dimensions.h |
| | 14 | INTEGER iim,jjm,llm,ndm,wiim,wjjm,wbdym |
| | 15 | |
| | 16 | PARAMETER (iim= 1, jjm=7031, llm=38,ndm=1,wiim=79,wjjm=89,wbdym=5) |
| | 17 | |
| | 18 | jjm = (dimx-1) * (dimy -1) |
| | 19 | llm = (dimz - 1) |
| | 20 | wiim = dimx - 1 |
| | 21 | wjjm = dimy - 1 |
| | 22 | wbdym = 5 (up to now, mandatory to run WRF with 5 grid points in the sponge zone) |
| | 23 | |
| | 24 | 1. run script 'tools/prepare_compilation.bash' ('-h', for help. copy netCDF libraries and other staff not automatized) |
| | 25 | $ ./prepare_compilation.bash [WRF_LMDZsrc] [NETCDFhome] ${WORKDIR}/WRFV3_80x90x39 |
| | 26 | |
| | 27 | 1. prepare compilation (ready for 'lmd' machines in serial) if not, edit |
| | 28 | 1. $ ./configure |
| | 29 | 1. add pre-compiler flag' -DLMDZ after -DNETCDF (inside configure.wrf) |
| | 30 | 1. modify 'lmdz/Makefile with that values from the 'configure.wrf' |
| | 31 | 1. prepare compilation modifying Registry files (already done, have a look just in case): |
| | 32 | 1. $ ls -lrta Registry/Registry.EM |
| | 33 | Registry/Registry.EM -> Registry.EM.LMDZ |
| | 34 | 1. $ ls -lrta Registry/registry.dimspec -> registry.dimspec.lmdz |
| | 35 | |
| | 36 | 1. Compile as usual |
| | 37 | $ compile em_real >& compile.log |
| | 38 | |
| | 39 | 1. Compile manually a lmdz subroutine (not working, not knowing why). Example with gfortran serial in lmdz machines |
| | 40 | $ cd lmdz |
| | 41 | $ gfortran -O3 -ftree-vectorize -ftree-loop-linear -funroll-loops -w -ffree-form -ffree-line-length-none -fconvert=big-endian -frecord-marker=4 -fconvert=big-endian -frecord-marker=4 -O3 -ftree-vectorize -ftree-loop-linear -funroll-loops -w -ffree-form -ffree-line-length-none -fconvert=big-endian -frecord-marker=4 -g -O0 -fbacktrace -Wall -fbounds-check -c -L/u/lflmd/bin/gcc_netcdf-4.3.0/lib -lnetcdf -lnetcdff -I/u/lflmd/bin/gcc_netcdf-4.3.0/include lmdz_wrf_variables_mod.f90 |
| | 42 | $ cd .. |
| | 43 | |
| | 44 | 1. run script for second time 'tools/prepare_compilation.bash' |
| | 45 | $ ./prepare_compilation.bash [WRF_LMDZsrc] [NETCDFhome] ${WORKDIR}/WRFV3_80x90x39 |
| | 46 | |
| | 47 | 1. Recompile as usual |
| | 48 | $ compile em_real >& compile.log |
| | 49 | |
| | 50 | 1. Checking compilation (empty outputs) |
| | 51 | $ cat -n compile.log | grep Error |
| | 52 | $ cat -n compile.log | grep Erreur (just in case you are in a French speaking computer) |
| | 53 | |
| | 54 | 1. Running simulation |
| | 55 | 1. Run all the steps 'WPS' and 'real.exe' as usual |
| | 56 | 1. folder 'WRFV3/run' is not completed (no binaries in repository!), thus get a copy of the right WRF version and use the original source |
| | 57 | 1. Edit and modify 'namelist.input' and all the LMDZ *def files provided in 'run' folder: 'config.def', 'gcm.def', 'physiq.def', 'run.def', 'traceur.def' |
| | 58 | |
| | 59 | 1. You're done, Have fun! |