Changeset 2365


Ignore:
Timestamp:
Aug 21, 2017 2:59:59 PM (4 years ago)
Author:
kanani
Message:

Vertical nesting implemented (SadiqHuq?)

Location:
palm/trunk
Files:
1 added
17 edited

Legend:

Unmodified
Added
Removed
  • palm/trunk/SCRIPTS/mbuild

    r2316 r2365  
    2727# -----------------
    2828# $Id$
     29# Added lckea & lckeam. KIT/IMK-IFU Garmisch cluster. LRZ (SadiqHuq)
     30#
     31# 2316 2017-07-20 07:53:42Z maronga
    2932# Removed qmake block as mrungui now runs as a python script
    3033#
     
    531534       # DETERMINE IP-ADDRES OF THE REMOTE-HOST
    532535    case  $remote_host  in
     536        (lcbwuni)        remote_address="129.13.82.89";;
    533537        (lcbullhh)       remote_address=136.172.50.13;;
    534538        (lccrayb)        remote_address=130.73.233.1;;
     
    541545        (lckiaps)        remote_address=118.128.66.223;;
    542546        (lckyut)         remote_address=133.5.4.37;;
     547        (lclrz)          remote_address=129.187.20.240;;
     548        (lckea*)         remote_address=172.27.80.109;;
    543549        (lctit)          remote_address=10.1.6.170;;
    544550        (lcxe6)          remote_address=129.177.20.113;;
     
    547553        (ibmkisti)       remote_address=150.183.146.24;;
    548554        (ibmku)          remote_address=133.5.4.129;;
     555        (ibmmuc)         remote_address=129.187.11.197;;
    549556        (ibms)           remote_address=150.183.5.101;;
    550557        (nech)           remote_address=136.172.44.192;;
     
    783790       elif [[ $(echo $remote_host | cut -c1-3) = ibm  &&  $(echo $string | cut -c1-3) = ibm ]]
    784791       then
    785           cpp_options="${cpp_options},-D__ibm"
     792          if [[ $remote_host = ibmmuc ]]
     793          then
     794             cpp_options="${cpp_options}"
     795          else
     796             cpp_options="${cpp_options},-D__ibm"
     797          fi
    786798       elif [[ $(echo $remote_host | cut -c1-3) = nec  &&  $(echo $string | cut -c1-3) = nec ]]
    787799       then
     
    790802          if [[ $(echo $remote_host | cut -c1-3) = ibm ]]
    791803          then
    792              cpp_options="${cpp_options},-D__$string"
     804             if [[ $remote_host = ibmmuc ]]
     805             then
     806                cpp_options="${cpp_options} -D__parallel"
     807             else
     808                cpp_options="${cpp_options},-D__$string"
     809             fi
    793810          else
    794811             cpp_options="$cpp_options -D__$string "
  • palm/trunk/SCRIPTS/mrun

    r2303 r2365  
    2727# -----------------
    2828# $Id$
     29# Added lckea & lckeam. KIT/IMK-IFU Garmisch cluster. LRZ (SadiqHuq)
     30# Vertical grid nesting: set vnested_mode. -N Procs for fine and coarse grid.
     31#
     32# 2303 2017-07-04 12:26:18Z raasch
    2933# bugfix: setting default value for write_binary
    3034#
     
    334338 module_calls=""
    335339 mrun_script_name=$mc
     340 vnested_dist=""
     341 vnested_mode="vnested_twi"
    336342 netcdf_inc=""
    337343 netcdf_lib=""
     
    341347 numprocs_atmos=0
    342348 numprocs_ocean=0
     349 numprocs_crse=0
     350 numprocs_fine=0
    343351 OOPT=""
    344352 openmp=false
     
    373381 run_coupled_model=false
    374382 run_mode=""
     383 run_vnested_model=false
    375384 dashes="  ----------------------------------------------------------------------------"
    376385 silent=false
     
    475484    # READ SHELLSCRIPT-OPTIONS AND REBUILD THE MRUN-COMMAND STRING (MC),
    476485    # WHICH WILL BE USED TO START RESTART-JOBS
    477  while  getopts  :a:bBc:Cd:Fg:G:h:H:i:kK:m:M:n:o:O:p:P:q:r:R:s:St:T:u:U:vw:xX:yY:zZ option
     486 while  getopts  :a:bBc:Cd:Fg:G:h:H:i:kK:m:M:n:N:o:O:p:P:q:r:R:s:St:T:u:U:vw:xX:yY:zZ option
    478487 do
    479488   case  $option  in
     
    495504       (M)   makefile=$OPTARG; mc="$mc -M$OPTARG";;
    496505       (n)   node_usage=$OPTARG; mc="$mc -n$OPTARG";;
     506       (N)   run_vnested_model=true; vnested_dist=$OPTARG; mc="$mc -N'$OPTARG'";;
    497507       (o)   output_list=$OPTARG; mc="$mc -o'$OPTARG'";;
    498508       (O)   use_openmp=true; threads_per_task=$OPTARG; mc="$mc -O$OPTARG";;
     
    550560    printf "\n        -M    Makefile name                            Makefile"
    551561    printf "\n        -n    node usage (shared/not_shared)           depending on -h"
     562    printf "\n        -N    Vertical grid nesting. Number of"
     563    printf "\n              PE for Coarse and Fine grid"
    552564    printf "\n        -o    OUTPUT control list                      \"\" "
    553565    printf "\n        -O    threads per openMP task                  ---"
     
    713725 fi
    714726
     727      # NESTING (-N) selected and vnesting_mode specified
     728 if [[ $run_vnested_model = true ]]
     729 then
     730
     731    if  [[ -n $vnested_dist ]]
     732    then
     733
     734       numprocs_crse=`echo $vnested_dist | cut -d" " -s -f1`
     735       numprocs_fine=`echo $vnested_dist | cut -d" " -s -f2`
     736
     737       if (( $numprocs_crse + $numprocs_fine != $numprocs ))
     738       then
     739
     740          printf "\n  +++ number of processors does not fit to specification by \"-N\"."
     741          printf "\n      PEs (total)     : $numprocs"
     742          printf "\n      PEs (Coarse)    : $numprocs_crse"
     743          printf "\n      PEs (Fine)      : $numprocs_fine"
     744          locat=vnesting; exit
     745
     746       fi
     747
     748    else
     749
     750          printf "\n  +++ "Specify PE for fine and coarse grid: -N "nCGPE nFGPE \"-N\"."
     751          locat=vnesting; exit
     752
     753    fi
     754    vnested_dist=`echo "$numprocs_crse $numprocs_fine"`
     755 fi
     756
    715757    # SAVE VALUES OF MRUN-OPTIONS SICHERN IN ORDER TO OVERWRITE
    716758    # THOSE VALUES GIVEN IN THE CONFIGURATION-FILE
     
    11951237        (ibmh)       queue=cluster;;
    11961238        (ibmkisti)   queue=class.32plus;;
     1239        (ibmmuc*)    queue=test;;
     1240        (lcbwuni)    queue=develop;;
    11971241        (lcbullhh)   queue=compute;;
    11981242        (lccrayb)    queue=mpp1q;;
     
    12031247        (lckyuh)     queue=fx-single;;
    12041248        (lckyut)     queue=cx-single;;
     1249        (lclrz)      queue=mpp2;;
    12051250        (lctit)      queue=S;;
    12061251        (unics)      queue=unics;;
     
    17641809
    17651810       # SET PREPROCESSOR-DIRECTIVES TO SELECT OPERATING SYSTEM SPECIFIC CODE
    1766     if [[ $(echo $localhost | cut -c1-3) = ibm ]]
     1811    if [[ $(echo $localhost | cut -c1-3) = ibm && $localhost != ibmmuc* ]]
    17671812    then
    17681813       cpp_options="${cpp_options},-D__ibm=__ibm"
     
    17781823
    17791824       # SET DIRECTIVES GIVEN BY OPTION -K (E.G. parallel)
    1780     if [[ $(echo $localhost | cut -c1-3) = ibm ]]
     1825    if [[ $(echo $localhost | cut -c1-3) = ibm && $localhost != ibmmuc ]]
    17811826    then
    17821827       [[ -n $cond1 ]]  &&  cpp_options="${cpp_options},-D__$cond1=__$cond1"
     
    18931938    fi
    18941939 fi
    1895  TEMPDIR=$tmp_user_catalog/${usern}.$kennung
    1896 
     1940
     1941if [[ $localhost = ibmmuc* ]]
     1942then
     1943   TEMPDIR=$tmp_user_catalog/${USER}.$kennung
     1944else
     1945   TEMPDIR=$tmp_user_catalog/${usern}.$kennung
     1946fi
    18971947
    18981948    # DETERMINE THE NAME OF THE DIRECTORY WHICH IS USED TO TEMPORARILY STORE DATA FOR RESTART RUNS
     
    27922842                   then
    27932843                      /opt/optibm/HPM_2_4_1/bin/hpmcount  a.out
     2844                   elif [[  $localhost = ibmmuc* ]]
     2845                   then
     2846                      ulimit -c unlimited        # only for debgingg
     2847                      echo $MP_NODES        > ~/job_queue/hostfile.$kennung
     2848                      echo $MP_PROCS       >> ~/job_queue/hostfile.$kennung
     2849                      cat $LOADL_HOSTFILE  >> ~/job_queue/hostfile.$kennung
     2850                      export MP_NODES=$nodes
     2851                      export MP_PROCS=$numprocs
     2852                      # export MPI_SINGLE_THREAD=no   # LRZ NetCDF
     2853                      # export MP_TASKS_PER_NODE=$tasks_per_node
     2854                      echo "Resource Info: "
     2855                      echo "numprocs:         " $numprocs " MP_PROCS " $MP_PROCS
     2856                      echo "nodes:            " $nodes    " MP_NODES " $MP_NODES
     2857                      echo "tasks_per_node:   " $tasks_per_node
     2858                      echo "threads_per_task: " $threads_per_task
     2859                      export OMP_NUM_THREADS=1
     2860                      source /lrz/sys/share/modules/init/bash
     2861                      module li
     2862                      echo "runfile_atmos"
     2863                     
     2864                      if [[ $run_vnested_model = true ]]
     2865                      then
     2866                         
     2867                         printf "\n      Nested run ($numprocs_crse Coarse, $numprocs_fine Fine)"
     2868                         printf "\n      using $nested_mode nesting"
     2869                         printf "\n\n"
     2870                         
     2871                         echo "$vnested_mode $numprocs_crse $numprocs_fine"  >  runfile_atmos
     2872                         
     2873                         poe   ./a.out  <  runfile_atmos
     2874                         # mpiexec -n $numprocs  ./a.out  <  runfile_atmos
     2875                      else
     2876                         echo "precursor_atmos"  >  runfile_atmos
     2877                         poe   ./a.out -proc $numprocs -nodes  $nodes <  runfile_atmos 
     2878                         # mpiexec -n $numprocs  ./a.out  <  runfile_atmos 
     2879                     
     2880                      fi
    27942881                   else
    27952882                      if [[ $run_coupled_model = false ]]
     
    28992986                   printf "\n      threads per task: $threads_per_task  stacksize: unlimited"
    29002987                fi
    2901                 if [[ $run_coupled_model = false ]]
     2988                if [[ $run_coupled_model = false && $run_vnested_model = false ]]
    29022989                then
    29032990                   if [[ "$ocean_file_appendix" = true ]]
     
    29483035                   then
    29493036                      mpirun_rsh -hostfile $PBS_NODEFILE -np `cat $PBS_NODEFILE | wc -l` a.out  < runfile_atmos
    2950 
     3037                   elif [[ $host = lclrz || $host = lcbwuni  ]]
     3038                   then
     3039                      mpiexec  -n $ii  a.out  <  runfile_atmos  $ROPTeS
     3040                   elif [[ $host = lckea* ]]
     3041                   then
     3042                      srun  -n $ii  a.out  <  runfile_atmos  $ROPTeS
    29513043                   elif [[ $host = lckiaps ]]
    29523044                   then
     
    29593051                   fi
    29603052
    2961                 else
    2962 
     3053                elif [[ $run_coupled_model = true ]]
     3054                then
    29633055                       # COUPLED RUN
    29643056                   (( iia = $numprocs_atmos / $threads_per_task ))
     
    29923084                   wait
    29933085
     3086
     3087                elif [[ $run_vnested_model = true ]]
     3088                then
     3089                    printf "\n      Vertical Nested run ($numprocs_crse Coarse, $numprocs_fine Fine)"
     3090                    printf "\n      using $vnested_mode vnesting"
     3091                    printf "\n\n"
     3092
     3093                     echo "$vnested_mode $numprocs_crse $numprocs_fine"  >  runfile_atmos
     3094
     3095                     if [[  $host = lcbwuni  ||  $host = lclrz*  ]]
     3096                     then
     3097                         mpiexec  -n $ii  a.out  <  runfile_atmos  $ROPTeS
     3098                     elif [[ $host = lckea*  ]]
     3099                     then
     3100                         srun  -n $ii  a.out  <  runfile_atmos  $ROPTeS
     3101                     else
     3102                        mpirun   -np $numprocs  ./a.out  $ROPTS  < runfile_atmos
     3103                     fi
     3104                     wait
    29943105                fi
    29953106
     
    36573768    [[ "$ocean_file_appendix" = true ]]  &&  mrun_com=${mrun_com}" -y"
    36583769    [[ $run_coupled_model = true ]]  &&  mrun_com=${mrun_com}" -Y \"$coupled_dist\""
     3770    [[ $run_vnested_model  = true ]]  &&  mrun_com=${mrun_com}" -N \"$vnested_dist\""
    36593771    [[ "$check_namelist_files" = false ]]  &&  mrun_com=${mrun_com}" -z"
    36603772    [[ "$combine_plot_fields" = false ]]  &&  mrun_com=${mrun_com}" -Z"
  • palm/trunk/SCRIPTS/subjob

    r2295 r2365  
    2828# -----------------
    2929# $Id$
     30# Added lckea & lckeam. KIT/IMK-IFU Garmisch cluster. LRZ (SadiqHuq)
     31#
     32# 2295 2017-06-27 14:25:52Z raasch
    3033# adjustments for using lcgeohu (cirrus @ HUB)
    3134#
     
    252255     (inferno)               local_address=130.75.105.5;   local_host=lcmuk;;
    253256     (irifi)                 local_address=130.75.105.104; local_host=lcmuk;;
     257   # (i*)                    local_address=129.187.11.197; local_host=ibmmuc;;
    254258     (jaboticaba)            local_address=150.163.25.181; local_host=lcbr;;
     259     (kea*)                  local_address=172.27.80.109;  local_host=lckeal;;
    255260     (sno)                   local_address=130.75.105.113; local_host=lcmuk;;
    256261     (kuma)                  local_address=130.75.105.115; local_host=lcmuk;;
    257262     (levanto)               local_address=130.75.105.45;  local_host=lcmuk;;
    258263     (login*)                local_address=118.128.66.201; local_host=lckiaps;;
     264   # (login*)                local_address=129.187.11.197; local_host=ibmmuc;;
     265     (lm*)                   local_address=129.187.11.197; local_host=ibmmuc;;
     266     (lx*)                   local_address=129.187.20.240; local_host=lclrz;;
     267     (mpp2*)                 local_address=129.187.20.105; local_host=lclrz;;
    259268     (maestro)               local_address=130.75.105.2;   local_host=lcmuk;;
    260269     (meller)                local_address=134.106.74.155; local_host=lcfor;;
     
    278287     (tc*)                   local_address="ocean";        local_host=lcocean;;
    279288     (t2a*)                  local_address=10.1.6.165;     local_host=lctit;;
     289     (uc1n*)                 local_address=129.13.82.89;   local_host=lcbwuni;;
    280290     (urban*)                local_address=147.46.30.151   local_host=lcsb;;
    281291     (vinessa)               local_address=130.75.105.112; local_host=lcmuk;;
     
    409419        (ibmku)   queue=s4; remote_address=133.5.4.129; submcom=/usr/local/bin/llsubmit;;
    410420        (ibms)    queue=p_normal; remote_address=150.183.5.101; submcom=/usr/lpp/LoadL/full/bin/llsubmit;;
     421        (ibmmuc)  remote_address=129.187.11.197; submcom=/usr/bin/llsubmit;;
     422        (lcbwuni) queue=develop; remote_address=129.13.82.89; submcom=/opt/moab/bin/msub;;
    411423        (lcbullhh)    queue=compute; remote_address=136.172.50.13; submcom=/usr/bin/sbatch;;
    412424        (lccrayb) queue=mpp1testq; remote_address=130.73.233.1; submcom="/opt/moab/default/bin/msub -E";;
     
    417429        (lckyoto) remote_address=133.3.51.11; submcom=/thin/local/bin/qsub;;
    418430        (lck)     remote_address=165.132.26.61; submcom=/usr/torque/bin/qsub;;
     431        (lckeal)  queue=ivy; remote_address=172.27.80.109; submcom=/usr/bin/sbatch;;
    419432        (lckiaps) remote_address=118.128.66.201; submcom=/opt/pbs/default/bin/qsub;;
    420433        (lckordi) remote_address=210.219.61.8; submcom=/usr/torque/bin/qsub;;
    421434        (lckyuh)  remote_address=133.5.4.33; submcom=/usr/bin/pjsub;;
    422435        (lckyut)  remote_address=133.5.4.37; submcom=/usr/bin/pjsub;;
     436        (lclrz)   remote_address=129.187.20.240; submcom=/usr/bin/sbatch;;
    423437        (lcocean) remote_address="ocean"; submcom=qsub;;
    424438        (lcsb)    remote_address=147.46.30.151; submcom=/usr/torque/bin/qsub;;
     
    459473                     (*)                                     error=true;;
    460474                 esac;;
     475        (ibmmuc*) case  $ndq  in
     476                     (test|micro|general|large|fat|fattest|special|tmp1|tmp2) error=false;;
     477                     (*)                                     error=true;;
     478                 esac;;
    461479        (lcbullhh) case  $ndq  in
    462480                     (compute|compute2|shared)  error=false;;
    463481                     (*)                                     error=true;;
    464482                 esac;;
     483        (lcbwuni) case  $ndq  in
     484                     (develop|singlenode|multinode|verylong|fat) error=false;;
     485                     (*)                                     error=true;;
     486                 esac;;
    465487        (lccrayb) case  $ndq  in
    466488                     (dataq|mpp1q|mpp1testq|mpp2q|mpp2testq|smp1q|smp1testq|specialm1q)   error=false;;
     
    493515        (lckyut) case  $ndq  in
    494516                     (cx-dbg|cx-single|cx-small|cx-middle|cx-large)  error=false;;
     517                     (*)                                     error=true;;
     518                 esac;;
     519        (lclrz) case  $ndq  in
     520                     (mpp1|mpp2|iuv2|myri)                   error=false;;
    495521                     (*)                                     error=true;;
    496522                 esac;;
     
    744770    then
    745771
    746        if [[ $remote_host != ibmkisti ]]
     772       if [[ $remote_host == ibmmuc* ]]
     773       then
     774       cat > $job_to_send << %%END%%
     775
     776#!/bin/bash
     777# @ job_type = parallel
     778# @ job_name = $job_name
     779# @ output = $remote_dayfile
     780# @ error = $remote_dayfile
     781# @ wall_clock_limit = $timestring
     782$class
     783$mcm_affinity_options
     784$task_affinity
     785$notify_user
     786# @ network.MPI = sn_all,not_shared,us
     787# @ notification = always
     788# @ energy_policy_tag = table_kit_ifu
     789# @ minimize_time_to_solution = yes
     790# @ node = $nodes
     791# @ total_tasks = $numprocs
     792# @ node_topology = island
     793# @ island_count = 1,2
     794# @ environment = LD_LIBRARY_PATH=/lrz/sys/libraries/netcdf/4.2.1.1_impi4/lib:/lrz/sys/libraries/hdf5/1.8.15/ibmmpi/lib:/lrz/sys/libraries/fftw/3.3.3/avx/lib/
     795# @ queue
     796
     797%%END%%
     798
     799       elif [[ $remote_host != ibmkisti ]]
    747800       then
    748801
     
    12481301       submcom="$submcom -W group_list=$group_number -N $job_name -l walltime=$timestring -l select=$nodes:ncpus=$processes_per_node:mpiprocs=$tasks_per_node:mem=${Memory}gb -l place=scatter -o $remote_dayfile -j oe -et 1 -q $queue "
    12491302    fi
     1303
     1304 elif [[ $remote_host = lclrz ]]
     1305 then
     1306       cat > $job_to_send << %%END%%
     1307#!/bin/bash
     1308#SBATCH -J $job_name
     1309#SBATCH -t $timestring
     1310#SBATCH -N $nodes
     1311#SBATCH --ntasks-per-node=$processes_per_node
     1312#SBATCH --get-user-env
     1313#SBATCH -o $remote_dayfile
     1314#SBATCH -e $remote_dayfile
     1315#SBATCH --mail-user=${email_notification}
     1316#SBATCH --clusters=$queue
     1317
     1318$init_cmds
     1319
     1320$module_calls
     1321
     1322%%END%%
     1323
     1324 elif [[ $remote_host = lckea* ]]
     1325 then
     1326       keal_tasks_per_core=1
     1327
     1328       if [[ $queue = haswell || $queue = ivy* ]]
     1329       then
     1330          if (( tasks_per_node > 20 ))
     1331          then
     1332             keal_tasks_per_core=2
     1333          fi
     1334       fi
     1335
     1336       cat > $job_to_send << %%END%%
     1337#!/bin/bash
     1338#SBATCH -J $job_name
     1339#SBATCH -t $timestring
     1340#SBATCH -N $nodes
     1341#SBATCH --ntasks-per-node=$processes_per_node
     1342#SBATCH --ntasks-per-core=$keal_tasks_per_core
     1343#SBATCH --mem-per-cpu=${memory}mb
     1344#SBATCH --get-user-env
     1345#SBATCH -o $remote_dayfile
     1346#SBATCH -e $remote_dayfile
     1347#SBATCH --mail-user=${email_notification}
     1348#SBATCH --mail-type=ALL
     1349#SBATCH --partition=$queue
     1350
     1351export MV2_ENABLE_AFFINITY=0
     1352
     1353$init_cmds
     1354
     1355$module_calls
     1356
     1357%%END%%
     1358
     1359 elif [[ $remote_host=lcbwuni ]]
     1360 then
     1361    if [[ $email_notification = none ]]
     1362    then
     1363       email_directive=""
     1364    else
     1365       email_directive="#PBS -M $email_notification"
     1366    fi
     1367       cat > $job_to_send << %%END%%
     1368#!/bin/ksh
     1369#PBS -N $job_name
     1370#PBS -l walltime=$timestring
     1371#PBS -l nodes=${nodes}:ppn=$processes_per_node
     1372#PBS -l pmem=${memory}mb
     1373#PBS -m abe
     1374#PBS -o $remote_dayfile
     1375#PBS -j oe
     1376#PBS -q $queue
     1377$email_directive
     1378%%END%%
    12501379
    12511380 else
     
    16151744             eval  $submcom  $job_on_remhost
    16161745          fi
     1746       elif [[ $local_host = lclrz || $local_host = lckea* ]]
     1747       then
     1748          eval  $submcom  $job_on_remhost
     1749       elif [[ $local_host = lcbwuni ]]
     1750       then
     1751          msub  -q $queue $job_on_remhost
    16171752       else
    16181753          qsub  $job_on_remhost
  • palm/trunk/SOURCE/Makefile

    r2359 r2365  
    2525# -----------------
    2626# $Id$
     27# Added dependencies for vertical_nesting_mod
     28#
     29# 2339 2017-08-07 13:55:26Z gronemeier
    2730# corrected timestamp in header
    2831#
     
    409412        user_lpm_init.f90 user_lpm_set_attributes.f90 user_module.f90 \
    410413        user_parin.f90 user_read_restart_data.f90 \
    411         user_spectra.f90 user_statistics.f90 virtual_flight_mod.f90 \
     414        user_spectra.f90 user_statistics.f90 vertical_nesting_mod.f90 virtual_flight_mod.f90 \
    412415        wind_turbine_model_mod.f90 write_3d_binary.f90 write_var_list.f90
    413416
     
    425428# The following line is needed for palm_simple_install, don't remove it!
    426429#to_be_replaced_by_include
    427 
    428 #BOUNDS="-Rbc"  # Array bounds checking. Compromises performance seriously.
    429 
    430 F90 = ftn
    431 #COPT = -DMPI_REAL=MPI_DOUBLE_PRECISION -DMPI_2REAL=MPI_2DOUBLE_PRECISION -D__lc -D__parallel -D__fftw \
    432 #             -D__netcdf -D__netcdf4 -D__netcdf4_parallel -D__nopointer
    433 COPT = -DMPI_REAL=MPI_DOUBLE_PRECISION -DMPI_2REAL=MPI_2DOUBLE_PRECISION -D__lc -D__parallel -D__fftw \
    434              -D__netcdf -D__netcdf4 -D__netcdf4_parallel
    435 
    436 #F90FLAGS = -O2 -e Fm -G2 -rm $(BOUNDS) -hnoomp
    437 F90FLAGS = -O2 -e F -G2 -rm $(BOUNDS) -hnoomp
    438 LDFLAGS = $(F90FLAGS) -dynamic
    439 
    440 # End of include
    441430
    442431.SUFFIXES:
     
    469458average_3d_data.o: modules.o cpulog_mod.o mod_kinds.o exchange_horiz_2d.o land_surface_model_mod.o \
    470459        radiation_model_mod.o urban_surface_mod.o
    471 boundary_conds.o: modules.o mod_kinds.o pmc_interface_mod.o surface_mod.o
     460boundary_conds.o: modules.o mod_kinds.o pmc_interface_mod.o surface_mod.o vertical_nesting_mod.o
    472461buoyancy.o: modules.o mod_kinds.o
    473462calc_mean_profile.o: modules.o mod_kinds.o
     
    480469        microphysics_mod.o model_1d_mod.o netcdf_interface_mod.o plant_canopy_model_mod.o pmc_interface_mod.o \
    481470        radiation_model_mod.o spectra_mod.o subsidence_mod.o synthetic_turbulence_generator_mod.o \
    482         wind_turbine_model_mod.o urban_surface_mod.o
     471        wind_turbine_model_mod.o urban_surface_mod.o vertical_nesting_mod.o
    483472close_file.o: modules.o mod_kinds.o netcdf_interface_mod.o
    484473compute_vpt.o: modules.o mod_kinds.o
     
    508497diffusion_v.o: modules.o mod_kinds.o surface_mod.o
    509498diffusion_w.o: modules.o mod_kinds.o surface_mod.o
    510 diffusivities.o: modules.o mod_kinds.o surface_mod.o
     499diffusivities.o: modules.o mod_kinds.o surface_mod.o vertical_nesting_mod.o
    511500disturb_field.o: modules.o cpulog_mod.o mod_kinds.o random_function_mod.o \
    512501                 random_generator_parallel_mod.o
     
    530519init_advec.o: modules.o mod_kinds.o
    531520init_cloud_physics.o: modules.o mod_kinds.o
    532 init_coupling.o: modules.o mod_kinds.o
     521init_coupling.o: modules.o mod_kinds.o vertical_nesting_mod.o
    533522init_dvrp.o: modules.o mod_kinds.o
    534 init_grid.o: modules.o mod_kinds.o advec_ws.o netcdf_interface_mod.o surface_mod.o
     523init_grid.o: modules.o mod_kinds.o advec_ws.o netcdf_interface_mod.o surface_mod.o vertical_nesting_mod.o
    535524init_masks.o: modules.o mod_kinds.o netcdf_interface_mod.o
    536525init_ocean.o: modules.o eqn_state_seawater.o mod_kinds.o
    537 init_pegrid.o: modules.o mod_kinds.o spectra_mod.o synthetic_turbulence_generator_mod.o
     526init_pegrid.o: modules.o mod_kinds.o spectra_mod.o synthetic_turbulence_generator_mod.o \
     527   vertical_nesting_mod.o
    538528init_pt_anomaly.o: modules.o mod_kinds.o
    539529init_rankine.o: modules.o mod_kinds.o
     
    637627surface_layer_fluxes_mod.o: modules.o mod_kinds.o exchange_horiz_2d.o land_surface_model_mod.o \
    638628        urban_surface_mod.o surface_mod.o
    639 surface_mod.o: modules.o mod_kinds.o init_pegrid.o model_1d_mod.o
     629surface_mod.o: modules.o mod_kinds.o model_1d_mod.o
    640630swap_timelevel.o: modules.o cpulog_mod.o mod_kinds.o land_surface_model_mod.o \
    641631   pmc_interface_mod.o urban_surface_mod.o
     
    648638        spectra_mod.o user_actions.o microphysics_mod.o synthetic_turbulence_generator_mod.o \
    649639        surface_layer_fluxes_mod.o surface_mod.o \
    650         urban_surface_mod.o virtual_flight_mod.o wind_turbine_model_mod.o
     640        urban_surface_mod.o vertical_nesting_mod.o virtual_flight_mod.o wind_turbine_model_mod.o
    651641time_integration_spinup.o: cpulog_mod.o modules.o land_surface_model_mod.o mod_kinds.o radiation_model_mod.o surface_layer_fluxes_mod.o urban_surface_mod.o
    652642time_to_string.o: mod_kinds.o
     
    689679user_spectra.o: modules.o mod_kinds.o spectra_mod.o user_module.o
    690680user_statistics.o: modules.o mod_kinds.o netcdf_interface_mod.o user_module.o
     681vertical_nesting_mod.o: modules.o mod_kinds.o surface_mod.o
    691682virtual_flight_mod.o: modules.o cpulog_mod.o mod_kinds.o netcdf_interface_mod.o user_init_flight.o user_flight.o
    692683wind_turbine_model_mod.o: modules.o cpulog_mod.o mod_kinds.o
  • palm/trunk/SOURCE/boundary_conds.f90

    r2320 r2365  
    2525! -----------------
    2626! $Id$
     27! Vertical grid nesting implemented: exclude setting vertical velocity to zero
     28! on fine grid (SadiqHuq)
     29!
     30! 2320 2017-07-21 12:47:43Z suehring
    2731! Remove unused control parameter large_scale_forcing from only-list
    2832!
     
    166170    USE control_parameters,                                                    &
    167171        ONLY:  bc_pt_t_val, bc_q_t_val, bc_s_t_val, constant_diffusion,        &
    168                cloud_physics, dt_3d, humidity,                                 &
     172               cloud_physics, coupling_mode, dt_3d, humidity,                  &
    169173               ibc_pt_b, ibc_pt_t, ibc_q_b, ibc_q_t, ibc_s_b, ibc_s_t,         &
    170174               ibc_sa_t, ibc_uv_b, ibc_uv_t, inflow_l, inflow_n, inflow_r,     &
     
    237241    ENDIF
    238242
    239     IF ( .NOT. nest_domain )  THEN
    240        w_p(nzt:nzt+1,:,:) = 0.0_wp  ! nzt is not a prognostic level (but cf. pres)
     243!
     244!-- Vertical nesting: Vertical velocity not zero at the top of the fine grid
     245    IF (  .NOT.  nest_domain  .AND.                                            &
     246                 TRIM(coupling_mode) /= 'vnested_fine' )  THEN
     247       w_p(nzt:nzt+1,:,:) = 0.0_wp  !< nzt is not a prognostic level (but cf. pres)
    241248    ENDIF
    242249
  • palm/trunk/SOURCE/check_parameters.f90

    r2354 r2365  
    2525! -----------------
    2626! $Id$
     27! Vertical grid nesting implemented: Check coupling mode. Generate file header
     28! (SadiqHuq)
     29!
     30! 2354 2017-08-17 10:49:36Z schwenkel
    2731! Bugfix correlated to lsm_check_data_output_pr.
    2832! If-statement for following checks is essential, otherwise units for lsm output
     
    561565    USE wind_turbine_model_mod,                                                &
    562566        ONLY:  wtm_check_parameters, wind_turbine
     567    USE vertical_nesting_mod,                                                  &
     568        ONLY:  vnested, vnest_check_parameters
    563569
    564570
     
    603609!> @todo Check if any queries for other coupling modes (e.g. precursor_ocean) are missing
    604610    IF ( coupling_mode /= 'uncoupled'            .AND.  &
     611         coupling_mode /= 'vnested_crse'         .AND.  &
     612         coupling_mode /= 'vnested_fine'         .AND.  &
    605613         coupling_mode /= 'atmosphere_to_ocean'  .AND.  &
    606614         coupling_mode /= 'ocean_to_atmosphere' )  THEN
     
    611619!
    612620!-- Check dt_coupling, restart_time, dt_restart, end_time, dx, dy, nx and ny
    613     IF ( coupling_mode /= 'uncoupled')  THEN
     621    IF ( coupling_mode /= 'uncoupled'  .AND.                                   &
     622         coupling_mode(1:8) /= 'vnested_' )  THEN
    614623
    615624       IF ( dt_coupling == 9999999.9_wp )  THEN
     
    809818    IF ( coupling_mode == 'uncoupled' )  THEN
    810819       coupling_string = ''
     820    ELSEIF ( coupling_mode == 'vnested_crse' )  THEN
     821       coupling_string = ' nested (coarse)'
     822    ELSEIF ( coupling_mode == 'vnested_fine' )  THEN
     823       coupling_string = ' nested (fine)'
    811824    ELSEIF ( coupling_mode == 'atmosphere_to_ocean' )  THEN
    812825       coupling_string = ' coupled (atmosphere)'
     
    38583871    ENDIF
    38593872
     3873!-- Vertical nesting: check fine and coarse grid compatibility for data exchange
     3874    IF ( vnested )  CALL vnest_check_parameters
     3875
    38603876    CALL location_message( 'finished', .TRUE. )
    38613877!
  • palm/trunk/SOURCE/diffusivities.f90

    r2233 r2365  
    2525! -----------------
    2626! $Id$
     27! Vertical grid nesting implemented (SadiqHuq)
     28!
     29! 2233 2017-05-30 18:08:54Z suehring
    2730!
    2831! 2232 2017-05-30 17:47:52Z suehring
     
    108111        ONLY :  bc_h
    109112
     113    USE vertical_nesting_mod,                                                  &
     114        ONLY:  vnest_boundary_conds_khkm, vnest_init
     115
    110116    IMPLICIT NONE
    111117
     
    266272       kh(:,nyn+1,:) = kh(:,nyn,:)
    267273    ENDIF
     274!
     275!-- Vertical nesting: set fine grid eddy viscosity top boundary condition
     276    IF ( vnest_init )  CALL vnest_boundary_conds_khkm
    268277
    269278 END SUBROUTINE diffusivities
  • palm/trunk/SOURCE/init_coupling.f90

    r2298 r2365  
    2525! ------------------
    2626! $Id$
     27! Vertical nesting implemented (SadiqHuq)
     28!
     29! 2298 2017-06-29 09:28:18Z raasch
    2730! MPI2 coupling removed
    2831!
     
    6770    USE pegrid
    6871
     72    USE vertical_nesting_mod
     73
    6974    IMPLICIT NONE
    7075
     
    96101       IF ( TRIM( coupling_mode ) == 'coupled_run' )  THEN
    97102          i = 1
     103       ELSEIF ( TRIM( coupling_mode ) == 'vnested_twi' )  THEN
     104          i = 9
    98105       ELSE
    99106          i = 0
     
    111118    i = bc_data(0)
    112119
    113     IF ( i == 0 ) THEN
     120    IF ( i == 0 )  THEN
    114121       coupling_mode = 'uncoupled'
    115122!
     
    121128          CLOSE ( 90 )
    122129       ENDIF
     130    ELSEIF ( i == 9 )  THEN
     131
     132!
     133!--    Set a flag to identify runs with vertical nesting
     134       vnested = .TRUE.
     135       
     136       comm_inter = MPI_COMM_WORLD
     137       
     138!
     139!--    Split the total available PE's into two groups
     140!--    numprocs for Coarse and Fine Grid are specified via mrun argument -N
     141       IF ( myid < bc_data(1) )  THEN
     142          inter_color     = 0
     143          numprocs        = bc_data(1)
     144          coupling_mode   = 'vnested_crse'
     145       ELSE
     146          inter_color     = 1
     147          numprocs        = bc_data(2)
     148          coupling_mode   = 'vnested_fine'
     149       ENDIF
     150       
     151       CALL MPI_COMM_SPLIT( MPI_COMM_WORLD, inter_color, 0, comm_palm, ierr )
     152       comm2d = comm_palm
     153       
     154       OPEN( 90, FILE='VNESTING_PORT_OPENED', FORM='FORMATTED' )
     155       WRITE ( 90, '(''TRUE'')' )
     156       CLOSE ( 90 )
     157     
    123158    ELSE
    124159       comm_inter = MPI_COMM_WORLD
     
    154189    ENDIF
    155190
     191    IF (  TRIM( coupling_mode ) == 'vnested_fine' )  THEN
     192!
     193!-- Set file extension for vertical nesting
     194       coupling_char = '_N'
     195    ENDIF
     196
    156197 END SUBROUTINE init_coupling
  • palm/trunk/SOURCE/init_grid.f90

    r2319 r2365  
    2525! -----------------
    2626! $Id$
     27! Vertical nesting implemented (SadiqHuq)
     28!
     29! 2319 2017-07-20 17:33:17Z suehring
    2730! Remove print statements
    2831!
     
    250253               canyon_height, canyon_wall_left, canyon_wall_south,             &
    251254               canyon_width_x, canyon_width_y, constant_flux_layer,            &
    252                coupling_char, dp_level_ind_b, dz, dz_max, dz_stretch_factor,   &
     255               coupling_char, coupling_mode,                                   &
     256               dp_level_ind_b, dz, dz_max, dz_stretch_factor,                  &
    253257               dz_stretch_level, dz_stretch_level_index, grid_level, ibc_uv_b, &
    254258               io_blocks, io_group, inflow_l, inflow_n, inflow_r, inflow_s,    &
     
    285289    USE surface_mod,                                                           &
    286290        ONLY:  get_topography_top_index, init_bc
     291
     292    USE vertical_nesting_mod,                                                  &
     293        ONLY:  vnested, vnest_init_grid
    287294
    288295    IMPLICIT NONE
     
    20002007    CALL exchange_horiz( l_wall, nbgp )     
    20012008
     2009!
     2010!-- Vertical nesting: communicate vertical grid level arrays between fine and
     2011!-- coarse grid
     2012    IF ( vnested )  CALL vnest_init_grid
    20022013
    20032014 END SUBROUTINE init_grid
  • palm/trunk/SOURCE/init_pegrid.f90

    r2300 r2365  
    2525! -----------------
    2626! $Id$
     27! Vertical nesting implemented (SadiqHuq)
     28!
     29! 2300 2017-06-29 13:31:14Z raasch
    2730! host-specific settings removed
    2831!
     
    228231        ONLY:  nxl_y, nxl_yd, nxl_z, nxr_y, nxr_yd, nxr_z, nyn_x, nyn_z, nys_x,&
    229232               nys_z, nzb_x, nzb_y, nzb_yd, nzt_x, nzt_yd, nzt_y
     233
     234    USE vertical_nesting_mod,                                                  &
     235        ONLY:  vnested, vnest_init_pegrid_domain, vnest_init_pegrid_rank
    230236
    231237    IMPLICIT NONE
     
    335341
    336342!
     343!-- Vertical nesting: store four lists that identify partner ranks to exchange
     344!-- data
     345    IF ( vnested )  CALL vnest_init_pegrid_rank
     346
     347!
    337348!-- Determine sub-topologies for transpositions
    338349!-- Transposition from z to x:
     
    642653    CALL MPI_TYPE_COMMIT( type_xy, ierr )
    643654
    644     IF ( TRIM( coupling_mode ) /= 'uncoupled' )  THEN
     655    IF ( TRIM( coupling_mode ) /= 'uncoupled' .AND. .NOT. vnested )  THEN
    645656   
    646657!
     
    743754    ENDIF
    744755
     756!
     757!-- Store partner grid point co-ordinates as lists.
     758!-- Create custom MPI vector datatypes for contiguous data transfer
     759    IF ( vnested )  CALL vnest_init_pegrid_domain
    745760
    746761#endif
  • palm/trunk/SOURCE/local_stop.f90

    r2101 r2365  
    2525! -----------------
    2626! $Id$
     27! Vertical nesting implemented (SadiqHuq)
     28!
     29! 2101 2017-01-05 16:42:31Z suehring
    2730!
    2831! 2000 2016-08-20 18:09:15Z knoop
     
    7578        ONLY:  nested_run
    7679
     80    USE vertical_nesting_mod,                                                  &
     81        ONLY:  vnested
     82
    7783#if defined( __parallel )
    7884    IF ( coupling_mode == 'uncoupled' )  THEN
     
    9298          ENDIF
    9399       ENDIF
     100    ELSEIF ( coupling_mode(1:8) == 'vnested_' )  THEN
     101
     102       PRINT*, '+++ local_stop:'
     103       PRINT*, '     model "', TRIM( coupling_mode ), '" terminated'
     104!
     105!--    Abort both coarse and fine grid
     106       CALL MPI_ABORT( MPI_COMM_WORLD, 9999, ierr )
    94107    ELSE
    95108
  • palm/trunk/SOURCE/parin.f90

    r2339 r2365  
    2525! -----------------
    2626! $Id$
     27! Vertical grid nesting: add vnest_start_time to d3par (SadiqHuq)
     28!
     29! 2339 2017-08-07 13:55:26Z gronemeier
    2730! corrected timestamp in header
    2831!
     
    354357        ONLY:  wtm_parin
    355358
     359    USE vertical_nesting_mod,                                                  &
     360        ONLY:  vnest_start_time
    356361
    357362    IMPLICIT NONE
     
    445450             skip_time_do2d_xy, skip_time_do2d_xz, skip_time_do2d_yz,          &
    446451             skip_time_do3d, skip_time_domask, synchronous_exchange,           &
    447              termination_time_needed, z_max_do2d
     452             termination_time_needed, vnest_start_time, z_max_do2d
    448453
    449454
  • palm/trunk/SOURCE/read_var_list.f90

    r2339 r2365  
    2525! -----------------
    2626! $Id$
     27! Vertical grid nesting implemented (SadiqHuq)
     28!
     29! 2339 2017-08-07 13:55:26Z gronemeier
    2730! corrected timestamp in header
    2831!
     
    251254    USE synthetic_turbulence_generator_mod,                                    &
    252255        ONLY:  stg_read_restart_data
     256
     257    USE vertical_nesting_mod,                                                  &
     258        ONLY:  vnest_init
    253259
    254260    IMPLICIT NONE
     
    785791             READ ( 13 )  vg_vertical_gradient_level_ind
    786792          CASE ( 'virtual_flight' )
    787              READ ( 13 ) virtual_flight
     793             READ ( 13 )  virtual_flight
     794          CASE ( 'vnest_init' )
     795             READ ( 13 )  vnest_init
    788796          CASE ( 'volume_flow_area' )
    789797             READ ( 13 )  volume_flow_area
  • palm/trunk/SOURCE/time_integration.f90

    r2320 r2365  
    2525! -----------------
    2626! $Id$
     27! Vertical grid nesting implemented (SadiqHuq)
     28!
     29! 2320 2017-07-21 12:47:43Z suehring
    2730! Set bottom boundary conditions after nesting interpolation and anterpolation
    2831!
     
    399402        ONLY:  wind_turbine, wtm_forces
    400403
     404    USE vertical_nesting_mod,                                                  &
     405        ONLY:  vnested, vnest_anterpolate, vnest_anterpolate_e,                &
     406               vnest_boundary_conds, vnest_boundary_conds_khkm,                &
     407               vnest_deallocate, vnest_init, vnest_init_fine,                  &
     408               vnest_start_time
     409
    401410    IMPLICIT NONE
    402411
     
    429438!-- Data exchange between coupled models in case that a call has been omitted
    430439!-- at the end of the previous run of a job chain.
    431     IF ( coupling_mode /= 'uncoupled'  .AND.  run_coupled )  THEN
     440    IF ( coupling_mode /= 'uncoupled'  .AND.  run_coupled .AND. .NOT. vnested)  THEN
    432441!
    433442!--    In case of model termination initiated by the local model the coupler
     
    458467       CALL cpu_log( log_point_s(10), 'timesteps', 'start' )
    459468!
     469!--    Vertical nesting: initialize fine grid
     470       IF ( vnested ) THEN
     471          IF ( .NOT. vnest_init  .AND.  simulated_time >= vnest_start_time )  THEN
     472             CALL cpu_log( log_point(80), 'vnest_init', 'start' )
     473             CALL vnest_init_fine
     474             vnest_init = .TRUE.
     475             CALL cpu_log( log_point(80), 'vnest_init', 'stop' )
     476          ENDIF
     477       ENDIF
     478!
    460479!--    Determine ug, vg and w_subs in dependence on data from external file
    461480!--    LSF_DATA
     
    624643!--       Swap the time levels in preparation for the next time step.
    625644          CALL swap_timelevel
     645
     646!
     647!--       Vertical nesting: Interpolate fine grid data to the coarse grid
     648          IF ( vnest_init ) THEN
     649             CALL cpu_log( log_point(81), 'vnest_anterpolate', 'start' )
     650             CALL vnest_anterpolate
     651             CALL cpu_log( log_point(81), 'vnest_anterpolate', 'stop' )
     652          ENDIF
    626653
    627654          IF ( nested_run )  THEN
     
    736763          IF ( intermediate_timestep_count == 1  .OR. &
    737764                call_psolver_at_all_substeps )  THEN
    738              CALL pres
     765
     766             IF (  vnest_init ) THEN
     767!
     768!--             Compute pressure in the CG, interpolate top boundary conditions
     769!--             to the FG and then compute pressure in the FG
     770                IF ( coupling_mode == 'vnested_crse' )  CALL pres
     771
     772                CALL cpu_log( log_point(82), 'vnest_bc', 'start' )
     773                CALL vnest_boundary_conds
     774                CALL cpu_log( log_point(82), 'vnest_bc', 'stop' )
     775 
     776                IF ( coupling_mode == 'vnested_fine' )  CALL pres
     777
     778!--             Anterpolate TKE, satisfy Germano Identity
     779                CALL cpu_log( log_point(83), 'vnest_anter_e', 'start' )
     780                CALL vnest_anterpolate_e
     781                CALL cpu_log( log_point(83), 'vnest_anter_e', 'stop' )
     782
     783             ELSE
     784
     785                CALL pres
     786
     787             ENDIF
     788
    739789          ENDIF
    740790
     
    910960!
    911961!--    Data exchange between coupled models
    912        IF ( coupling_mode /= 'uncoupled'  .AND.  run_coupled )  THEN
     962       IF ( coupling_mode /= 'uncoupled'  .AND.  run_coupled                   &
     963                                          .AND. .NOT. vnested )  THEN
    913964          time_coupling = time_coupling + dt_3d
    914965
     
    11541205    ENDDO   ! time loop
    11551206
     1207!-- Vertical nesting: Deallocate variables initialized for vertical nesting   
     1208    IF ( vnest_init )  CALL vnest_deallocate
     1209
    11561210    IF ( myid == 0 )  CALL finish_progress_bar
    11571211
  • palm/trunk/SOURCE/timestep.f90

    r2258 r2365  
    2525! -----------------
    2626! $Id$
     27! Vertical grid nesting: Sync fine and coarse grid timestep (SadiqHuq)
     28!
     29! 2258 2017-06-08 07:55:13Z suehring
    2730! Bugfix, add pre-preprocessor directives to enable non-parrallel mode
    2831!
     
    137140        ONLY:  flow_statistics_called, hom, u_max, u_max_ijk, v_max, v_max_ijk,&
    138141               w_max, w_max_ijk
     142
     143    USE vertical_nesting_mod,                                                  &
     144        ONLY:  vnested, vnest_timestep_sync
    139145
    140146    IMPLICIT NONE
     
    376382    ENDIF
    377383
     384!
     385!-- Vertical nesting: coarse and fine grid timestep has to be identical   
     386    IF ( vnested )  CALL vnest_timestep_sync
     387
    378388    CALL cpu_log( log_point(12), 'calculate_timestep', 'stop' )
    379389
  • palm/trunk/SOURCE/write_var_list.f90

    r2339 r2365  
    2525! -----------------
    2626! $Id$
     27! Vertical nesting implemented (SadiqHuq)
     28!
     29! 2339 2017-08-07 13:55:26Z gronemeier
    2730! corrected timestamp in header
    2831!
     
    224227               v_max_ijk, w_max, w_max_ijk
    225228
     229    USE vertical_nesting_mod,                                                  &
     230        ONLY:  vnest_init
    226231
    227232    IMPLICIT NONE
     
    695700    WRITE ( 14 )  'virtual_flight                '
    696701    WRITE ( 14 )  virtual_flight
     702    WRITE ( 14 )  'vnest_init                    '
     703    WRITE ( 14 )  vnest_init
    697704    WRITE ( 14 )  'volume_flow_area              '
    698705    WRITE ( 14 )  volume_flow_area
  • palm/trunk/UTIL/combine_plot_fields.f90

    r1809 r2365  
    2121! -----------------
    2222!
    23 !
     23! 
    2424! Former revisions:
    2525! -----------------
    2626! $Id$
     27! Vertical grid nesting implemented (SadiqHuq)
     28!
     29! 1809 2016-04-05 20:13:28Z raasch
    2730!
    2831! 1808 2016-04-05 19:44:00Z raasch
     
    120123    LOGICAL  ::  avs_output, compressed, found, iso2d_output, netcdf_output,   &
    121124                 netcdf_parallel, netcdf_0, netcdf_1
     125    LOGICAL  ::  vnest
    122126
    123127    REAL(wp) ::  cpu_start_time, cpu_end_time, dx, simulated_time
     
    126130    REAL(spk), DIMENSION(:,:,:), ALLOCATABLE ::  pf3d, pf3d_tmp
    127131
     132
     133
    128134    PRINT*, ''
    129135    PRINT*, ''
     
    133139!-- Find out if a coupled run has been carried out
    134140    INQUIRE( FILE='COUPLING_PORT_OPENED', EXIST=found )
     141    INQUIRE( FILE='VNESTING_PORT_OPENED', EXIST=vnest )
    135142    IF ( found )  THEN
    136143       models = 2
    137144       PRINT*, '    coupled run'
     145    ELSEIF ( vnest )  THEN
     146       models = 2
     147       PRINT*, '    Vertically nested grid coupling'
    138148    ELSE
    139149       models = 1
     
    160170          PRINT*, '*** combine_plot_fields ***'
    161171          IF ( model == 2 )  THEN
    162              model_string = '_O'
    163              PRINT*, '    now combining ocean data'
    164              PRINT*, '    ========================'
     172             IF ( vnest )  THEN
     173                model_string = '_N'
     174                PRINT*, '    now combining FINE data'
     175                PRINT*, '    ========================'
     176             ELSE
     177                model_string = '_O'
     178                PRINT*, '    now combining ocean data'
     179                PRINT*, '    ========================'
     180             ENDIF
    165181          ELSE
    166              PRINT*, '    now combining atmosphere data'
    167              PRINT*, '    ============================='
     182             IF ( vnest )  THEN
     183                PRINT*, '    now combining COARSE data'
     184                PRINT*, '    ============================='
     185             ELSE
     186                PRINT*, '    now combining atmosphere data'
     187                PRINT*, '    ============================='
     188             ENDIF
    168189          ENDIF
    169190       ENDIF
Note: See TracChangeset for help on using the changeset viewer.