Ignore:
Timestamp:
Aug 1, 2024, 5:58:40 PM (7 weeks ago)
Author:
abarral
Message:

Add 1D and iso bench
Better svn branch detection for lmdz
Add script to test convergence locally
Lint check_version.sh

File:
1 edited

Legend:

Unmodified
Added
Removed
  • BOL/script_install_amaury/install_lmdz.sh

    r5083 r5156  
    4949}
    5050
     51function get_svn_branch {
     52  local url=$1
     53  local rev=$2
     54  local res
     55
     56  res=$(svn log -v -q "$url" -r "$rev" -l 1 | cut -d "/" -f -4)
     57  if echo "$res" | grep -q "/trunk/"; then
     58    res=$(echo "$res" | grep "/trunk/" | head -1 | cut -d "/" -f 2-3)
     59  elif echo "$res" | grep -q "/branches/"; then
     60    res=$(echo "$res" | grep "/branches/" | head -1 | cut -d "/" -f 2-4)
     61  else
     62    echo "Could not determine svn branch for $url, r=$rev"
     63  fi
     64  echo "$res"
     65}
     66
    5167function set_default_params {
    5268    # Valeur par défaut des parametres
     
    6177    benchphysiq=""
    6278    compphysiq="lmd"
     79    is_1D="n"
     80    fortran_file="gcm"
    6381
    6482    parallel="none"
     
    249267    if [[ $arch_dir = "" ]]; then
    250268      arch_dir="$MODEL/modipsl/config/IPSLCM7/ARCH/";
    251     elif ! readlink -fe "$arch_dir"; then
     269    elif ! readlink -fe "$arch_dir" >/dev/null; then
    252270      echo "STOP: no arch dir <$arch_dir>"; exit 1
     271    fi
     272
     273    if ! (echo "$grid_resolution" | grep -q "x"); then
     274      is_1D="y"
     275      fortran_file="lmdz1d"
    253276    fi
    254277}
     
    313336        echo "problem installing with compiler $compiler"; exit 1
    314337    fi
    315     \rm tt a.out tt.f90
     338    rm tt a.out tt.f90
    316339}
    317340
     
    320343
    321344    mkdir -p "$MODEL"
    322     MODEL=$(readlink -e -f "$MODEL"); echo "$MODEL"  # absolute path
     345    MODEL=$(readlink -e -f "$MODEL"); echo "MODEL: $MODEL"  # absolute path
    323346    if [[ ! -d "$MODEL/modipsl" ]]; then
    324347        echo "##########################################################"
    325         echo "Download a slightly modified version of LMDZ"
     348        echo "Downloading a slightly modified version of modipsl+LMDZ"
    326349        echo "##########################################################"
    327350        cd "$MODEL"
     
    332355        gunzip "modipsl.$version.tar.gz" &>> get.log
    333356        tar xf "modipsl.$version.tar" &>> get.log
    334         \rm "modipsl.$version.tar"
     357        rm "modipsl.$version.tar"
    335358        cd - &> /dev/null
    336359    fi
     
    463486
    464487    if $ncdf_compiler -I"$ncdfdir"/include test_netcdf90.f90 -L"$ncdfdir"/lib -lnetcdff -lnetcdf -Wl,-rpath="$ncdfdir"/lib && ./a.out; then
    465         \rm test_netcdf90.f90 a.out
     488        rm test_netcdf90.f90 a.out
    466489    else
    467490        cat <<EOF
     
    615638            local lmdzbranch
    616639            echo "Fetching LMDZ $svn_lmdz from the repository"
    617             lmdzbranch=$(svn log -v -q https://svn.lmd.jussieu.fr/LMDZ -r "$svn_lmdz" | grep LMDZ | head -1 | sed -e 's:trunk/.*$:trunk:' | awk '{print $2}')
     640            lmdzbranch=$(get_svn_branch "https://svn.lmd.jussieu.fr/LMDZ" "$svn_lmdz")
     641            echo "branch is $lmdzbranch"
    618642            cd "$MODEL/modipsl/modeles"
    619643            rm -rf LMD*
    620             svn co -r "$svn_lmdz" "https://svn.lmd.jussieu.fr/LMDZ$lmdzbranch" LMDZ
     644            svn co -r "$svn_lmdz" "https://svn.lmd.jussieu.fr/LMDZ/$lmdzbranch" LMDZ
    621645            cd - > /dev/null
    622646        fi
     
    636660
    637661    if [[ $used_lmdz_rev -le 4185 ]]; then
    638         exe_name="bin/gcm_${grid_resolution}_phy${compphysiq}_${suff_para}${suff_orc}${suff_aer}${suff_iso}.e"
     662        exe_name="bin/${fortran_file}_${grid_resolution}_phy${compphysiq}_${suff_para}${suff_orc}${suff_aer}${suff_iso}.e"
    639663    else
    640         exe_name="bin/gcm_${grid_resolution}_phy${compphysiq}_${rad}${suff_para}${suff_orc}${suff_aer}${suff_iso}.e"
     664        exe_name="bin/${fortran_file}_${grid_resolution}_phy${compphysiq}_${rad}${suff_para}${suff_orc}${suff_aer}${suff_iso}.e"
    641665    fi
    642666
     
    660684    makelmdz="makelmdz_fcm $optim_flag -arch $arch -j $make_j"
    661685    local para_compile_opt="-mem -parallel $parallel"; if [[ $parallel = "none" ]]; then para_compile_opt=""; fi
    662     echo "$jobcmd ./$makelmdz $opt_rad $opt_cosp $opt_makelmdz_xios $opt_aer $opt_inlandsis $opt_isotopes -p $compphysiq -d ${grid_resolution} -v $fcm_veget_version $para_compile_opt gcm" > compile.sh
     686    echo "$jobcmd ./$makelmdz $opt_rad $opt_cosp $opt_makelmdz_xios $opt_aer $opt_inlandsis $opt_isotopes -p $compphysiq -d ${grid_resolution} -v $fcm_veget_version $para_compile_opt $fortran_file" > compile.sh
    663687    echo "Compiling lmdz using $(\cat compile.sh) (log: $lmdzlog) $(date)"
    664688    chmod +x ./compile.sh
     
    677701
    678702function run_bench {
     703    local bench_cmd="./bench.sh"
     704
    679705    cd "$MODEL/modipsl/modeles/LMDZ"*
    680706
     
    683709        ./init.sh
    684710    elif [[ $bench = 1 ]]; then
    685         \rm -rf "BENCH${grid_resolution}"
    686         local bench=bench_lmdz_${grid_resolution}
     711      rm -rf "BENCH${grid_resolution}"
     712      local bench=bench_lmdz_${grid_resolution}
     713      if [[ $compphysiq = "lmdiso" ]]; then bench=bench_lmdz_iso_${grid_resolution}; fi
     714
     715      if [[ $is_1D = "y" ]] ; then  # 1D
     716        myget "1D/1D.tar.gz"
     717        mkdir -p "BENCH${grid_resolution}"
     718        tar xf "1D.tar.gz" -C "BENCH${grid_resolution}" --strip-components=1
     719        cd "BENCH${grid_resolution}"
     720        # Below: ugly, but until we rewrite the 1D case...
     721        sed -i'' -e "s:^listecas=.*$:listecas=ARMCU/REF:" -e "s:cd \$local/bin ; ./compile -L \$L:#cd \$local/bin ; ./compile -L \$L:" \
     722            -e "s:./compile -L \$llm:#./compile -L \$llm:" -e "s:ln -sf \$bin/\\\\\${main}\${suffixe}.e .:ln -sf ../../../../../$exe_name \\\\\${main}\${suffixe}.e:" -e "s:gzip listing:cp listing restartphy.nc ../../../../; exit 0:" \
     723            run.sh
     724        cp "../$exe_name" bin/
     725        bench_cmd="./run.sh -rad $rad"  # suppress ferret commands that launch after bench is "over"
     726      else
    687727        myget "3DBenchs/$bench.tar.gz"
    688         tar xf "$bench.tar.gz"
     728        mkdir "BENCH${grid_resolution}"
     729        tar xf "$bench.tar.gz" -C "BENCH${grid_resolution}" --strip-components=1
    689730
    690731        if [[ $cosp = "v1" || $cosp = "v2" ]]; then
     
    786827        cd "BENCH${grid_resolution}"
    787828
    788         local bench_cmd="./bench.sh"
    789829        if [[ ${parallel:0:3} = "mpi" ]]; then
    790830            # Lancement avec deux procs mpi et 2 openMP
     
    822862            echo "./gcm.e &> listing" > bench.sh
    823863        fi
     864        chmod +x bench.sh
    824865        # Getting orchidee stuff
    825866        if [[ $veget = 'CMIP6' || $veget = "orch2.0" ]]; then  # TODO once we have a 2.2 bench, add it here (or in planned separate bench script)
     
    862903        fi
    863904
     905        fi
     906
    864907        if [[ -f ../arch.env ]]; then source ../arch.env; fi
    865908
    866         echo "EXECUTION DU BENCH"
     909        echo "STARTING BENCH"
    867910        date
    868911        if (! $bench_cmd &> out.bench) || ! (tail -n 1 listing | grep "Everything is cool"); then
Note: See TracChangeset for help on using the changeset viewer.