[cig-commits] [commit] master, python-removal, rajesh-petsc-schur: Removed Cookbook 9 from the CitcomS manual (d2d1b09)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Wed Nov 5 19:01:53 PST 2014


Repository : https://github.com/geodynamics/citcoms

On branches: master,python-removal,rajesh-petsc-schur
Link       : https://github.com/geodynamics/citcoms/compare/464e1b32299b15819f93efd98d969cddb84dfe51...f97ae655a50bdbd6dac1923a3471ee4dae178fbd

>---------------------------------------------------------------

commit d2d1b093182ae4ba7e77438d3907d8af2fda910d
Author: Rajesh Kommu <rajesh.kommu at gmail.com>
Date:   Wed Jun 25 15:04:27 2014 -0700

    Removed Cookbook 9 from the CitcomS manual


>---------------------------------------------------------------

d2d1b093182ae4ba7e77438d3907d8af2fda910d
 doc/citcoms-manual.pdf | Bin 11886680 -> 10839812 bytes
 doc/citcoms-manual.tex | 396 -------------------------------------------------
 2 files changed, 396 deletions(-)

diff --git a/doc/citcoms-manual.pdf b/doc/citcoms-manual.pdf
index 3cae9c3..4d6e9bd 100644
Binary files a/doc/citcoms-manual.pdf and b/doc/citcoms-manual.pdf differ
diff --git a/doc/citcoms-manual.tex b/doc/citcoms-manual.tex
index 6fdd07e..4c8ea94 100644
--- a/doc/citcoms-manual.tex
+++ b/doc/citcoms-manual.tex
@@ -3652,402 +3652,6 @@ at the 10,000th time step. A tetrahedral symmetric convection pattern
 is developed. Two temperature isosurfaces of 0.4 and 0.8 are shown. }
 \end{figure}
 
