source: codes/icosagcm/trunk/make_icosa @ 488

Last change on this file since 488 was 488, checked in by ymipsl, 8 years ago

New version independant of netcd I/O for benchmarking.

YM

  • Property svn:executable set to *
File size: 4.1 KB
Line 
1#!/bin/bash
2export PATH=$PWD/tools/FCM/bin:$PATH
3
4echo ./make_icosa $* > rebuild
5chmod a+x rebuild
6
7compil_mode_defined="FALSE"
8compil_mode="prod"
9
10job=1
11full_defined="FALSE"
12with_xios_defined="FALSE"
13arch_defined="FALSE"
14parallel_defined="FALSE"
15arch_path="arch"
16parallel="none"
17physics="none"
18external_ioipsl="FALSE"
19external_physics="FALSE"
20no_io_defined="FALSE"
21
22CPP_KEY="CPP_NONE" 
23ICOSA_LIB=""
24
25while (($# > 0))
26  do
27  case $1 in
28      "-h") cat <<fin
29Usage :
30makegcm [options] -m arch exec
31[-h]                       : help
32[-prod / -dev / -debug]    : compilation en mode production (default) / developpement / debug .
33 -arch nom_arch            : nom de l\'architecture cible
34fin
35          exit;;
36
37      "-prod")
38          compil_mode="prod" ; shift ;;
39
40      "-dev")
41          compil_mode="dev" ; shift ;;
42
43      "-debug")
44          compil_mode="debug" ; shift ;;
45
46      "-arch")
47          arch=$2 ; arch_defined="TRUE"; shift ; shift ;;
48 
49      "-arch_path")
50          arch_path=$2 ; arch_path_defined="TRUE"; shift ; shift ;;
51
52      "-parallel")
53          parallel=$2 ; parallel_defined="TRUE"; shift ; shift ;;
54
55      "-physics")
56          physics=$2 ; physics_defined="TRUE"; shift ; shift ;;
57
58      "-job")
59          job=$2 ; shift ; shift;;
60
61      "-full")
62          full_defined="TRUE" ; shift ;;
63
64      "-with_xios")
65          with_xios_defined="TRUE" ; shift ;;
66 
67        "-no_io")
68          no_io_defined="TRUE" ; shift ;;
69 
70      "-external_ioipsl")
71          external_ioipsl="TRUE" ; shift ;;
72
73      "-external_physics")
74          external_physics="TRUE" ; shift ;;
75
76      *)
77          code="$1" ; shift ;;
78  esac
79done
80
81rm -f .void_file
82echo > .void_file
83rm -rf .void_dir
84mkdir .void_dir
85
86if [[ "$arch_defined" == "TRUE" ]]
87then
88  rm -f arch.path
89  rm -f arch.fcm
90  rm -f arch.env
91  ln -s $arch_path/arch-${arch}.path ./arch.path
92  ln -s $arch_path/arch-${arch}.fcm  ./arch.fcm
93  if test -f $arch_path/arch-${arch}.env
94    then
95      ln -s $arch_path/arch-${arch}.env arch.env
96    else
97      ln -s .void_file arch.env
98    fi
99  source arch.env
100  source arch.path
101else
102  echo "Veuillez definir une architecture cible"
103  exit 1
104fi
105
106LD_FLAGS="%BASE_LD"
107
108if [[ "$compil_mode" == "prod" ]]
109then
110  COMPIL_FFLAGS="%PROD_FFLAGS"
111elif [[ "$compil_mode" == "dev" ]]
112then
113  COMPIL_FFLAGS="%DEV_FFLAGS"
114elif [[ "$compil_mode" == "debug" ]]
115then
116  COMPIL_FFLAGS="%DEBUG_FFLAGS"
117fi
118
119if [[ "$parallel" == "mpi" ]]
120then
121  CPP_KEY="$CPP_KEY CPP_USING_MPI"
122elif [[ "$parallel" == "omp" ]]
123then
124  CPP_KEY="$CPP_KEY CPP_USING_OMP"
125  COMPIL_FFLAGS="$COMPIL_FFLAGS %OMP_FFLAGS"
126  LD_FLAGS="$LD_FLAGS %OMP_LD"
127elif [[ "$parallel" == "mpi_omp" ]]
128then
129  CPP_KEY="$CPP_KEY CPP_USING_MPI CPP_USING_OMP"
130  COMPIL_FFLAGS="$COMPIL_FFLAGS %OMP_FFLAGS"
131  LD_FLAGS="$LD_FLAGS %OMP_LD"
132elif [[ "$parallel" == "none" ]]
133then
134  parallel="none"
135else
136  echo "-parallel value $parallel is invalid, only permited <none>, <mpi>, <omp> or <mpi_omp>"
137  exit 1
138fi
139
140if [[ "$physics" == "lmdz_generic" ]]
141then
142  CPP_KEY="$CPP_KEY CPP_PHYSICS_LMDZ_GENERIC"
143  COMPIL_FFLAGS="$COMPIL_FFLAGS $PHYSICS_INCDIR"
144  ICOSA_LIB="$ICOSA_LIB $PHYSICS_LIBDIR $PHYSICS_LIB"
145fi
146
147if [[ "$no_io_defined" == "TRUE" ]]
148then
149  CPP_KEY="$CPP_KEY CPP_NO_IO"
150  with_xios_defined="FALSE"
151fi 
152
153if [[ "$with_xios_defined" == "TRUE" ]]
154then
155  CPP_KEY="$CPP_KEY CPP_USING_XIOS"
156  COMPIL_FFLAGS="$COMPIL_FFLAGS $XIOS_INCDIR"
157  ICOSA_LIB="$ICOSA_LIB $XIOS_LIBDIR $XIOS_LIB"
158fi 
159
160if [[ "$external_ioipsl" == "TRUE" ]]
161then
162  ioipsl_path=".void_dir"
163  use_ioipsl="use::ioipsl"
164  COMPIL_FFLAGS="$COMPIL_FFLAGS $IOIPSL_INCDIR"
165  ICOSA_LIB="$ICOSA_LIB $IOIPSL_LIBDIR $IOIPSL_LIB"
166else
167  ioipsl_path="tools/ioipsl"
168  use_ioipsl=""
169fi 
170
171if [[ "$external_physics" == "TRUE" ]]
172then
173  CPP_KEY="$CPP_KEY CPP_USING_EXTERNAL_PHYSICS"
174fi
175
176if [[ "$no_io_defined" == "FALSE" ]]
177then
178  ICOSA_LIB="$ICOSA_LIB $NETCDF_LIBDIR $NETCDF_LIB $HDF5_LIBDIR $HDF5_LIB"
179  COMPIL_FFLAGS="$COMPIL_FFLAGS $NETCDF_INCDIR"
180fi
181
182rm -f config.fcm
183
184echo "%COMPIL_FFLAGS $COMPIL_FFLAGS" >> config.fcm
185echo "%LD_FLAGS $LD_FLAGS" >> config.fcm
186echo "%CPP_KEY $CPP_KEY" >> config.fcm
187echo "%LIB $ICOSA_LIB">> config.fcm
188echo "%IOIPSL_PATH $ioipsl_path">> config.fcm
189echo "%USE_IOIPSL $use_ioipsl">> config.fcm
190
191if [[ "$full_defined" == "TRUE" ]]
192then
193  ./build --job $job --full
194else
195  ./build --job $job
196fi
Note: See TracBrowser for help on using the repository browser.