| 1 | #!/bin/bash |
|---|
| 2 | set -eu |
|---|
| 3 | |
|---|
| 4 | # sanity check: do we have the required argument ? |
|---|
| 5 | if (( $# < 1 )) || (( $# > 3 )); then |
|---|
| 6 | echo "Wrong number of parameters in $0 !!!" |
|---|
| 7 | echo " Usage:" |
|---|
| 8 | echo " $0 [im] [jm] lm" |
|---|
| 9 | echo " where im, jm and lm are the dimensions" |
|---|
| 10 | exit 1 |
|---|
| 11 | fi |
|---|
| 12 | |
|---|
| 13 | if ( (( $1 % 8 != 0 )) && (( $# == 3 )) || (( $1 == 1 )) ); then |
|---|
| 14 | echo "The number of longitudes must be a multiple of 8." |
|---|
| 15 | echo "See the files dyn3d/groupe.F and dyn3dmem/groupe_loc.F." |
|---|
| 16 | exit 1 |
|---|
| 17 | fi |
|---|
| 18 | |
|---|
| 19 | # build "fichnom", the relevant 'dimensions.im.jm.lm' file name |
|---|
| 20 | list="" |
|---|
| 21 | for i in "$@"; do list=$list.$i; done |
|---|
| 22 | fichdim=dimensions${list} |
|---|
| 23 | |
|---|
| 24 | if [[ ! -f $fichdim ]]; then |
|---|
| 25 | # assign values of im, jm and lm |
|---|
| 26 | if [ $# -ge 3 ]; then |
|---|
| 27 | im=$1 |
|---|
| 28 | jm=$2 |
|---|
| 29 | lm=$3 |
|---|
| 30 | ndm=1 |
|---|
| 31 | elif [ $# -ge 2 ]; then |
|---|
| 32 | im=1 |
|---|
| 33 | jm=$1 |
|---|
| 34 | lm=$2 |
|---|
| 35 | ndm=1 |
|---|
| 36 | elif [ $# -ge 1 ]; then |
|---|
| 37 | im=1 |
|---|
| 38 | jm=1 |
|---|
| 39 | lm=$1 |
|---|
| 40 | ndm=1 |
|---|
| 41 | fi |
|---|
| 42 | |
|---|
| 43 | # since the file doesn't exist, we create it |
|---|
| 44 | cat << EOF > "$fichdim" |
|---|
| 45 | ! This module was automatically generated during the installation of LMDZ |
|---|
| 46 | ! It contains the spatial resolution of the model |
|---|
| 47 | |
|---|
| 48 | MODULE dimensions_mod |
|---|
| 49 | IMPLICIT NONE; PRIVATE |
|---|
| 50 | PUBLIC iim, jjm, llm, ndm |
|---|
| 51 | ! ndm is computed such that iim=2**ndm |
|---|
| 52 | |
|---|
| 53 | INTEGER, PARAMETER :: iim = $im, jjm = $jm, llm = $lm, ndm = $ndm |
|---|
| 54 | END MODULE dimensions_mod |
|---|
| 55 | EOF |
|---|
| 56 | fi |
|---|
| 57 | |
|---|
| 58 | # remove 'old' dimensions_mod.f90 file (if any) and replace it with new one |
|---|
| 59 | if [[ -f ../dimensions_mod.f90 ]]; then |
|---|
| 60 | rm ../dimensions_mod.f90 |
|---|
| 61 | fi |
|---|
| 62 | tar cf - "$fichdim" | ( cd .. ; tar xf - ; mv "$fichdim" dimensions_mod.f90 ) |
|---|
| 63 | # line above is a trick to preserve time of creation of dimensions_mod.f90 files |
|---|