-
-\newpage{}
-
-
-\section{Cookbook 9: Nested Solver Coupling for Ridge-Plume Interaction}
-
-To run this cookbook, you need to install the Exchanger package. See
-Section \vref{sec:Exchanger-Configuration-(Optional)} for installation
-instructions.
-
-
-\subsection{Problem}
-
-In order to model the interaction between a segment of a mid-ocean
-ridge and a plume, a small grid spacing is required to resolve the
-thin plume conduit and the flow near the ridge. In addition, the plume
-must be placed sufficiently away from the sidewalls to avoid possible
-boundary effects. Satisfying both of these requirements in a model
-entails a long computation time. Using solver coupling, a high-resolution
-model with a smaller domain can be nested within a low-resolution
-model, and the computation time significantly reduced. 
-
-
-\subsection{Solution}
-
-You will use two solvers in the model. A special command-line option
-is required for a coupled model. Type the following command to run
-this cookbook example:
-\begin{lyxcode}
-\$~citcoms~-{}-coupled~cookbook9.cfg
-\end{lyxcode}
-The embedded solver (esolver) is nested within the domain of the containing
-solver (csolver). The velocity boundary conditions of the esolver
-are fixed normal velocity and shear stress, whose values are received
-from the esolver. The containing solver can be either a full CitcomS
-solver or a regional one. The embedded solver can only be a regional
-one. Both solvers are instances of a regional CitcomS solver in the
-cookbook example. 
-\begin{lyxcode}
-csolver~=~regional~~~~~~;~containing~solver~\\
-esolver~=~regional~~~~~~;~embedded~solver
-\end{lyxcode}
-You will use four processors for this model. Each solver will use
-two processors. The rank-0 and rank-1 processors will be assigned
-to the csolver, and the rank-2 and rank-3 processors will be assigned
-to the esolver.
-\begin{lyxcode}
-{[}CitcomS.layout{]}~\\
-containing\_group~=~{[}0-1{]}~\\
-embedded\_group~=~{[}2-3{]}
-\end{lyxcode}
-The procedure for the nested solver coupling is described elsewhere
-\cite{Tan et al GeoFramework Part I} and only briefly described below:
-\begin{enumerate}
-\item The containing solver solves the velocity and computes its time-step
-size $dt_{c}$.
-\item The containing solver interpolates the velocity, stress and temperature
-onto the boundary of the embedded model.
-\item The embedded model solves the velocity and temperature, using the
-boundary conditions from step 2, with a time-step size $dt_{e}$;
-$dt_{e}$ is always smaller than $dt_{c}$.
-\item Step 3 is repeated until the sum of $dt_{e}$ is equal to $dt_{c}$.
-\item Optionally (if \texttt{two\_way\_communication} is \texttt{on}), the
-containing solver updates its temperature according to the embedded
-solver's temperature.
-\item The containing solver solves the temperature with a time-step size
-$dt_{c}$.
-\item The entire process repeats beginning at step 1.
-\end{enumerate}
-The two solver processes are separated and only communicate through
-the couplers, which in turn use the exchanger package to pass messages.
-The containing coupler and controller (ccoupler and ccontroller) are
-associated with the csolver, and the embedded coupler and controller
-(ecoupler and econtroller) with the esolver. Each solver will track
-its own number of time steps. The esolver has a smaller time-step
-size and, hence, a larger number of time steps. The model will finish
-when either of the solvers reaches the 200th time step. The csolver
-will output for every 2 steps and the esolver for every 10 steps.
-Additional output will occur when the embedded solver is at procedure
-4 above.
-\begin{lyxcode}
-{[}CitcomS{]}~\\
-steps~=~200~\\
-~\\
-{[}CitcomS.ccontroller{]}~\\
-monitoringFrequency~=~2~\\
-~\\
-{[}CitcomS.econtroller{]}~\\
-monitoringFrequency~=~10
-\end{lyxcode}
-A few parameters must be identical for the ccoupler and ecoupler.
-You will use two-way communication, which enables the ecoupler to
-send temperature information to the ccoupler. Otherwise the communication
-is one way, ccoupler to ecoupler only, and the csolver is not affected
-by the esolver.
-\begin{lyxcode}
-two\_way\_communication~=~on
-\end{lyxcode}
-There is an option to exchange initial temperature, which could ensure
-that the initial temperature field of both solvers is consistent.
-The initial temperature field is read from velo files, which already
-contain consistent temperature fields and don't need to exchange that
-information again. 
-\begin{lyxcode}
-exchange\_initial\_temperature~=~off
-\end{lyxcode}
-A good initial guess of pressure field can speed up the convergence
-of the iterative Stokes solver. We will use the pressure solution
-of the containing solver as the initial guess of pressure of the embedded
-solver.
-\begin{lyxcode}
-exchange\_pressure~=~on
-\end{lyxcode}
-Three additional parameters are for the ecoupler only. The following
-two parameters specify whether the top and bottom boundary of the
-esolver will be imposed with the velocity and temperature from the
-csolver. For models with prescribed top or bottom boundary conditions,
-you can turn on these two parameters:
-\begin{lyxcode}
-exclude\_top~=~off~\\
-exclude\_bottom~=~off
-\end{lyxcode}
-The next parameter deserves a little more explanation. The continuity
-equation \ref{eq:conservation of mass} can be rearranged according
-to Gauss's divergence theorem to become:
-\begin{eqnarray}
-\ointop_{surface\ area}\rho_{0}\overrightarrow{u}\cdot\overrightarrow{n}dA & = & 0\label{eq:gauss div}
-\end{eqnarray}
-This equation requires that the normal velocity $\overrightarrow{u}$
-imposed on the embedded solver must have zero outflow. Due to finite
-accuracy of the containing solver and the interpolation process, the
-normal velocity received by the embedded solver might not have zero
-outflow, which could cause a convergence problem in the embedded solver.
-One can amend the received normal velocity slightly to satisfy Equation
-\ref{eq:gauss div} by setting:
-\begin{lyxcode}
-amending\_outflow~=~on
-\end{lyxcode}
-Without turning on \texttt{side\_sbcs}, the model will fail to run.
-\begin{lyxcode}
-{[}CitcomS.esolver.bc{]}~\\
-side\_sbcs~=~on
-\end{lyxcode}
-Plate motion is imposed on top of the esolver, which has a mid-ocean
-ridge with a 5 cm/yr half-spreading rate. A transform fault cuts through
-the ridge. Setting \texttt{start\_age} to 0, the plate motion is read
-from the file \texttt{velocity/bvel.dat0} and will be constant in
-time.
-\begin{lyxcode}
-{[}CitcomS.csolver.bc{]}~\\
-topvbc~=~1~\\
-~\\
-{[}CitcomS.csolver.param{]}~\\
-file\_vbcs~=~on~\\
-vel\_bound\_file~=~velocity/bvel.dat~\\
-start\_age~=~0
-\end{lyxcode}
-The domain of the csolver is bigger than that of the esolver. The
-radial dimension of the esolver will shrink slightly with respect
-to the csolver so that the domain of the esolver is completely inside
-the domain of the csolver. The radial coordinates of the csolver is
-refined near the top and bottom boundaries (\texttt{coor=2}), with
-the lower 10\% of the mesh divided by 15\% of the nodes, the upper
-10\% of the mesh divided by 20\% of the nodes, and the remaining 80\%
-of the mesh divided by 75\% of the nodes. 
-
-Therefore, when setting the values of \texttt{coor\_refine} (see below),
-be careful not to set the first or third value (in example below,
-\texttt{0.1}) too low, or the second or fourth value (in example below,
-\texttt{0.15} and \texttt{0.2}) too high. This can cause the mesh
-size to change too rapidly across an element, which will generate
-pronounced numerical artifacts in the temperature solver.
-\begin{lyxcode}
-{[}CitcomS.csolver.mesher{]}~\\
-nprocz~=~2~\\
-nodex~=~17~\\
-nodey~=~17~\\
-nodez~=~25~\\
-radius\_outer~=~1.0~\\
-radius\_inner~=~0.55~\\
-theta\_min~=~1.171~\\
-theta\_max~=~1.971~\\
-fi\_min~=~0~\\
-fi\_max~=~0.8~\\
-coor~=~2~\\
-coor\_refine~=~0.1,0.15,0.1,0.2~\\
-~\\
-{[}CitcomS.esolver.mesher{]}~\\
-nprocz~=~2~\\
-nodex~=~21~\\
-nodey~=~21~\\
-nodez~=~49~\\
-radius\_outer~=~0.999~\\
-radius\_inner~=~0.551~\\
-theta\_min~=~1.421~\\
-theta\_max~=~1.721~\\
-fi\_min~=~0.25~\\
-fi\_max~=~0.55
-\end{lyxcode}
-The temperature solver has several parameters to tune its behavior.
-The temperature solver is turned on (\texttt{ADV}). A Lenardic-type
-filter, which removes numerical artifacts while keeping total energy
-conserved, is disabled (\texttt{filter\_temp}). The maximum temperature
-can be monitored between time steps (\texttt{monitor\_max\_T}). If
-the maximum temperature increases too much (> 5\%) between time steps,
-the temperature solver will rerun with half time-step size. The time-step
-size is usually determined dynamically according to Courant criterion
-and is reduced by a fraction (\texttt{finetunedt}) to improve accuracy.
-The time-step size can also be specified statically in \texttt{fixed\_timestep},
-if \texttt{fixed\_timestep} is non-zero. The temperature solver uses
-an explicit predictor-corrector algorithm. Using 0.5 for the predictor
-(\texttt{adv\_gamma}) and 2 iterations for the corrector (\texttt{adv\_sub\_iterations}),
-this algorithm is second-order accurate.
-\begin{lyxcode}
-ADV~=~on~\\
-filter\_temp~=~off~\\
-monitor\_max\_T~=~off~\\
-finetunedt~=~0.9~\\
-fixed\_timestep~=~0~\\
-adv\_gamma~=~0.5~\\
-adv\_sub\_iterations~=~2
-\end{lyxcode}
-The purpose of the csolver is to provide the proper boundary condition
-for the esolver, and we don't need high accuracy for that. So we will
-use low accuracy for the csolver and moderate accuracy for the esolver.
-\begin{lyxcode}
-{[}CitcomS.csolver.vsolver{]}~\\
-accuracy~=~2e-2~\\
-~\\
-{[}CitcomS.esolver.vsolver{]}~\\
-accuracy~=~1e-3~\\
-
-\end{lyxcode}
-
-\subsubsection{Example: Nested Solver Coupling for Ridge-Plume Interaction, cookbook9.cfg}
-\begin{lyxcode}
-\#~Cookbook~9:~Nested~Solver~Coupling~for~Ridge-Plume~Interaction~\\
-~\\
-{[}CitcomS{]}~\\
-steps~=~200~\\
-csolver~=~regional~~~~~~;~containing~solver~\\
-esolver~=~regional~~~~~~;~embedded~solver~\\
-~\\
-{[}CitcomS.ccoupler{]}~\\
-two\_way\_communication~=~on~\\
-exchange\_initial\_temperature~=~off~\\
-exchange\_pressure~=~on~\\
-~\\
-{[}CitcomS.ecoupler{]}~\\
-two\_way\_communication~=~on~\\
-exchange\_initial\_temperature~=~off~\\
-exchange\_pressure~=~on~\\
-amending\_outflow~=~on~\\
-exclude\_top~=~off~\\
-exclude\_bottom~=~off~\\
-~\\
-\#~assigning~processors~to~csolver~and~esolver~\\
-{[}CitcomS.layout{]}~\\
-containing\_group~=~{[}0-1{]}~\\
-embedded\_group~=~{[}2-3{]}~\\
-~\\
-{[}CitcomS.ccontroller{]}~\\
-monitoringFrequency~=~2~\\
-~\\
-{[}CitcomS.econtroller{]}~\\
-monitoringFrequency~=~10~\\
-~\\
-{[}CitcomS.csolver{]}~\\
-datadir\_old~=~ic~\\
-datafile\_old~=~cntn~\\
-datadir~=~output~\\
-datafile~=~cntn~\\
-rayleigh~=~1e8~\\
-~\\
-{[}CitcomS.csolver.mesher{]}~\\
-nprocz~=~2~\\
-nodex~=~17~\\
-nodey~=~17~\\
-nodez~=~25~\\
-radius\_outer~=~1.0~\\
-radius\_inner~=~0.55~\\
-theta\_min~=~1.171~\\
-theta\_max~=~1.971~\\
-fi\_min~=~0~\\
-fi\_max~=~0.8~\\
-coor~=~2~\\
-coor\_refine~=~0.1,0.15,0.1,0.2~\\
-~\\
-{[}CitcomS.csolver.bc{]}~\\
-topvbc~=~1~\\
-~\\
-{[}CitcomS.csolver.param{]}~\\
-file\_vbcs~=~on~\\
-vel\_bound\_file~=~velocity/bvel.dat~\\
-start\_age~=~0~\\
-~\\
-{[}CitcomS.csolver.ic{]}~\\
-tic\_method~=~-1~\\
-solution\_cycles\_init~=~0~\\
-~\\
-{[}CitcomS.csolver.tsolver{]}~\\
-ADV~=~on~\\
-filter\_temp~=~off~\\
-monitor\_max\_T~=~off~\\
-finetunedt~=~0.9~\\
-fixed\_timestep~=~0~\\
-adv\_gamma~=~0.5~\\
-adv\_sub\_iterations~=~2~\\
-~\\
-{[}CitcomS.csolver.vsolver{]}~\\
-accuracy~=~2e-2~\\
-~\\
-{[}CitcomS.csolver.visc{]}~\\
-VISC\_UPDATE~=~on~\\
-num\_mat~=~4~\\
-visc0~=~1,1,1,1~\\
-TDEPV~=~on~\\
-viscE~=~1.6,1.6,1.6,1.6~\\
-viscT~=~0,0,0,0~\\
-VMIN~=~on~\\
-visc\_min~=~1.0~\\
-VMAX~=~on~\\
-visc\_max~=~100.0~\\
-~\\
-\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#\#~\\
-~\\
-{[}CitcomS.esolver{]}~\\
-datadir\_old~=~ic~\\
-datafile\_old~=~embd~\\
-datadir~=~output~\\
-datafile~=~embd~\\
-rayleigh~=~1e8~\\
-~\\
-{[}CitcomS.esolver.mesher{]}~\\
-nprocz~=~2~\\
-nodex~=~21~\\
-nodey~=~21~\\
-nodez~=~49~\\
-radius\_outer~=~0.999~\\
-radius\_inner~=~0.551~\\
-theta\_min~=~1.421~\\
-theta\_max~=~1.721~\\
-fi\_min~=~0.25~\\
-fi\_max~=~0.55~\\
-~\\
-{[}CitcomS.esolver.ic{]}~\\
-tic\_method~=~-1~\\
-solution\_cycles\_init~=~0~\\
-~\\
-{[}CitcomS.esolver.vsolver{]}~\\
-accuracy~=~1e-3~\\
-~\\
-{[}CitcomS.esolver.tsolver{]}~\\
-ADV~=~on~\\
-filter\_temp~=~off~\\
-monitor\_max\_T~=~off~\\
-finetunedt~=~0.9~\\
-fixed\_timestep~=~0~\\
-adv\_gamma~=~0.5~\\
-adv\_sub\_iterations~=~2~\\
-~\\
-{[}CitcomS.esolver.visc{]}~\\
-VISC\_UPDATE~=~on~\\
-num\_mat~=~4~\\
-visc0~=~1,1,1,1~\\
-TDEPV~=~on~\\
-viscE~=~1.6,1.6,1.6,1.6~\\
-viscT~=~0,0,0,0~\\
-VMIN~=~on~\\
-visc\_min~=~1.0~\\
-VMAX~=~on~\\
-visc\_max~=~100.0~\\
-~\\
-{[}CitcomS.esolver.bc{]}~\\
-side\_sbcs~=~on
-\end{lyxcode}
-
-\subsection{Discussion}
-
-The solution of this problem is presented in Figure \ref{fig:Cookbook-9}.
-The plume head spreads below the lithosphere, and the plume conduit
-is elongated in the ridge-parallel direction. The lithosphere subducts
-at the left and right edges of the csolver. If the domain of the csolver
-were bigger, the plume would be further away from the subducted slabs. 
-
-\begin{figure}[H]
-\begin{centering}
-\includegraphics[width=0.6\paperwidth]{graphics/cookbook9.png}
-\par\end{centering}
-
-\caption{\label{fig:Cookbook-9}Cookbook 9: The plume head spreads below the
-lithosphere, and the plume conduit is elongated in the ridge-parallel
-direction. The temperature isosurface is at 0.8. The grid spacings
-of both meshes are reduced approximately threefold for better visualization.}
-\end{figure}
-
 \part{Appendices}
 
 \appendix



More information about the CIG-COMMITS mailing list