Changeset 5089
- Timestamp:
- Jul 20, 2024, 5:25:07 PM (7 weeks ago)
- Location:
- LMDZ6/branches/Amaury_dev
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
LMDZ6/branches/Amaury_dev/libf/dyn3d_common/diagedyn.F
r5082 r5089 62 62 INCLUDE "iniprint.h" 63 63 64 !#ifdef CPP_EARTH65 ! INCLUDE "../phylmd/YOMCST.h"66 ! INCLUDE "../phylmd/YOETHF.h"67 !#endif68 64 ! Ehouarn: for now set these parameters to what is in Earth physics... 69 65 ! (cf ../phylmd/suphel.h) … … 154 150 155 151 156 !#ifdef CPP_EARTH157 152 IF (planet_type=="earth") THEN 158 153 … … 335 330 ENDIF ! of if (planet_type=="earth") 336 331 !#endif 337 ! #endif of #ifdef CPP_EARTH 338 RETURN 332 RETURN 339 333 END -
LMDZ6/branches/Amaury_dev/libf/dyn3dmem/parallel_lmdz.F90
r5082 r5089 402 402 character(len=6),parameter :: type_ocean="dummy" 403 403 #endif 404 ! #endif of #ifdef CPP_EARTH405 404 406 405 include "dimensions.h" -
LMDZ6/branches/Amaury_dev/makelmdz_fcm
r5048 r5089 3 3 # This is a script in Bash. 4 4 5 # FH : on ne cr \'ee plus le fichier arch.mk qui est suppos\'eexister par5 # FH : on ne crée plus le fichier arch.mk qui est supposé exister par 6 6 # FH : ailleurs. 7 # FH : ulterieurement, ce fichier sera pr \'e-existant pour une s\'erie8 # FH : de configurations en versions optimis \'ees et debug qui seront9 # FH : li \'es (ln -s) avec arch.mk en fonction de l'architecture.10 # FH : Pour le moment, cette version est en test et on peut cr \'eer les11 # FH : arch.mk en lan \c{}cant une premi\`ere fois makegcm.7 # FH : ulterieurement, ce fichier sera pré-existant pour une série 8 # FH : de configurations en versions optimisées et debug qui seront 9 # FH : liés (ln -s) avec arch.mk en fonction de l'architecture. 10 # FH : Pour le moment, cette version est en test et on peut créer les 11 # FH : arch.mk en lançant une première fois makegcm. 12 12 # 13 ##set -x 14 set -e 15 ######################################################################## 16 # options par defaut pour la commande make 17 ######################################################################## 18 19 dim="96x72x19" 20 physique=lmd 21 filtre=filtrez 22 grille=reg 23 couple=false 24 veget=false25 inlandsis=false26 rrtm=false27 rad="oldrad"28 dust=false29 strataer=false30 chimie=false31 parallel=none32 paramem="mem"33 compil_mod=prod34 io=ioipsl35 LIBPREFIX="" 36 cosp=false37 cosp2=false38 cospv2=false 39 job=1 40 full='' 41 libphy=false42 isotopes=false43 isoverif=false44 diagiso=false45 isotrac=false46 force_compile=false47 cplocninca=false 48 49 arch_defined="FALSE"50 arch_path="arch"51 arch_default_path="arch" 52 53 LMDGCM=`/bin/pwd` 54 LIBOGCM=$LMDGCM/libo 55 LIBFGCM=$LMDGCM/libf 56 DYN_COMMON_PATH=$LIBFGCM/dyn3d_common 57 # path for optional packages, but default set to ".void_dir" 58 FILTRE_PATH=$LMDGCM/.void_dir59 DYN_PHYS_PATH=$LMDGCM/.void_dir60 DYN_PHYS_SUB_PATH=$LMDGCM/.void_dir61 PHY_COMMON_PATH=$LMDGCM/.void_dir62 RAD_PATH=$LMDGCM/.void_dir63 INLANDSIS_PATH=$LMDGCM/.void_dir64 DUST_PATH=$LMDGCM/.void_dir65 STRATAER_PATH=$LMDGCM/.void_dir66 COSP_PATH=$LMDGCM/.void_dir 67 fcm_path=$LMDGCM/tools/fcm/bin 68 69 ######################################################################## 70 # Quelques initialisations de variables du shell. 71 ######################################################################## 72 73 CPP_KEY="IN_LMDZ" 74 INCLUDE=""75 LIB=""76 adjnt=""77 COMPIL_FFLAGS="%PROD_FFLAGS"78 PARA_FFLAGS=""79 PARA_LD="" 80 EXT_SRC="" 81 82 ######################################################################## 83 # lecture des options de mymake 84 ######################################################################## 85 86 while (($# > 0)) 87 do88 case $1 in89 "-h") cat <<fin90 Usage : 91 makelmdz_fcm [options] -arch nom_arch exec 92 [-h] : brief help 93 [-d [[IMx]JMx]LM] : IM, JM, LM are the dimensions in x, y, z (default: $dim) 94 [-p PHYS] : set of physical parametrizations (in libf/phyPHYS), (default: lmd)95 [-prod / -dev / -debug] : compilation mode production (default) / developement / debug 96 [-c false/MPI1/OMCT] : coupling with ocean model : MPI1/OMCT/false (default: false) 97 [-v false/orchideetrunk/orchidee2.1/orchidee2.0/orchidee1.9] : version of the vegetation model to include (default: false)98 false : no vegetation model99 orchideetrunk : compile using ORCHIDEE trunk from revision 7757 or higher100 orchidee2.1 : compile using ORCHIDEE 2.1 until 4.1 included or until revision 7757 on the trunk101 orchidee2.0 : compile using ORCHIDEE 2.0102 orchidee1.9 : compile using ORCHIDEE up to the version including OpenMP in ORCHIDEE : tag 1.9-1.9.5(version AR5)-1.9.6103 true : (obsolete; for backward compatibility) use ORCHIDEE tag 1.9-1.9.6104 [-chimie INCA/false] : with INCA chemistry model or without (default: false) 105 [-cplocninca ] : allow transfer of species from PISCES to INCA(default: false)106 [-cosp true/false] : compile with/without cosp package(default: false)107 [-cosp2 true/false] : compile with/without cosp2package (default: false)108 [-cospv2 true/false] : compile with/without cospv2 package (default: false)109 [-inlandsis true/false] : compile with/without inlandsispackage (default: false)110 [-rrtm true/false] : compile with/without rrtmpackage (default: false)111 [-rad oldrad/rrtm/ecrad] : compile with oldrad/rrtm/ecrad radiatif code (default: oldrad)112 [-dust true/false] : compile with/without the dust package by Boucher and co (default: false)113 [-strataer true/false] : compile with/without the strat aerpackage by Boucher and co (default: false)114 [-isotopes true/false] : compile with/without water isotopes in the physics 115 [-isoverif true/false] : compile with/without verifications forwater isotopes in the physics116 [-diagiso true/false] : compile with/without special diagnostics for water isotopes in the physics117 [-isotrac true/false] : compile with/without tracers ofwater isotopes in the physics118 [-parallel none/mpi/omp/mpi_omp] : parallelism (default: none) : mpi, openmp or mixted mpi_openmp 119 [-g GRI] : grid configuration in dyn3d/GRI_xy.h (default: reg, inclues a zoom) 120 [-io ioipsl/mix/xios] : Input/Output library (default: ioipsl)121 [-include INCLUDES] : extra include path to add 122 [-cpp CPP_KEY] : additional preprocessing definitions 123 [-adjnt] : adjoint model, not operational ... 124 [-mem] : reduced memory dynamics (obsolete flag; always on in parallel mode)125 [-filtre NOMFILTRE] : use filtre from libf/NOMFILTRE (default: filtrez)126 [-link LINKS] : additional links with other libraries127 [-j n] : active parallel compiling on ntask128 [-full] : full recompiling 129 [-libphy] : only compile physics package (no dynamics or main program)130 [-fcm_path path] : path to the fcm tool (default: tools/fcm/bin)131 [-ext_src path] : path to an additional set of routines to compile with the model132 [-arch_path path] : path to architecture files (default: $arch_default_path)133 [-force_compile] : recompile although there seems to be an on-going compilation134 -arch nom_arch : target architecture135 exec : executable to build13 set -eu 14 15 function init_vars() { 16 ######################################################################## 17 # options par defaut pour la commande make 18 ######################################################################## 19 20 dim="96x72x19" 21 physique=lmd 22 filtre=filtrez 23 grille=reg 24 couple=false 25 veget=false 26 inlandsis=false 27 rad="oldrad" 28 dust=false 29 strataer=false 30 chimie=false 31 parallel=none 32 paramem="mem" 33 compil_mod=prod 34 io=ioipsl 35 cosp=false 36 cosp2=false 37 cospv2=false 38 job=1 39 full='' 40 libphy=false 41 isotopes=false 42 isoverif=false 43 diagiso=false 44 isotrac=false 45 force_compile=false 46 cplocninca=false 47 48 arch_defined="FALSE" 49 arch_path="arch" 50 arch_default_path="arch" 51 52 LMDGCM=$(/bin/pwd) 53 LIBOGCM=$LMDGCM/libo 54 LIBFGCM=$LMDGCM/libf 55 DYN_COMMON_PATH=$LIBFGCM/dyn3d_common 56 # path for optional packages, but default set to ".void_dir" 57 FILTRE_PATH=$LMDGCM/.void_dir 58 DYN_PHYS_PATH=$LMDGCM/.void_dir 59 DYN_PHYS_SUB_PATH=$LMDGCM/.void_dir 60 PHY_COMMON_PATH=$LMDGCM/.void_dir 61 RAD_PATH=$LMDGCM/.void_dir 62 INLANDSIS_PATH=$LMDGCM/.void_dir 63 DUST_PATH=$LMDGCM/.void_dir 64 STRATAER_PATH=$LMDGCM/.void_dir 65 COSP_PATH=$LMDGCM/.void_dir 66 fcm_path=$LMDGCM/tools/fcm/bin 67 68 ######################################################################## 69 # Quelques initialisations de variables du shell. 70 ######################################################################## 71 72 CPP_KEY="IN_LMDZ" 73 INCLUDE="" 74 LIB="" 75 COMPIL_FFLAGS="%PROD_FFLAGS" 76 PARA_FFLAGS="" 77 PARA_LD="" 78 EXT_SRC="" 79 } 80 81 function read_cmdline_options() { 82 83 ######################################################################## 84 # lecture des options de mymake 85 ######################################################################## 86 87 while (($# > 0)) 88 do 89 case $1 in 90 "-h") cat <<fin 91 Usage : 92 makelmdz_fcm [options] -arch nom_arch exec 93 [-h] : brief help 94 [-d [[IMx]JMx]LM] : IM, JM, LM are the dimensions in x, y, z (default: $dim) 95 [-p PHYS] : set of physical parametrizations (in libf/phyPHYS), (default: lmd) 96 [-prod / -dev / -debug] : compilation mode production (default) / developement / debug 97 [-c false/MPI1/OMCT] : coupling with ocean model : MPI1/OMCT/false (default: false) 98 [-v false/orchideetrunk/orchidee2.1/orchidee2.0/orchidee1.9] : version of the vegetation model to include (default: false) 99 false : no vegetation model 100 orchideetrunk : compile using ORCHIDEE trunk from revision 7757 or higher 101 orchidee2.1 : compile using ORCHIDEE 2.1 until 4.1 included or until revision 7757 on the trunk 102 orchidee2.0 : compile using ORCHIDEE 2.0 103 orchidee1.9 : compile using ORCHIDEE up to the version including OpenMP in ORCHIDEE : tag 1.9-1.9.5(version AR5)-1.9.6 104 true : (obsolete; for backward compatibility) use ORCHIDEE tag 1.9-1.9.6 105 [-chimie INCA/false] : with INCA chemistry model or without (default: false) 106 [-cplocninca ] : allow transfer of species from PISCES to INCA (default: false) 107 [-cosp true/false] : compile with/without cosp package (default: false) 108 [-cosp2 true/false] : compile with/without cosp2 package (default: false) 109 [-cospv2 true/false] : compile with/without cospv2 package (default: false) 110 [-inlandsis true/false] : compile with/without inlandsis package (default: false) 111 [-rrtm true/false] : compile with/without rrtm package (default: false) 112 [-rad oldrad/rrtm/ecrad] : compile with oldrad/rrtm/ecrad radiatif code (default: oldrad) 113 [-dust true/false] : compile with/without the dust package by Boucher and co (default: false) 114 [-strataer true/false] : compile with/without the strat aer package by Boucher and co (default: false) 115 [-isotopes true/false] : compile with/without water isotopes in the physics 116 [-isoverif true/false] : compile with/without verifications for water isotopes in the physics 117 [-diagiso true/false] : compile with/without special diagnostics for water isotopes in the physics 118 [-isotrac true/false] : compile with/without tracers of water isotopes in the physics 119 [-parallel none/mpi/omp/mpi_omp] : parallelism (default: none) : mpi, openmp or mixted mpi_openmp 120 [-g GRI] : grid configuration in dyn3d/GRI_xy.h (default: reg, inclues a zoom) 121 [-io ioipsl/mix/xios] : Input/Output library (default: ioipsl) 122 [-include INCLUDES] : extra include path to add 123 [-cpp CPP_KEY] : additional preprocessing definitions 124 [-mem] : reduced memory dynamics (obsolete flag; always on in parallel mode) 125 [-filtre NOMFILTRE] : use filtre from libf/NOMFILTRE (default: filtrez) 126 [-link LINKS] : additional links with other libraries 127 [-j n] : active parallel compiling on ntask 128 [-full] : full recompiling 129 [-libphy] : only compile physics package (no dynamics or main program) 130 [-fcm_path path] : path to the fcm tool (default: tools/fcm/bin) 131 [-ext_src path] : path to an additional set of routines to compile with the model 132 [-arch_path path] : path to architecture files (default: $arch_default_path) 133 [-force_compile] : recompile although there seems to be an on-going compilation 134 -arch nom_arch : target architecture 135 exec : executable to build 136 136 fin 137 exit;; 138 139 "-d") 140 dim=$2 ; shift ; shift ;; 141 142 "-p") 143 physique="$2" ; shift ; shift ;; 144 145 "-g") 146 grille="$2" ; shift ; shift ;; 147 148 "-c") 149 couple="$2" ; shift ; shift ;; 150 151 "-prod") 152 compil_mod="prod" ; shift ;; 153 154 "-dev") 155 compil_mod="dev" ; shift ;; 156 157 "-debug") 158 compil_mod="debug" ; shift ;; 159 160 "-io") 161 io="$2" ; shift ; shift ;; 162 163 "-v") 164 veget="$2" ; shift ; shift ;; 165 166 "-inlandsis") 167 inlandsis="$2" ; shift ; shift ;; 168 169 "-rrtm") 170 rrtm="$2" ; if [ "$2" = "false" ] ; then rad="oldrad" ; else rad="rrtm" ; fi ; shift ; shift ;; 171 172 "-rad") 173 rad="$2" ; shift ; shift ;; 174 175 "-dust") 176 dust="$2" ; shift ; shift ;; 177 178 "-strataer") 179 strataer="$2" ; shift ; shift ;; 180 181 "-chimie") 182 chimie="$2" ; shift ; shift ;; 183 184 "-cplocninca") 185 cplocninca=TRUE ; shift ;; 186 187 "-isotopes") 188 isotopes="$2" ; shift ; shift ;; 189 190 "-isoverif") 191 isoverif="$2" ; shift ; shift ;; 192 193 "-diagiso") 194 diagiso="$2" ; shift ; shift ;; 195 196 "-isotrac") 197 isotrac="$2" ; shift ; shift ;; 198 199 "-parallel") 200 parallel="$2" ; shift ; shift ;; 201 202 "-include") 203 INCLUDE="$INCLUDE -I$2" ; shift ; shift ;; 204 205 "-cpp") 206 CPP_KEY="$CPP_KEY $2" ; shift ; shift ;; 207 208 "-adjnt") 209 echo "not operational ... work to be done here ";exit 210 opt_dep="$opt_dep adjnt" ; adjnt="-ladjnt -ldyn3d " 211 optim="$optim -Dadj" ; shift ;; 212 213 "-cosp") 214 cosp="$2" ; shift ; shift ;; 215 216 "-cosp2") 217 cosp2="$2" ; shift ; shift ;; 218 219 "-cospv2") 220 cospv2="$2" ; shift ; shift ;; 221 222 "-mem") 223 echo "option -mem is obsolete (now always on in parallel)" 224 paramem="mem" ; shift ;; 225 226 "-filtre") 227 filtre=$2 ; shift ; shift ;; 228 229 "-link") 230 LIB="$LIB $2" ; shift ; shift ;; 231 232 "-fcm_path") 233 fcm_path=$2 ; shift ; shift ;; 234 235 "-ext_src") 236 EXT_SRC=$2 ; shift ; shift ;; 237 238 "-j") 239 job=$2 ; shift ; shift ;; 240 241 "-full") 242 full="-full" ; shift ;; 243 244 "-libphy") 245 libphy="true" ; shift ;; 246 247 "-arch") 248 arch=$2 ; arch_defined="TRUE" ; shift ; shift ;; 249 250 "-arch_path") 251 arch_path=$2 ; arch_path_defined="TRUE"; shift ; shift ;; 252 253 "-force_compile") 254 force_compile=true ; shift ;; 255 256 *) 257 code="$1" ; shift ;; 258 esac 259 done 260 261 ############################################################### 262 # path to fcm 263 ############################################################### 264 # handle case when provided path to fcm was given as a relative 265 # path (from makelmdz_fcm script directory) and not an absolute path 266 if [[ ${fcm_path:0:1} != "/" ]] ; then 267 # prepend with makelmdz_fcm location 268 fcm_path=$(cd $(dirname $0) ; pwd)"/"${fcm_path} 269 fi 270 271 # add fcm_path to PATH 272 export PATH=${fcm_path}:${PATH} 273 274 echo "Path to fcm:" 275 echo ${fcm_path} 276 277 ############################################################### 278 # lecture des chemins propres \`a l'architecture de la machine # 279 ############################################################### 280 rm -f .void_file 281 echo > .void_file 282 rm -rf .void_dir 283 mkdir .void_dir 284 285 if [[ "$arch_defined" == "TRUE" ]] 286 then 287 rm -f arch.path 288 rm -f arch.fcm 289 rm -f arch.env 290 291 if test -f $arch_path/arch-${arch}.path 292 then 293 ln -s $arch_path/arch-${arch}.path arch.path 294 elif test -f $arch_default_path/arch-${arch}.path 295 then 296 ln -s $arch_default_path/arch-${arch}.path arch.path 297 fi 298 299 if test -f $arch_path/arch-${arch}.fcm 300 then 301 ln -s $arch_path/arch-${arch}.fcm arch.fcm 302 elif test -f $arch_default_path/arch-${arch}.fcm 303 then 304 ln -s $arch_default_path/arch-${arch}.fcm arch.fcm 305 fi 306 307 if test -f $arch_path/arch-${arch}.env 308 then 309 ln -s $arch_path/arch-${arch}.env arch.env 310 elif test -f $arch_default_path/arch-${arch}.env 311 then 312 ln -s $arch_default_path/arch-${arch}.env arch.env 137 exit 2;; 138 139 "-d") 140 dim=$2; shift; shift;; 141 142 "-p") 143 physique="$2"; shift; shift;; 144 145 "-g") 146 grille="$2"; shift; shift;; 147 148 "-c") 149 couple="$2"; shift; shift;; 150 151 "-prod") 152 compil_mod="prod"; shift;; 153 154 "-dev") 155 compil_mod="dev"; shift;; 156 157 "-debug") 158 compil_mod="debug"; shift;; 159 160 "-io") 161 io="$2"; shift; shift;; 162 163 "-v") 164 veget="$2"; shift; shift;; 165 166 "-inlandsis") 167 inlandsis="$2"; shift; shift;; 168 169 "-rrtm") 170 if [ "$2" = "false" ]; then rad="oldrad"; else rad="rrtm"; fi; shift; shift;; 171 172 "-rad") 173 rad="$2"; shift; shift;; 174 175 "-dust") 176 dust="$2"; shift; shift;; 177 178 "-strataer") 179 strataer="$2"; shift; shift;; 180 181 "-chimie") 182 chimie="$2"; shift; shift;; 183 184 "-cplocninca") 185 cplocninca=TRUE; shift;; 186 187 "-isotopes") 188 isotopes="$2"; shift; shift;; 189 190 "-isoverif") 191 isoverif="$2"; shift; shift;; 192 193 "-diagiso") 194 diagiso="$2"; shift; shift;; 195 196 "-isotrac") 197 isotrac="$2"; shift; shift;; 198 199 "-parallel") 200 parallel="$2"; shift; shift;; 201 202 "-include") 203 INCLUDE="$INCLUDE -I$2"; shift; shift;; 204 205 "-cpp") 206 CPP_KEY="$CPP_KEY $2"; shift; shift;; 207 208 "-cosp") 209 cosp="$2"; shift; shift;; 210 211 "-cosp2") 212 cosp2="$2"; shift; shift;; 213 214 "-cospv2") 215 cospv2="$2"; shift; shift;; 216 217 "-mem") 218 echo "option -mem is obsolete (now always on in parallel)" 219 paramem="mem"; shift;; 220 221 "-filtre") 222 filtre=$2; shift; shift;; 223 224 "-link") 225 LIB="$LIB $2"; shift; shift;; 226 227 "-fcm_path") 228 fcm_path=$2; shift; shift;; 229 230 "-ext_src") 231 EXT_SRC=$2; shift; shift;; 232 233 "-j") 234 job=$2; shift; shift;; 235 236 "-full") 237 full="-full"; shift;; 238 239 "-libphy") 240 libphy="true"; shift;; 241 242 "-arch") 243 arch=$2; arch_defined="TRUE"; shift; shift;; 244 245 "-arch_path") 246 arch_path=$2; shift; shift;; 247 248 "-force_compile") 249 force_compile=true; shift;; 250 251 *) 252 code="$1"; shift;; 253 esac 254 done 255 256 ############################################################### 257 # path to fcm 258 ############################################################### 259 # handle case when provided path to fcm was given as a relative 260 # path (from makelmdz_fcm script directory) and not an absolute path 261 if [[ ${fcm_path:0:1} != "/" ]]; then 262 # prepend with makelmdz_fcm location 263 fcm_path="$(cd "$(dirname "$0")"; pwd)/$fcm_path" 264 fi 265 266 # add fcm_path to PATH 267 export PATH=$fcm_path:$PATH 268 echo "Path to fcm: $fcm_path" 269 } 270 271 function init_arch() { 272 ############################################################### 273 # lecture des chemins propres à l'architecture de la machine # 274 ############################################################### 275 rm -f .void_file 276 touch .void_file 277 rm -rf .void_dir 278 mkdir .void_dir 279 280 if [[ "$arch_defined" == "TRUE" ]]; then 281 local i 282 for i in "path" "fcm" "env"; do 283 rm -f "arch.$i" 284 285 if [[ -f "$arch_path/arch-$arch.$i" ]]; then 286 ln -s "$arch_path/arch-$arch.$i" "arch.$i" 287 elif [[ -f "$arch_default_path/arch-$arch.$i" ]]; then 288 ln -s "$arch_default_path/arch-$arch.$i" "arch.$i" 289 elif [[ $i = "env" ]]; then 290 ln -s .void_file arch.env 291 fi 292 done 293 294 # source architecture PATH and ENV files 295 source arch.env 296 source arch.path 313 297 else 314 ln -s .void_file arch.env 315 fi 316 # source architecture PATH and ENV files 317 source arch.env 318 source arch.path 319 else 320 echo "You must define a target architecture" 321 exit 1 322 fi 323 324 ######################################################################## 325 # Definition des clefs CPP, des chemins des includes et modules 326 # et des libraries 327 ######################################################################## 328 329 if [[ "$compil_mod" == "prod" ]] 330 then 331 COMPIL_FFLAGS="%PROD_FFLAGS" 332 elif [[ "$compil_mod" == "dev" ]] 333 then 334 COMPIL_FFLAGS="%DEV_FFLAGS" 335 elif [[ "$compil_mod" == "debug" ]] 336 then 337 COMPIL_FFLAGS="%DEBUG_FFLAGS" 338 fi 339 340 phys_root=$physique 341 if [[ "${physique:0:3}" == "lmd" ]] ; then phys_root=lmd ; fi 342 if [[ "${physique:0:4}" == "mars" ]] ; then phys_root=mars ; fi 343 if [[ "${physique:0:3}" == "std" ]] ; then phys_root=std ; fi 344 if [[ "${physique:0:5}" == "venus" ]] ; then phys_root=venus ; fi 345 if [[ "${physique:0:5}" == "titan" ]] ; then phys_root=titan ; fi 346 if [[ "${physique:0:3}" == "dev" ]] ; then phys_root=dev ; fi 347 348 if [[ "$physique" != "nophys" ]] 349 then 350 #We'll use some physics 351 CPP_KEY="$CPP_KEY CPP_PHYS" 352 if [[ "${phys_root}" == "lmd" ]] 353 then 354 #For lmd physics, default planet type is Earth 355 CPP_KEY="$CPP_KEY CPP_EARTH" 356 fi 357 # set physics common utilities path 358 PHY_COMMON_PATH="${LIBFGCM}/phy_common" 359 # set the dyn/phys interface path 360 DYN_PHYS_PATH="${LIBFGCM}/dynphy_lonlat" 361 DYN_PHYS_SUB_PATH="${LIBFGCM}/dynphy_lonlat/phy${phys_root}" 362 fi 363 364 if [[ "$filtre" == "filtrez" ]] 365 then 366 FILTRE_PATH=${LIBFGCM}/$filtre 367 fi 368 369 if [[ "$chimie" == "INCA" ]] 370 then 371 CPP_KEY="$CPP_KEY INCA" 372 INCLUDE="$INCLUDE ${INCA_INCDIR}" 373 LIB="$LIB ${INCA_LIBDIR} ${INCA_LIB}" 374 fi 375 376 if [[ "$isotopes" == "true" ]] 377 then 378 CPP_KEY="$CPP_KEY ISO" 379 fi 380 381 if [[ "$isoverif" == "true" ]] 382 then 383 CPP_KEY="$CPP_KEY ISOVERIF" 384 fi 385 386 if [[ "$diagiso" == "true" ]] 387 then 388 CPP_KEY="$CPP_KEY DIAGISO" 389 fi 390 391 if [[ "$isotrac" == "true" ]] 392 then 393 CPP_KEY="$CPP_KEY ISOTRAC" 394 fi 395 396 if [[ "$couple" != "false" ]] 397 then 398 if [[ "$couple" == "MPI1" ]] 399 then 400 CPP_KEY="$CPP_KEY CPP_COUPLE" 401 export OASIS_INCDIR=$LMDGCM/../../prism/X64/build/lib/psmile.MPI1 402 export OASIS_LIBDIR=$LMDGCM/../../prism/X64/lib 403 INCLUDE="$INCLUDE -I${OASIS_INCDIR}" 404 LIB="$LIB -L${OASIS_LIBDIR} -lpsmile.MPI1 -lmpp_io" 405 else 406 CPP_KEY="$CPP_KEY CPP_COUPLE CPP_OMCT" 407 INCLUDE="$INCLUDE ${OASIS_INCDIR}" 408 LIB="$LIB ${OASIS_LIBDIR} -lpsmile.MPI1 -lscrip -lmct -lmpeu" 409 fi 410 fi 411 412 if [[ "$parallel" == "mpi" ]] 413 then 414 CPP_KEY="$CPP_KEY CPP_PARA CPP_MPI" 415 PARA_FFLAGS="%MPI_FFLAGS" 416 PARA_LD="%MPI_LD" 417 elif [[ "$parallel" == "omp" ]] 418 then 419 CPP_KEY="$CPP_KEY CPP_PARA CPP_OMP" 420 PARA_FFLAGS="%OMP_FFLAGS" 421 PARA_LD="%OMP_LD" 422 elif [[ "$parallel" == "mpi_omp" ]] 423 then 424 CPP_KEY="$CPP_KEY CPP_PARA CPP_MPI CPP_OMP" 425 PARA_FFLAGS="%MPI_FFLAGS %OMP_FFLAGS" 426 PARA_LD="%MPI_LD %OMP_LD" 427 fi 428 429 if [[ ( "$parallel" == "omp" || "$parallel" == "mpi_omp" ) \ 430 && "$compil_mod" == "debug" ]] 431 then 432 echo "Usually, parallelization with OpenMP requires some optimization." 433 echo "We suggest switching to \"-dev\"." 434 fi 435 436 if [ "$veget" = "true" -o "$veget" = "orchidee1.9" -o "$veget" = "orchidee2.0" -o "$veget" = "orchidee2.1" -o "$veget" = "orchideetrunk" ] 437 then 298 echo "STOP: You must define a target architecture"; exit 1 299 fi 300 } 301 302 init_vars 303 read_cmdline_options "$@" 304 init_arch 305 306 function cpp_keys_and_include_mod_path() { 307 ######################################################################## 308 # Definition des clefs CPP, des chemins des includes et modules 309 # et des libraries 310 ######################################################################## 311 312 if [[ $compil_mod = "prod" ]]; then 313 COMPIL_FFLAGS="%PROD_FFLAGS" 314 elif [[ $compil_mod = "dev" ]]; then 315 COMPIL_FFLAGS="%DEV_FFLAGS" 316 elif [[ $compil_mod = "debug" ]]; then 317 COMPIL_FFLAGS="%DEBUG_FFLAGS" 318 fi 319 320 phys_root=$physique 321 if [[ ${physique:0:3} = "lmd" ]]; then phys_root=lmd; fi 322 if [[ ${physique:0:4} = "mars" ]]; then phys_root=mars; fi 323 if [[ ${physique:0:3} = "std" ]]; then phys_root=std; fi 324 if [[ ${physique:0:5} = "venus" ]]; then phys_root=venus; fi 325 if [[ ${physique:0:5} = "titan" ]]; then phys_root=titan; fi 326 if [[ ${physique:0:3} = "dev" ]]; then phys_root=dev; fi 327 328 if [[ $physique != "nophys" ]]; then 329 #We'll use some physics 330 CPP_KEY="$CPP_KEY CPP_PHYS" 331 # set physics common utilities path 332 PHY_COMMON_PATH="${LIBFGCM}/phy_common" 333 # set the dyn/phys interface path 334 DYN_PHYS_PATH="${LIBFGCM}/dynphy_lonlat" 335 DYN_PHYS_SUB_PATH="${LIBFGCM}/dynphy_lonlat/phy${phys_root}" 336 fi 337 338 if [[ "$filtre" = "filtrez" ]]; then 339 FILTRE_PATH=${LIBFGCM}/$filtre 340 fi 341 342 if [[ "$chimie" = "INCA" ]]; then 343 CPP_KEY="$CPP_KEY INCA" 344 INCLUDE="$INCLUDE ${INCA_INCDIR}" 345 LIB="$LIB ${INCA_LIBDIR} ${INCA_LIB}" 346 fi 347 348 if [[ "$isotopes" = "true" ]]; then 349 CPP_KEY="$CPP_KEY ISO" 350 fi 351 352 if [[ "$isoverif" = "true" ]]; then 353 CPP_KEY="$CPP_KEY ISOVERIF" 354 fi 355 356 if [[ "$diagiso" = "true" ]]; then 357 CPP_KEY="$CPP_KEY DIAGISO" 358 fi 359 360 if [[ "$isotrac" = "true" ]]; then 361 CPP_KEY="$CPP_KEY ISOTRAC" 362 fi 363 364 if [[ "$couple" != "false" ]]; then 365 if [[ "$couple" = "MPI1" ]]; then 366 CPP_KEY="$CPP_KEY CPP_COUPLE" 367 export OASIS_INCDIR=$LMDGCM/../../prism/X64/build/lib/psmile.MPI1 368 export OASIS_LIBDIR=$LMDGCM/../../prism/X64/lib 369 INCLUDE="$INCLUDE -I${OASIS_INCDIR}" 370 LIB="$LIB -L${OASIS_LIBDIR} -lpsmile.MPI1 -lmpp_io" 371 else 372 CPP_KEY="$CPP_KEY CPP_COUPLE CPP_OMCT" 373 INCLUDE="$INCLUDE ${OASIS_INCDIR}" 374 LIB="$LIB ${OASIS_LIBDIR} -lpsmile.MPI1 -lscrip -lmct -lmpeu" 375 fi 376 fi 377 378 if [[ "$parallel" = "mpi" ]]; then 379 CPP_KEY="$CPP_KEY CPP_PARA CPP_MPI" 380 PARA_FFLAGS="%MPI_FFLAGS" 381 PARA_LD="%MPI_LD" 382 elif [[ "$parallel" = "omp" ]]; then 383 CPP_KEY="$CPP_KEY CPP_PARA CPP_OMP" 384 PARA_FFLAGS="%OMP_FFLAGS" 385 PARA_LD="%OMP_LD" 386 elif [[ "$parallel" = "mpi_omp" ]]; then 387 CPP_KEY="$CPP_KEY CPP_PARA CPP_MPI CPP_OMP" 388 PARA_FFLAGS="%MPI_FFLAGS %OMP_FFLAGS" 389 PARA_LD="%MPI_LD %OMP_LD" 390 fi 391 392 if [[ ( "$parallel" = "omp" || "$parallel" = "mpi_omp" ) && "$compil_mod" = "debug" ]]; then 393 echo "Usually, parallelization with OpenMP requires some optimization." 394 echo "We suggest switching to \"-dev\"." 395 fi 396 397 if [[ "$veget" = "true" || "$veget" = "orchidee1.9" || "$veget" = "orchidee2.0" \ 398 || "$veget" = "orchidee2.1" || "$veget" = "orchideetrunk" ]]; then 438 399 echo "doing orchidee" 439 400 #NB: option 'true': for backward compatibility. To be used with ORCHIDEE tag 1.9-1.9.6 … … 445 406 if [[ "$veget" == "orchidee1.9" ]] ; then 446 407 CPP_KEY="$CPP_KEY ORCHIDEE_NOOPENMP" 447 fi448 if [[ "$veget" == "orchidee2.0" ]]; then408 fi 409 if [[ "$veget" = "orchidee2.0" ]]; then 449 410 orch_libs="-lsechiba -lparameters -lstomate -lparallel -lorglob -lorchidee" 450 411 CPP_KEY="$CPP_KEY ORCHIDEE_NOUNSTRUCT" 451 elif [[ "$veget" == "orchidee2.1" ]]; then412 elif [[ "$veget" = "orchidee2.1" ]]; then 452 413 CPP_KEY="$CPP_KEY ORCHIDEE_NOLIC" 453 414 orch_libs="-lsechiba -lparameters -lstomate -lparallel -lorglob -lorchidee" 454 elif [[ "$veget" == "orchideetrunk" ]]; then415 elif [[ "$veget" = "orchideetrunk" ]]; then 455 416 orch_libs="-lorchidee" 456 else417 else 457 418 orch_libs="-lsechiba -lparameters -lstomate -lparallel -lorglob" 458 fi 459 LIB="${LIB} ${ORCH_LIBDIR} ${orch_libs}" 460 # for lib in ${orch_libs} ; do 461 # if [ -f ${ORCH_LIBDIR#-L}/lib${LIBPREFIX}$lib.a ] ; then 462 # LIB="${LIB} -l${LIBPREFIX}$lib " 463 # fi 464 # done 465 echo "orchidee lib" 466 echo ${LIB} 467 elif [[ "$veget" != "false" ]] ; then 468 echo "Option -v $veget does not exist" 469 echo "Use ./makelmdz_fcm -h for more information" 470 exit 471 fi 472 473 if [[ "$inlandsis" == "true" ]] 474 then 475 CPP_KEY="$CPP_KEY CPP_INLANDSIS" 476 INLANDSIS_PATH="$LIBFGCM/phy${physique}/inlandsis" 477 fi 478 479 if [[ "$rad" == "rrtm" ]] 480 then 481 CPP_KEY="$CPP_KEY CPP_RRTM" 482 RAD_PATH="$LIBFGCM/phy${physique}/rrtm" 483 fi 484 if [[ "$rad" == "ecrad" ]] 485 then 486 CPP_KEY="$CPP_KEY CPP_ECRAD" 487 RAD_PATH="$LIBFGCM/phy${physique}/ecrad" 488 fi 489 490 if [[ "$dust" == "true" ]] 491 then 492 CPP_KEY="$CPP_KEY CPP_Dust" 493 DUST_PATH="$LIBFGCM/phy${physique}/Dust" 494 fi 495 496 if [[ "$strataer" == "true" ]] 497 then 498 CPP_KEY="$CPP_KEY CPP_StratAer" 499 STRATAER_PATH="$LIBFGCM/phy${physique}/StratAer" 500 fi 501 502 INCLUDE="$INCLUDE ${NETCDF95_INCDIR}" 503 LIB="$LIB ${NETCDF95_LIBDIR} ${NETCDF95_LIB}" 504 505 if [[ $io == ioipsl ]] 506 then 507 CPP_KEY="$CPP_KEY CPP_IOIPSL" 508 INCLUDE="$INCLUDE ${IOIPSL_INCDIR}" 509 LIB="$LIB ${IOIPSL_LIBDIR} ${IOIPSL_LIB}" 510 elif [[ $io == mix ]] 511 then 512 # For now, xios implies also using ioipsl 513 CPP_KEY="$CPP_KEY CPP_IOIPSL CPP_XIOS" 514 INCLUDE="$INCLUDE ${IOIPSL_INCDIR} ${XIOS_INCDIR}" 515 LIB="$LIB ${IOIPSL_LIBDIR} ${IOIPSL_LIB} ${XIOS_LIBDIR} ${XIOS_LIB}" 516 elif [[ $io == xios ]] 517 then 518 # For now, xios implies also using ioipsl 519 CPP_KEY="$CPP_KEY CPP_IOIPSL CPP_XIOS CPP_IOIPSL_NO_OUTPUT" 520 INCLUDE="$INCLUDE ${IOIPSL_INCDIR} ${XIOS_INCDIR}" 521 LIB="$LIB ${IOIPSL_LIBDIR} ${IOIPSL_LIB} ${XIOS_LIBDIR} ${XIOS_LIB}" 522 fi 523 524 if [[ "$cosp" == "true" ]] 525 then 526 CPP_KEY="$CPP_KEY CPP_COSP" 527 COSP_PATH="$LIBFGCM/phylmd/cosp" 528 # LIB="${LIB} -l${LIBPREFIX}cosp" 529 fi 530 531 if [[ "$cosp2" == "true" ]] 532 then 533 CPP_KEY="$CPP_KEY CPP_COSP2" 534 COSP_PATH="$LIBFGCM/phylmd/cosp2" 535 # LIB="${LIB} -l${LIBPREFIX}cosp2" 536 fi 537 538 if [[ "$cospv2" == "true" ]] 539 then 540 CPP_KEY="$CPP_KEY CPP_COSPV2" 541 COSP_PATH="$LIBFGCM/phylmd/cospv2" 542 # LIB="${LIB} -l${LIBPREFIX}cosp2" 543 fi 544 545 if [[ "$cplocninca" == "TRUE" ]] 546 then 547 CPP_KEY="${CPP_KEY} CPP_CPLOCNINCA" 548 fi 549 550 551 INCLUDE="$INCLUDE ${NETCDF_INCDIR}" 552 LIB="$LIB ${NETCDF_LIBDIR} ${NETCDF_LIB}" 419 fi 420 LIB="${LIB} ${ORCH_LIBDIR} ${orch_libs}" 421 echo "orchidee lib" 422 echo "${LIB}" 423 elif [[ "$veget" != "false" ]]; then 424 echo "Option -v $veget does not exist" 425 echo "Use ./makelmdz_fcm -h for more information" 426 exit 1 427 fi 428 429 if [[ "$inlandsis" = "true" ]]; then 430 CPP_KEY="$CPP_KEY CPP_INLANDSIS" 431 INLANDSIS_PATH="$LIBFGCM/phy${physique}/inlandsis" 432 fi 433 434 if [[ "$rad" = "rrtm" ]]; then 435 CPP_KEY="$CPP_KEY CPP_RRTM" 436 RAD_PATH="$LIBFGCM/phy${physique}/rrtm" 437 fi 438 if [[ "$rad" = "ecrad" ]]; then 439 CPP_KEY="$CPP_KEY CPP_ECRAD" 440 RAD_PATH="$LIBFGCM/phy${physique}/ecrad" 441 fi 442 443 if [[ "$dust" = "true" ]]; then 444 CPP_KEY="$CPP_KEY CPP_Dust" 445 DUST_PATH="$LIBFGCM/phy${physique}/Dust" 446 fi 447 448 if [[ "$strataer" = "true" ]]; then 449 CPP_KEY="$CPP_KEY CPP_StratAer" 450 STRATAER_PATH="$LIBFGCM/phy${physique}/StratAer" 451 fi 452 453 INCLUDE="$INCLUDE ${NETCDF95_INCDIR}" 454 LIB="$LIB ${NETCDF95_LIBDIR} ${NETCDF95_LIB}" 455 456 if [[ $io = ioipsl ]]; then 457 CPP_KEY="$CPP_KEY CPP_IOIPSL" 458 INCLUDE="$INCLUDE ${IOIPSL_INCDIR}" 459 LIB="$LIB ${IOIPSL_LIBDIR} ${IOIPSL_LIB}" 460 elif [[ $io = mix ]]; then 461 # For now, xios implies also using ioipsl 462 CPP_KEY="$CPP_KEY CPP_IOIPSL CPP_XIOS" 463 INCLUDE="$INCLUDE ${IOIPSL_INCDIR} ${XIOS_INCDIR}" 464 LIB="$LIB ${IOIPSL_LIBDIR} ${IOIPSL_LIB} ${XIOS_LIBDIR} ${XIOS_LIB}" 465 elif [[ $io = xios ]]; then 466 # For now, xios implies also using ioipsl 467 CPP_KEY="$CPP_KEY CPP_IOIPSL CPP_XIOS CPP_IOIPSL_NO_OUTPUT" 468 INCLUDE="$INCLUDE ${IOIPSL_INCDIR} ${XIOS_INCDIR}" 469 LIB="$LIB ${IOIPSL_LIBDIR} ${IOIPSL_LIB} ${XIOS_LIBDIR} ${XIOS_LIB}" 470 fi 471 472 if [[ "$cosp" = "true" ]]; then 473 CPP_KEY="$CPP_KEY CPP_COSP" 474 COSP_PATH="$LIBFGCM/phylmd/cosp" 475 fi 476 477 if [[ "$cosp2" = "true" ]]; then 478 CPP_KEY="$CPP_KEY CPP_COSP2" 479 COSP_PATH="$LIBFGCM/phylmd/cosp2" 480 fi 481 482 if [[ "$cospv2" = "true" ]]; then 483 CPP_KEY="$CPP_KEY CPP_COSPV2" 484 COSP_PATH="$LIBFGCM/phylmd/cospv2" 485 fi 486 487 if [[ "$cplocninca" = "TRUE" ]]; then 488 CPP_KEY="${CPP_KEY} CPP_CPLOCNINCA" 489 fi 490 491 492 INCLUDE="$INCLUDE ${NETCDF_INCDIR}" 493 LIB="$LIB ${NETCDF_LIBDIR} ${NETCDF_LIB}" 494 } 495 496 cpp_keys_and_include_mod_path 497 553 498 554 499 ########################################################################
Note: See TracChangeset
for help on using the changeset viewer.