Starting from version 3.4 PALM allows coupled atmosphere-ocean model runs. If MPI-2 support is available, mrun starts the coupled model as two concurrent executables, the atmosphere version and the ocean version in analogy with the modular structure of PALM.
Currently, the coupler is at an experimental stage using either a MPI2 (more flexible) or a MPI1 intercommunicator that matches the atmosphere and ocean processors one-to-one. This approach has limited flexibility and performance, because it requires identical horizontal numerical grids and it uses the same number of atmosphere and ocean processors, which does not necessarily guarrantee a good load balancing.
The coupler establishes a one-way interaction between the atmosphere and the ocean. The atmosphere sends its bottom surface fluxes (temperature, humidity, momentum) to the ocean. The ocean sends its top surface temperature to the atmosphere. The atmosphere assumes saturation of humidity and zero wind speed at its bottom surface. For calculations with humidity = .T. the atmospheric evaporation leads to a salinity flux in the ocean (see e.g. Steinhorn 1991, JPO 21, p. 1681).
If the full MPI-2 standard is available, it can be activated by adding the preprocessor directive -D__mpi2 to cpp_options in the .mrun.config configuration file. Otherwise, PALM will use a coupling via MPI1. To start a coupled model run, this must be requested with the mrun option -Y “#1 #2”, where #1 is the number of processors for the atmospheric and #2 the number of processors for the oceanic version of PALM (Please note that currently only one-to-one topologies are supported and #1 must be equal to #2). This tells mrun to start two PALM executables. Coupled runs are only possible in parallel mode, which means that the mrun option -K parallel must also be set. The mrun call for coupled runs has to include the following coupling-related options:
mrun ... -K parallel -r “d3# d3o# ...” -X ... -Y “#1 #2”.
The -X ... option here specifies the total number of processors assigned to the coupled model. Currently, half of them are assigned to each of the two coupled executables. Therefore it is advisable to specify an even number with -X ... . Otherwise, in case of an odd total number of processors, one processor remains idle.
Each coupled executable has its own, unique set of I/O filenames; chapter 3.4 gives information on file name conventions of coupled runs. The configuration file .mrun.config has to be extended for coupled runs. It is recommended to duplicate existing file connection identifiers such as "d3#", "pr#" etc. using the coupled ocean filenames accordingly. For example, the example of the previous chapters could be duplicated as follows:
PARIN in:job:npe d3# ~/palm/current_version/JOBS/$fname/INPUT _p3d PARIN in:job:npe d3f ~/palm/current_version/JOBS/$fname/INPUT _p3df BININ in:loc d3f ~/palm/current_version/JOBS/$fname/OUTPUT _d3d # BINOUT out:loc restart ~/palm/current_version/JOBS/$fname/OUTPUT _d3d # RUN_CONTROL out:loc:tr d3# ~/palm/current_version/JOBS/$fname/MONITORING _rc HEADER out:loc:tr d3# ~/palm/current_version/JOBS/$fname/MONITORING _header PLOT1D_PAR out:loc:tr pr# ~/palm/current_version/JOBS/$fname/OUTPUT _pr_par PLOT1D_DATA out:loc:tr pr# ~/palm/current_version/JOBS/$fname/OUTPUT _pr_in # PARIN_O in:job:npe d3o# ~/palm/current_version/JOBS/$fname/INPUT _o_p3d PARIN_O in:job:npe d3of ~/palm/current_version/JOBS/$fname/INPUT _o_p3df BININ_O in:loc d3of ~/palm/current_version/JOBS/$fname/OUTPUT _o_d3d # BINOUT_O out:loc restart ~/palm/current_version/JOBS/$fname/OUTPUT _o_d3d # RUN_CONTROL_O out:loc:tr d3o# ~/palm/current_version/JOBS/$fname/MONITORING _o_rc HEADER_O out:loc:tr d3o# ~/palm/current_version/JOBS/$fname/MONITORING _o_header PLOT1D_PAR_O out:loc:tr pro# ~/palm/current_version/JOBS/$fname/OUTPUT _o_pr_par PLOT1D_DATA_O out:loc:tr pro# ~/palm/current_version/JOBS/$fname/OUTPUT _o_pr_in
The coupled ocean model filenames in the first column (e.g. PARIN_O) must be specified as given in chapter 3.4; the file connection identifiers (e.g. d3o#) and the file name extension (e.g. _o_p3d) may be changed at the user's discretion.
The coupler requires the following parameters to be equal in both PARIN and PARIN_O: dx, dy, nx, ny, dt_coupling, end_time, restart_time, dt_restart. In the coupled atmosphere executable, bc_pt_b is internally set and does not need to be prescribed; in the coupled ocean executable, bc_uv_t is internally set ('neumann') and does not need to be prescribed. The coupled ocean parameter file PARIN_O should include dummy REAL value assignments to both top_momentumflux_u and top_momentumflux_v (e.g. top_momentumflux_u = 0.0, top_momentumflux_v = 0.0) to enable the momentum flux coupling.
The coupling interval dt_coupling must be explicity set. In order to ensure synchronous coupling throughout the simulation, dt_coupling should be chosen larger than dt_max.
It's also possible to perform precursor runs (one atmospheric and one oceanic) followed by a coupled restart run. In order to achieve this, the parameter coupling_time_start must be set according to the documentation.
Last change: $Id: chapter_3.8.html 197 2008-09-16 15:29:03Z raasch $