diff options
40 files changed, 829 insertions, 421 deletions
@@ -54,6 +54,8 @@ The new code added in the June 2002 revisions to this thorn is copyright (C) 2001-2002 by Jonathan Thornburg <jthorn@aei.mpg.de> Minkowski_conf_wave and the conformal factor code added in January 2003 is copyright (C) 2003 by Frank Loeffler <frank.loeffler@aei.mpg.de> +Option to boost any non-stress-energy-tensor model + is copyright (C) 2003 by Jonathan Thornburg <jthorn@aei.mpg.de> This code is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/doc/documentation.tex b/doc/documentation.tex index 3ea8f73..41c4e4e 100644 --- a/doc/documentation.tex +++ b/doc/documentation.tex @@ -98,11 +98,12 @@ % Add all definitions used in this documentation here % \def\mydef etc +\def\thorn#1{{\bf #1}} +\def\defn#1{{\bf #1}} + % force a line break in a itemize/description/enumerate environment \def\forcelinebreak{\mbox{}\\[-\baselineskip]} -\def\defn#1{{\bf #1}} - \def\eg{e.g.\hbox{}} \def\ie{i.e.\hbox{}} \def\etal{{\it et~al.\/\hbox{}}} @@ -110,9 +111,11 @@ \def\Nb{N.b.\hbox{}} % math stuff +\def\dfrac#1#2{{\displaystyle\frac{#1}{#2}}} +\def\tfrac#1#2{{\textstyle \frac{#1}{#2}}} \def\diag{\text{diag}} \def\Gaussian{{\sf G}} -\def\half{{\textstyle \frac{1}{2}}} +\def\half{\tfrac{1}{2}} \def\sech{\text{sech}} % Add an abstract for this thorn's documentation @@ -122,9 +125,10 @@ of exact spacetimes/coordinates, and even some non-Einstein spcetimes/coordinates. It's easy to add more spacetimes/coordinates: all you have to supply is the 4-metric $g_{ab}$ and the inverse 4-metric $g^{ab}$ (this thorn automagically calculates all the ADM variables -from these). Optionally, the ADM variables can be calculated on an +from these). Optionally, any 4-metric can be Lorentz-boosted in any +direction. As another option, the ADM variables can be calculated on an arbitrary slice through the spacetime, using arbitrary coordinates on -the slice. Given a lapse and shift, the slice can be evolved through +the slice. Given a lapse and shift, the slice can be evolved through the exact solution, in order to check on an evolution code, or in order to test gauge conditions without the need for an evolution code. \end{abstract} @@ -145,6 +149,12 @@ makes this thorn set up the ADM variables at \verb|CCTK_PRESTEP| every time step of an evolution, so you get an exact {\em spacetime\/}, not just a single slice. +There is an option to Lorentz-boost any vacuum model +(more precisely any model which doesn't set the stress-energy tensor; +see table~\ref{AEIThorns/Exact/tab-all-models} and +section~\ref{AEIThorns/Exact/sect-Lorentz-boosting-a-spacetime} +for details) in any direction. + There is also a more general option to set up the ADM variables on an arbitrary slice through the spacetime, using arbitrary coordinates on the slice. Given a lapse and shift computed by some @@ -166,7 +176,8 @@ see the comments there for details. \subsection{Models Supported} -The following models are currently supported:%%% +Table~\ref{AEIThorns/Exact/tab-all-models} shows the models supported +by thorn~\thorn{Exact}.%%% \footnote{%%% To add a new model, you have to modify a number of files in this thorn. See the file @@ -175,90 +186,110 @@ The following models are currently supported:%%% what to do. Please follow the naming conventions given in the next subsection. }%%% -\begin{description} -\item[Minkowski spacetime]\forcelinebreak - \begin{description} - \item[{\tt "Minkowski"}] - Minkowski spacetime - \item[{\tt "Minkowski/shift"}] - Minkowski spacetime with time-dependent shift vector - \item[{\tt "Minkowski/funny"}] - Minkowski spacetime in non-trivial spatial coordinates - \item[{\tt "Minkowski/gauge wave"}] - Minkowski spacetime in gauge-wave coordinates - \item[{\tt "Minkowski/conf wave"}] - Minkowski spacetime with sinus in conformal factor - \end{description} -\item[Black hole spacetimes]\forcelinebreak - \begin{description} - \item[{\tt "Schwarzschild/EF"}] - Schwarzschild spacetime in Eddington-Finkelstein coordinates - \item[{\tt "Schwarzschild/PG"}] - Schwarzschild spacetime in Painlev\'{e}-Gullstrand coordinates - (these have a flat 3-metric) - \item[{\tt "Schwarzschild/Novikov"}] - Schwarzschild spacetime in Novikov coordinates - \item[{\tt "Kerr/Boyer-Lindquist"}] - Kerr spacetime in Boyer-Lindquist coordinates - \item[{\tt "Kerr/Kerr-Schild"}] - Kerr spacetime in Kerr-Schild coordinates - \item[{\tt "Schwarzschild-Lemaitre"}] - Schwarzschild-Lemaitre spacetime - (Schwarzschild black hole with a cosmological constant) - \item[{\tt "multi-BH"}] - Majumdar-Papapetrou or Kastor-Traschen - maximally-charged (extreme Reissner-Nordstrom) - multi-BH solutions - \item[{\tt "Alvi"}] - Alvi post-Newtonian 2BH spacetime (not fully implemented yet) - \item[{\tt "Thorne-fakebinary"}] - Thorne's ``fake binary'' spacetime (non-Einstein) - \end{description} -\item[Cosmological spacetimes]\forcelinebreak - \begin{description} - \item[{\tt "Lemaitre"}] - Lemaitre-type spacetime - \item[{\tt "Robertson-Walker"}] - Robertson-Walker spacetime - \item[{\tt "de Sitter"}] - de~Sitter spacetime - \item[{\tt "de Sitter+Lambda"}] - de~Sitter spacetime with cosmological constant - \item[{\tt "anti-de Sitter+Lambda"}] - anti-de~Sitter spacetime with cosmological constant - \item[{\tt "Bianchi I"}] - approximate Bianchi type~I spacetime - \item[{\tt "Goedel"}] - G\"{o}del spacetime - \item[{\tt "Bertotti"}] - Bertotti spacetime - \item[{\tt "Kasner"}] - Kasner-like spacetime - \item[{\tt "Kasner-axisymmetric"}] - axisymmetric Kasner spacetime - \item[{\tt "Kasner-generalized"}] - generalized Kasner spacetime - \item[{\tt "Milne"}] - Milne spacetime for pre-big-bang cosmology - \end{description} -\item[Miscellaneous spacetimes]\forcelinebreak - \begin{description} - \item[{\tt "boost-rotation symmetric"}] - boost-rotation symmetric spacetime - \item[{\tt "bowl"}] - bowl (``bag of gold'') spacetime (non-Einstein) - \item[{\tt "constant density star"}] - constant density (Schwarzschild) star - \end{description} -\end{description} - -As a general policy, this thorn includes only cases where the full -4-metric $g_{ab}$ (and its inverse, although we could probably dispense -with that if needed) is known throughout the spacetime. Cases where -this is only known on one specific slice, should live in separate -initial data thorns. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +{} As a general policy, this thorn includes only cases where the full +4-metric $g_{ab}$ (and its inverse, although we could dispense with +that if needed) is known throughout the spacetime. Cases where this +is only known on one specific slice, should live in separate initial +data thorns. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begin{table}[htbp] +\begin{center} +\hyphenpenalty=10000 % forbid hyphenation +\begin{tabular}{@{\qquad}lcp{80mm}} +Model Name + & $T_{\mu\nu}$? + & Description \\ +\hline %---------------------------------------------------------------- +% +\multicolumn{3}{l}{\bf Minkowski spacetime} \\ +{\tt "Minkowski"} + & -- & Minkowski spacetime \\ +{\tt "Minkowski/shift"} + & -- & Minkowski spacetime with time-dependent shift vector \\ +{\tt "Minkowski/funny"} + & -- & Minkowski spacetime in non-trivial spatial coordinates\\ +{\tt "Minkowski/gauge wave"} + & -- & Minkowski spacetime in gauge-wave coordinates \\ +{\tt "Minkowski/conf wave"} + & -- & Minkowski spacetime with $\sin$ in conformal factor \\[1ex] +% +\multicolumn{3}{l}{\bf Black hole spacetimes} \\ +{\tt "Schwarzschild/EF"} + & -- & Schwarzschild spacetime + in Eddington-Finkelstein coordinates \\ +{\tt "Schwarzschild/PG"} + & -- & Schwarzschild spacetime in Painlev\'{e}-Gullstrand + coordinates (these have a flat 3-metric) \\ +{\tt "Schwarzschild/Novikov"} + & -- & Schwarzschild spacetime in Novikov coordinates \\ +{\tt "Kerr/Boyer-Lindquist"} + & -- & Kerr spacetime in Boyer-Lindquist coordinates \\ +{\tt "Kerr/Kerr-Schild"} + & -- & Kerr spacetime in Kerr-Schild coordinates \\ +{\tt "Schwarzschild-Lemaitre"} + & Yes & Schwarzschild-Lemaitre spacetime (Schwarzschild + black hole with a cosmological constant) \\ +{\tt "multi-BH"} + & -- & Majumdar-Papapetrou or Kastor-Traschen + maximally-charged (extreme Reissner-Nordstrom) + multi-BH solutions \\ +{\tt "Alvi"} + & -- & Alvi post-Newtonian 2BH spacetime + (not fully implemented yet) \\ +{\tt "Thorne-fakebinary"} + & -- & Thorne's ``fake binary'' spacetime (non-Einstein) \\[1ex] +% +\multicolumn{3}{l}{\bf Cosmological spacetimes} \\ +{\tt "Lemaitre"} + & Yes & Lemaitre-type spacetime \\ +{\tt "Robertson-Walker"} + & Yes & Robertson-Walker spacetime \\ +{\tt "de Sitter"} + & Yes & de~Sitter spacetime \\ +{\tt "de Sitter+Lambda"} + & Yes & de~Sitter spacetime with cosmological constant \\ +{\tt "anti-de Sitter+Lambda"} + & Yes & anti-de~Sitter spacetime with cosmological constant \\ +{\tt "Bianchi I"} + & -- & approximate Bianchi type~I spacetime \\ +{\tt "Goedel"} + & -- & G\"{o}del spacetime \\ +{\tt "Bertotti"} + & Yes & Bertotti spacetime \\ +{\tt "Kasner"} + & Yes & Kasner-like spacetime \\ +{\tt "Kasner-axisymmetric"} + & -- & axisymmetric Kasner spacetime \\ +{\tt "Kasner-generalized"} + & Yes & generalized Kasner spacetime \\ +{\tt "Gowdy-wave"} + & -- & Gowdy metric (polarized wave in an expanding universe)\\ +{\tt "Milne"} + & -- & Milne spacetime for pre-big-bang cosmology \\[1ex] +% +\multicolumn{3}{l}{\bf Miscellaneous spacetimes} \\ +{\tt "boost-rotation symmetric"} + & -- & boost-rotation symmetric spacetime \\ +{\tt "bowl"} + & -- & bowl (``bag of gold'') spacetime (non-Einstein) \\ +{\tt "constant density star"} + & Yes & constant density (Schwarzschild) star %%%\\ +\end{tabular} +\end{center} +\caption{ + This table shows all the models currently supported by + thorn \thorn{Exact}. The $T_{\mu\nu}$ column shows which + models set the Cactus stress-energy tensor; as discussed in + section~\ref{AEIThorns/Exact/cosmological-constant+stress-energy-tensor} + this includes both all non-vacuum models and all models + with a cosmological constant. + } +\label{AEIThorns/Exact/tab-all-models} +\end{table} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Naming Conventions} @@ -305,6 +336,7 @@ REAL Schwarzschild_EF__mass "Schwarzschild/EF: BH mass" %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{The Cosmological Constant and the Stress-Energy Tensor} +\label{AEIThorns/Exact/cosmological-constant+stress-energy-tensor} A number of these models have a cosmological constant. To use these with the Cactus code (which generally is written for the case of no @@ -315,7 +347,7 @@ tensor. This thorn uses the standard Cactus ``\verb|CalcTmunu|'' interface for introducing terms into the stress-energy tensor. See Ian Hawke's -documentation for the {\bf ADMCoupling} thorn for details. +documentation for the \thorn{ADMCoupling} thorn for details. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -330,6 +362,112 @@ omissions here. Caveat Lector! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\section{Lorentz-Boosting a Spacetime} +\label{AEIThorns/Exact/sect-Lorentz-boosting-a-spacetime} + +For any of the models which don't set the stress-energy tensor +(\ie{} which are vacuum and have no cosmological constant; +see section~\ref{AEIThorns/Exact/cosmological-constant+stress-energy-tensor} +and table~\ref{AEIThorns/Exact/tab-all-models} for details),%%% +\footnote{%%% + Only $g_{ab}$ and $g^{ab}$ are transformed, not the + stress-energy tensor, which is why this only works + for models which don't set the stress-energy tensor. + }%%% +{} you can optionally Lorentz-boost the model by a specified 3-velocity +$v^i$. The parameters for this are \verb|boost_vx|, \verb|boost_vy|, +and \verb|boost_vz|. + +We define the Cactus spacetime coordinates to be $(t,x^i)$, +while the model is at rest in coordinates $(T,X^i)$. The model's +``origin'' $X^i = 0$ is located at the Cactus coordinates $x^i = v^i t$. + +The boost Lorentz transformation is defined by +\begin{equation} +\renewcommand{\arraystretch}{1.333} +\begin{array}{lcl} +T & = & \gamma (t - \eta_{ij} v^i x^j) \\ +X^i_\parallel & = & \gamma (x^i_\parallel - v^i t) \\ +X^i_\perp & = & x^i_\perp %%%\\ +\end{array} +\end{equation} +and the inverse transformation by +\begin{equation} +\renewcommand{\arraystretch}{1.333} +\begin{array}{lcl} +t & = & \gamma (T + \eta_{ij} v^i X^j) \\ +x^i_\parallel & = & \gamma (X^i_\parallel + v^i T) \\ +x^i_\perp & = & X^i_\perp %%%\\ +\end{array} +\end{equation} +where $\gamma \equiv (1 - v^2)^{-1/2}$ is the usual Lorentz factor, +$\eta_{ij}$ is the flat metric, and $\parallel$ and $\perp$ refer +to the (flat-space) components of $x^i$ parallel and perpendicular +to $v^i$, respectively. + +In more detail, define the unit vector $n^i = v^i / \sqrt{\eta_{jk} v^j v^k}$ +and the (flat-space) projection operators +\begin{equation} +\renewcommand{\arraystretch}{1.333} +\begin{array}{lclcl} +\parallel^i{}\!_j + & = & \eta_{jk} n^i n^k \\ + & \equiv & + n^i n_j + \qquad + \hbox{(using $\eta_{ij}$ to raise/lower indices)} + \\ +\perp^i{}\!_j & = & \delta^i{}_j - \parallel^i{}\!_j %%%\\ +\end{array} +\end{equation} +Then the Lorentz transformations are +\begin{equation} +\renewcommand{\arraystretch}{1.333} +\begin{array}{lcl} +T & = & \gamma (t - \eta_{ij} v^i x^j) \\ +X^i & = & \gamma (\parallel^i{}\!_j x^j - v^i t) + + \perp^i{}\!_j x^j %%%\\ +\end{array} +\end{equation} +and +\begin{equation} +\renewcommand{\arraystretch}{1.333} +\begin{array}{lcl} +t & = & \gamma (T + \eta_{ij} v^i X^j) \\ +x & = & \gamma (\parallel^i{}\!_j X^j + v^i T) + + \perp^i{}\!_j X^j %%%\\ +\end{array} +\end{equation} +so their coordinate partial derivatives for transforming $g_{ab}$ +and $g^{ab}$ are +\begin{equation} +\renewcommand{\arraystretch}{2.5} +\begin{array}{lcl@{\qquad\qquad\qquad}lcl} +\dfrac{\partial T}{\partial t} & = & \gamma + & +\dfrac{\partial T}{\partial x^j} & = & - \gamma v^j \\ +\dfrac{\partial X^i}{\partial t} & = & - \gamma v^i + & +\dfrac{\partial X^i}{\partial x^j} & = & \gamma \parallel^i{}\!_j + + \perp^i{}\!_j %%%\\ +\end{array} +\end{equation} +and +\begin{equation} +\renewcommand{\arraystretch}{2.5} +\begin{array}{lcl@{\qquad\qquad\qquad}lcl} +\dfrac{\partial t}{\partial T} & = & \gamma + & +\dfrac{\partial t}{\partial X^j} & = & \gamma v^j \\ +\dfrac{\partial x^i}{\partial T} & = & \gamma v^i + & +\dfrac{\partial x^i}{\partial X^j} & = & \gamma \parallel^i{}\!_j + + \perp^i{}\!_j %%%\\ +\end{array} +\end{equation} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \section{Minkowski Spacetime} This thorn can set up Minkowski spacetime using several different @@ -429,10 +567,12 @@ conditions, to see whether the code is able to cope with that. The tricky part is to make the wave fit the grid exactly (otherwise the periodic boundary wouldn't make sence), especially in the diagonal case. -\subsection{Minkowski Spacetime with sinus in conformal factor} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\subsection{Minkowski Spacetime with $\sin$ term in conformal factor} -This spacetime just puts a sinus in the conformal factor and the metric -is calculated to be Minkowski.\\ +\verb|Exact::exact_model = "Minkowski/conf wave"| specifies Minkowski +spacetime with a $\sin$~term in the Cactus static conformal factor. You have three parameters: \begin{itemize} \item Minkowski\_conf\_wave\_\_amplitude ($a$) @@ -444,6 +584,7 @@ These control $\Psi$ in the following form: \Psi=a\sin\left(\frac{2\pi}{l}D\right)+1 \end{equation} Here $D$ is x, y or z according to d of 0, 1 or 2. + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \section{Black Hole Spacetimes} @@ -752,6 +893,10 @@ the mass $m_i = \verb|multi_BH__mass|\,i$ and the $x$, $y$, and $z$ positions $x_i = \verb|multi_BH__x|\,i$, $y_i = \verb|multi_BH__y|\,i$, and $z_i = \verb|multi_BH__z|\,i$ respectively. +Note that this thorn does {\bf not} set $T_{\mu\nu}$. +{\bf FIXME: does treating this metric as vacuum still give a solution +to the Einstein equations?} + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \subsection{Alvi post-Newtonian 2BH spacetime (not fully implemented yet)} @@ -1098,6 +1243,19 @@ spacetimes, see gr-qc/0110031. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\subsection{Gowdy Spacetime} + +\verb|Exact::exact_model = "Gowdy"| specifies a Gowdy spacetime, +which gives a polarized wave in an expanding universe. See +K.~New, K.~Watt, C.~W.~Misner, and J.~Centrella, +``Stable 3-level leapfrog integration in numerical relativity'', +PRD 58, 064022. + +There is only a single parameter, the wave amplitude +\verb|Gowdy_wave__amplitude|. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \subsection{Milne Spacetime for Pre-Big-Bang Cosmology} \verb|Exact::exact_model = "Milne"| specifies a Milne spacetime, @@ -1235,8 +1393,9 @@ spherical symmetry of the metric. The original code, including the boost-rotation symmetric metric and the slice evolver, was written by Carsten Gundlach and Miguel Alcubierre. Many different people have contributed exact solutions. -Mitica Vulcanov wrote the Schwarzschild/Lemaitre solution and most -(all?) of the cosmological solutions. +The Schwarzschild/Lemaitre solution +and most (all?) of the cosmological solutions +were written by Mitica Vulcanov. The Minkowski/gauge wave model was written by Michael Koppitz. In May-June 2002 Jonathan Thornburg cleaned up a lot of the code, systematized the spacetime/coordinate and parameter names, and @@ -1246,8 +1405,10 @@ code works.) The description of the Kastor-Traschen maximally charged multi-BH model is adapted from the file \verb|KTsol.tex| in this same directory, by Hisa-aki Shinkai. +The Gowdy model was written by Denis Pollney. The \verb|ADMBase::evolution_method = "exact"| code was written by Peter Diener. +The ``boost any vacuum solution'' code was written by Jonathan Thornburg. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/doc/how_to_add_a_new_model b/doc/how_to_add_a_new_model index f2ac415..235feb5 100644 --- a/doc/how_to_add_a_new_model +++ b/doc/how_to_add_a_new_model @@ -1,7 +1,7 @@ ************************************************ ***** How to Add a New Model to this Thorn ***** ************************************************ -$Header: /usr/local/svn/cvs-repositories/numrelcvs/AEIThorns/Exact/doc/how_to_add_a_new_model,v 1.4 2003-01-28 15:04:14 knarf Exp $ +$Header: /usr/local/svn/cvs-repositories/numrelcvs/AEIThorns/Exact/doc/how_to_add_a_new_model,v 1.5 2003-05-23 16:35:44 jthorn Exp $ A general note: Please keep the sections for various models in the same order in all the files. This makes it _much_ easier for people @@ -22,6 +22,11 @@ Then you need to modify... gr-qc and/or well-known books. Please also explain the physics meanings of all the parameters -- users should *not* have to look at your source code to figure out what a given parameter means! + README + Add a line or two giving the copyright status of your new code. + You can either put this in one of the existing licensing sections, + or create a new licensing section and add your copyright information + there. param.ccl: Add the new model's character-string name as another possible value for the exact_model parameter. @@ -48,10 +53,14 @@ Then you need to modify... It's probably easiest to start with a copy of an existing file and modify it to compute your new metric -- that will help you get all the "boilerplate" code right. - One additional information about the conformal factor which is passed - to the function: It is preset to 1.0 or 0.0 according to the fact if - it is wanted or not. If you want to have a physical metric, just do not - change it. + Please put a comment at the top of the file giving your name, + a copyright line, and the licensing status of the file (GPL, LGPL, + GPL-with-the-usual-Cactus-exemption-for-linking-with-non-GPL-thorns, + top-secret-you-can-look-at-it-but-then-we-have-to-shoot-you, whatever). + One additional information about the conformal factor which is passed + to the function: It is preset to 1.0 or 0.0 according to the fact if + it is wanted or not. If you want to have a physical metric, just do not + change it. src/metrics/make.code.defn: Add the new file name to the list of files to be compiled. @@ -95,6 +95,25 @@ KEYWORD overwrite_boundary "Overwrite g and K on the boundary" } "no" ################################################################################ +##### parameters for boosting any non-stress-energy-tensor model ############### +################################################################################ + +private: + +REAL boost_vx "x component of boost velocity" +{ +*:* :: "any real number" +} 0.0 +REAL boost_vy "y component of boost velocity" +{ +*:* :: "any real number" +} 0.0 +REAL boost_vz "z component of boost velocity" +{ +*:* :: "any real number" +} 0.0 + +################################################################################ ##### general comments ######################################################### ################################################################################ @@ -7,6 +7,7 @@ This directory contains the main top-level files for thorn Exact. There are subdirectories include/ include files + (n.b. all the code for the stress-energy tensor lives here) metrics/ individual 4-metrics for the various models diff --git a/src/include/Exact.inc b/src/include/Exact.inc index d390993..e3ddef2 100644 --- a/src/include/Exact.inc +++ b/src/include/Exact.inc @@ -11,6 +11,6 @@ c If this option is not needed, then the Fortran 90 code can all be c #ifdef-ed out, allowing this thorn to be compiled on a system c having only Fortran 77 and C compilers (i.e. no Fortran 90 compiler). c To do this, uncomment the following line: -c #define EXACT_NO_F90 +#define EXACT_NO_F90 cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc diff --git a/src/make.code.defn b/src/make.code.defn index 54d7eef..7e41e8d 100644 --- a/src/make.code.defn +++ b/src/make.code.defn @@ -13,6 +13,8 @@ SRCS = ParamCheck.c \ \ gauge.F77 \ Bona_Masso_data.F77 \ + \ + boost.F77 \ metric.F77 \ \ boundary.F77 \ diff --git a/src/metric.F77 b/src/metric.F77 index 32cbf81..86b4cbe 100644 --- a/src/metric.F77 +++ b/src/metric.F77 @@ -1,5 +1,6 @@ c This subroutine calculates the 4-metric and its inverse at an event, -c by decoding decoded_exact_model and calling the appropriate subroutine +c for a given model, by decoding decoded_exact_model and calling the +c appropriate subroutine for that model. C $Header$ #include "cctk.h" @@ -8,13 +9,14 @@ C $Header$ #include "param_defs.inc" - subroutine Exact__metric( + subroutine Exact__metric_for_model( $ decoded_exact_model, $ x, y, z, t, $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz, psi, rama) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi, Tmunu_flag, rama) implicit none DECLARE_CCTK_FUNCTIONS @@ -25,7 +27,10 @@ c arguments $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz, psi, rama + $ guxx, guyy, guzz, guxy, guyz, guxz + CCTK_REAL psi + LOGICAL Tmunu_flag + CCTK_REAL rama c local variables character*100 warn_buffer @@ -43,7 +48,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__Minkowski_shift) then call Exact__Minkowski_shift( @@ -52,7 +57,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__Minkowski_funny) then call Exact__Minkowski_funny( @@ -61,7 +66,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__Minkowski_gauge_wave) then call Exact__Minkowski_gauge_wave( @@ -70,7 +75,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__Minkowski_conf_wave) then call Exact__Minkowski_conf_wave( @@ -79,7 +84,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc @@ -94,7 +99,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__Schwarzschild_PG) then call Exact__Schwarzschild_PG( @@ -103,7 +108,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__Schwarzschild_Novikov) then call Exact__Schwarzschild_Novikov(x,y,z,t, @@ -111,7 +116,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__Kerr_BoyerLindquist) then call Exact__Kerr_BoyerLindquist( @@ -120,7 +125,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__Kerr_KerrSchild) then call Exact__Kerr_KerrSchild( @@ -129,7 +134,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__Schwarzschild_Lemaitre) then call Exact__Schwarzschild_Lemaitre( @@ -138,7 +143,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__multi_BH) then call Exact__multi_BH( @@ -147,7 +152,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) c c not fully implemented yet -- see Nina Jansen for details @@ -159,7 +164,7 @@ c $ gdtt, gdtx, gdty, gdtz, c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, c $ gutt, gutx, guty, gutz, c $ guxx, guyy, guzz, guxy, guyz, guxz, -c $ psi) +c $ psi, Tmunu_flag) c elseif (decoded_exact_model .eq. EXACT__Thorne_fakebinary) then @@ -169,7 +174,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc @@ -184,7 +189,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__Robertson_Walker) then call Exact__Robertson_Walker( @@ -192,7 +197,8 @@ c $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz, psi, rama) + $ guxx, guyy, guzz, guxy, guyz, guxz, + $ psi, Tmunu_flag, rama) elseif (decoded_exact_model .eq. EXACT__de_Sitter) then call Exact__de_Sitter( @@ -201,7 +207,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__de_Sitter_Lambda) then call Exact__de_Sitter_Lambda( @@ -210,7 +216,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__anti_de_Sitter_Lambda) then call Exact__anti_de_Sitter_Lambda( @@ -219,7 +225,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__Bianchi_I) then call Exact__Bianchi_I( @@ -228,7 +234,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__Goedel) then call Exact__Goedel( @@ -237,7 +243,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__Bertotti) then call Exact__Bertotti( @@ -246,7 +252,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__Kasner_like) then call Exact__Kasner_like( @@ -255,7 +261,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__Kasner_axisymmetric) then call Exact__Kasner_axisymmetric( @@ -264,7 +270,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__Kasner_generalized) then call Exact__Kasner_generalized( @@ -273,7 +279,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__Gowdy_wave) then call Exact__Gowdy_wave( @@ -282,7 +288,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__Milne) then call Exact__Milne( @@ -291,7 +297,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc @@ -306,7 +312,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__bowl) then call Exact__bowl( @@ -315,7 +321,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) elseif (decoded_exact_model .eq. EXACT__constant_density_star) then call Exact__constant_density_star( @@ -324,7 +330,7 @@ c $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc diff --git a/src/metrics/Alvi.F77 b/src/metrics/Alvi.F77 index 7ee21fb..39b2879 100644 --- a/src/metrics/Alvi.F77 +++ b/src/metrics/Alvi.F77 @@ -12,31 +12,36 @@ C $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS - +c input arguments CCTK_REAL x, y, z, t - logical firstcall - - CCTK_REAL m1,m2,b - - data firstcall /.true./ - - save firstcall, m1,m2,b +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c static locals + logical firstcall + CCTK_REAL m1,m2,b + data firstcall /.true./ + save firstcall, m1,m2,b +c locals CCTK_REAL rin1,rin2,rout,x1,x2, r1, r2, r3, results(10) +C this is a vacuum solution with no cosmological constant +C ==> it doesn't set the stress-energy tensor + Tmunu_flag = .false. + if (firstcall) then m1 = Alvi__mass1 m2 = Alvi__mass2 diff --git a/src/metrics/Bertotti.F77 b/src/metrics/Bertotti.F77 index 5533422..bce4a5a 100644 --- a/src/metrics/Bertotti.F77 +++ b/src/metrics/Bertotti.F77 @@ -11,30 +11,40 @@ C $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c static local variables logical firstcall - - CCTK_REAL baza, unu, doi - data firstcall /.true./ save firstcall, baza + +c local variables + CCTK_REAL baza + CCTK_REAL unu, doi + +C this model has a cosmological constant +C ==> it sets the stress-energy tensor in the "CalcTmunu" code + Tmunu_flag = .true. + if (firstcall) then baza = Bertotti__Lambda firstcall = .false. end if - unu=exp(2.0D0*dsqrt(-baza)*x) doi=exp(2.0D0*dsqrt(-baza)*z) diff --git a/src/metrics/Bianchi_I.F77 b/src/metrics/Bianchi_I.F77 index feece73..69e90dc 100644 --- a/src/metrics/Bianchi_I.F77 +++ b/src/metrics/Bianchi_I.F77 @@ -13,31 +13,39 @@ C $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local static variables logical firstcall - - CCTK_REAL bx, by, arad - data firstcall /.true./ save firstcall + +c local variables + CCTK_REAL bx, by, arad + +C This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .false. + if (firstcall) then arad = Bianchi_I__scale firstcall = .false. end if - bx = arad*sin(x+t) by = arad*cos(x+t) diff --git a/src/metrics/Goedel.F77 b/src/metrics/Goedel.F77 index 513e3e1..a7c459a 100644 --- a/src/metrics/Goedel.F77 +++ b/src/metrics/Goedel.F77 @@ -13,31 +13,39 @@ C $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local static variables logical firstcall - - CCTK_REAL arad - data firstcall /.true./ save firstcall + +c local variables + CCTK_REAL arad + +C This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .false. + if (firstcall) then arad = Goedel__scale firstcall = .false. end if - gdtt = -arad*arad gdtx = 0.d0 diff --git a/src/metrics/Gowdy.F77 b/src/metrics/Gowdy.F77 index 03c90de..cfb3354 100644 --- a/src/metrics/Gowdy.F77 +++ b/src/metrics/Gowdy.F77 @@ -20,28 +20,38 @@ C @@ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local static variables logical firstcall - CCTK_REAL amp - CCTK_REAL Bessel_J0, Bessel_J1, Bessel_J0_t, Bessel_J1_t - CCTK_REAL PI, twoPI, cosz, eP, lambda - CCTK_REAL d1, d2, d3, d4, d5, d6 - + CCTK_REAL PI, twoPI + CCTK_REAL Bessel_J0, Bessel_J1 data firstcall /.true./ save firstcall, amp, PI, twoPI, Bessel_J0, Bessel_J1 + +c local variables + CCTK_REAL Bessel_J0_t, Bessel_J1_t + CCTK_REAL cosz, eP, lambda + CCTK_REAL d1, d2, d3, d4, d5, d6 + +C This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .false. if (firstcall) then amp = Gowdy_wave__amplitude diff --git a/src/metrics/Kasner_axisymmetric.F77 b/src/metrics/Kasner_axisymmetric.F77 index d6480dd..3f29ede 100644 --- a/src/metrics/Kasner_axisymmetric.F77 +++ b/src/metrics/Kasner_axisymmetric.F77 @@ -11,18 +11,25 @@ C $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag + +C This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .false. gdtt = -t**(-0.5d0) gdtx = 0.d0 diff --git a/src/metrics/Kasner_generalized.F77 b/src/metrics/Kasner_generalized.F77 index c3e8a63..b0f7883 100644 --- a/src/metrics/Kasner_generalized.F77 +++ b/src/metrics/Kasner_generalized.F77 @@ -11,31 +11,40 @@ C $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local static variables logical firstcall - - CCTK_REAL pp1,pp2,a1,a2,a3 - data firstcall /.true./ save firstcall, pp1, pp2 + +c local variables + CCTK_REAL pp1,pp2,a1,a2,a3 + +C This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .true. + if (firstcall) then pp1= Kasner_generalized__p1 pp2= Kasner_generalized__p2 firstcall = .false. end if - + a1= t**(2.d0*pp1) a2= t**(2.d0*pp2) a3= t**(2.d0-2.d0*pp1-2.d0*pp2) diff --git a/src/metrics/Kasner_like.F77 b/src/metrics/Kasner_like.F77 index bd24380..717b317 100644 --- a/src/metrics/Kasner_like.F77 +++ b/src/metrics/Kasner_like.F77 @@ -15,30 +15,39 @@ C $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local static variables logical firstcall - - CCTK_REAL qq,a1,a3 - data firstcall /.true./ save firstcall, qq + +c local variables + CCTK_REAL qq,a1,a3 + +c this model sets the stress-energy tensor in the "CalcTmunu" code + Tmunu_flag = .true. + if (firstcall) then qq = Kasner_like__q firstcall = .false. end if - + a1= t**(2.d0*qq) a3= t**(2.d0-4.d0*qq) diff --git a/src/metrics/Kerr_BoyerLindquist.F77 b/src/metrics/Kerr_BoyerLindquist.F77 index 076d9f8..d069b8e 100644 --- a/src/metrics/Kerr_BoyerLindquist.F77 +++ b/src/metrics/Kerr_BoyerLindquist.F77 @@ -12,32 +12,39 @@ C $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local static variables logical firstcall + data firstcall /.true./ + save firstcall, arad, marad CCTK_REAL arad, marad - data firstcall /.true./ - save firstcall, arad, marad +C This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .false. + if (firstcall) then arad = Kerr_BoyerLindquist__spin marad = Kerr_BoyerLindquist__mass firstcall = .false. end if - gdtt = -(y**2*arad**2+x**2-2*marad*x)/(x**2+y**2*arad**2) gdtx = 2*(arad*marad*x*(y**2-1))/(x**2+y**2*arad**2) diff --git a/src/metrics/Kerr_KerrSchild.F77 b/src/metrics/Kerr_KerrSchild.F77 index ad9ac27..1c6ef6b 100644 --- a/src/metrics/Kerr_KerrSchild.F77 +++ b/src/metrics/Kerr_KerrSchild.F77 @@ -13,28 +13,34 @@ C $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS DECLARE_CCTK_FUNCTIONS +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi - - CCTK_REAL gamma, t0, z0, x0, y0, rho02, r02, r0, costheta0, - $ lt0, lx0, ly0, lz0, hh, lt, lx, ly, lz + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local static variables logical firstcall CCTK_REAL boostv, eps, m, a data firstcall /.true./ save firstcall, boostv, eps, m, a +c local variables + CCTK_REAL gamma, t0, z0, x0, y0, rho02, r02, r0, costheta0, + $ lt0, lx0, ly0, lz0, hh, lt, lx, ly, lz + integer R02_TOO_SMALL_WARN_LEVEL parameter (R02_TOO_SMALL_WARN_LEVEL = 2) @@ -42,6 +48,9 @@ C $Header$ cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc +C This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .false. + C Get parameters of the exact solution, C and convert from parameter file spin parameter J/m^2 C to the J/m definition used in the code here. diff --git a/src/metrics/Lemaitre.F77 b/src/metrics/Lemaitre.F77 index 9819c45..3288fd2 100644 --- a/src/metrics/Lemaitre.F77 +++ b/src/metrics/Lemaitre.F77 @@ -13,28 +13,37 @@ C $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS DECLARE_CCTK_FUNCTIONS - +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local static variables logical firstcall - - CCTK_REAL la, e0, ka, unu, ra, ra2, r0, Pii - + CCTK_REAL ka, la, e0, r0 data firstcall /.true./ save firstcall, ka, la, e0, r0 + +c local variables + CCTK_REAL unu, ra, ra2, Pii + +c this model sets the stress-energy tensor in the "CalcTmunu" code + Tmunu_flag = .true. + if (firstcall) then ka = Lemaitre__kappa e0 = Lemaitre__epsilon0 diff --git a/src/metrics/Milne.F77 b/src/metrics/Milne.F77 index d441cb6..5284686 100644 --- a/src/metrics/Milne.F77 +++ b/src/metrics/Milne.F77 @@ -13,22 +13,26 @@ C $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none -c Input. - +c input arguments CCTK_REAL x, y, z, t -c Output. - +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi, - $ coef, x2,y2,z2,t2 + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag + +c local variables + CCTK_REAL coef, x2,y2,z2,t2 + +C This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .false. x2= x*x y2= y*y diff --git a/src/metrics/Minkowski.F77 b/src/metrics/Minkowski.F77 index 88031c2..ac9918c 100644 --- a/src/metrics/Minkowski.F77 +++ b/src/metrics/Minkowski.F77 @@ -9,21 +9,23 @@ C $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none -c Input. - +c input arguments CCTK_REAL x, y, z, t -c Output. - +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag + +C This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .false. gdtt = -1.d0 gdtx = 0.d0 diff --git a/src/metrics/Minkowski_conf_wave.F77 b/src/metrics/Minkowski_conf_wave.F77 index 301fb62..0f94db4 100644 --- a/src/metrics/Minkowski_conf_wave.F77 +++ b/src/metrics/Minkowski_conf_wave.F77 @@ -16,18 +16,25 @@ C Licence: GPL 2 or later $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS DECLARE_CCTK_FUNCTIONS +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag + +C This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .false. C write conformal factor if (Minkowski_conf_wave__direction .eq. 0) then diff --git a/src/metrics/Minkowski_funny.F77 b/src/metrics/Minkowski_funny.F77 index a1b5af7..301fa20 100644 --- a/src/metrics/Minkowski_funny.F77 +++ b/src/metrics/Minkowski_funny.F77 @@ -20,36 +20,35 @@ c $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS -c Input. - +c input arguments CCTK_REAL x,y,z,t -c Output. - +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi - -c Internal. + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local variables CCTK_REAL a,s CCTK_REAL r,r2,x2,y2,z2 CCTK_REAL f,fp,g11,g22 - CCTK_REAL det,zero,one,two + CCTK_REAL det -c Define numbers. +c constants + CCTK_REAL zero, one, two + parameter (zero=0.0d0, one=1.0d0, two=2.0d0) - zero = 0.0d0 - one = 1.0d0 - two = 2.0d0 +c This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .false. c Read parameters diff --git a/src/metrics/Minkowski_gauge_wave.F77 b/src/metrics/Minkowski_gauge_wave.F77 index a4f8a6f..7090f36 100644 --- a/src/metrics/Minkowski_gauge_wave.F77 +++ b/src/metrics/Minkowski_gauge_wave.F77 @@ -13,32 +13,38 @@ c $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS DECLARE_CCTK_FUNCTIONS +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local static variables logical firstcall - - CCTK_REAL a, o, H, d, fs - CCTK_REAL zero,half,one - + CCTK_REAL a, o, d, fs data firstcall /.true./ save firstcall, a, o, d, fs -C Numbers. +c local variables + CCTK_REAL H + +c constants + CCTK_REAL zero,half,one + parameter (zero = 0.0d0, half=0.5d0, one=1.0d0) - zero = 0.0d0 - half = 0.5d0 - one = 1.0d0 +C This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .false. C Get parameters of the exact solution. diff --git a/src/metrics/Minkowski_shift.F77 b/src/metrics/Minkowski_shift.F77 index ab8bca4..21799d0 100644 --- a/src/metrics/Minkowski_shift.F77 +++ b/src/metrics/Minkowski_shift.F77 @@ -22,37 +22,34 @@ c $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS -c Input. - +c input arguments CCTK_REAL x,y,z,t -c Output. - +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi - - -c Internal. + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local variables CCTK_REAL a,s CCTK_REAL r,r2,x2,y2,z2 CCTK_REAL f,fp,fpr,fpr2 - CCTK_REAL zero,one,two -c Define numbers. +c constants + CCTK_REAL zero,one,two + parameter (zero=0.0d0, one=1.0d0, two=2.0d0) - zero = 0.0d0 - one = 1.0d0 - two = 2.0d0 +c This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .false. c Read parameters diff --git a/src/metrics/README b/src/metrics/README index 91cefae..dba8912 100644 --- a/src/metrics/README +++ b/src/metrics/README @@ -4,14 +4,42 @@ Description of files in this directory $Header$ This file contains (typically) one file for each model, containing -a Fortran-callable subroutine +a Fortran-callable subroutine to compute the 4-metric $g_{ab}$ and +inverse 4-metric $g^{ab}$: subroutine Exact__model_name_coords( $ x, y, z, t, $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx) -to compute the 4-metric $g_{ab}$ and inverse 4-metric $g^{ab}$. + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi, Tmunu_flag) + CCTK_REAL x, y, z, t + CCTK_REAL gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag + CCTK_REAL rama + ... + RETURN + END + + psi is normally unused, but can be set by the subroutine to explicitly +specify the Cactus static conformal factor. At present only the +"Minkowski_gauge_wave" model does this + +The subroutine should set Tmunu_flag to .true. if this model needs +to set the stress-energy tensor (i.e. if it's non-vacuum and/or it has +a cosmological constant, or .false. if it doesn't (i.e. if it's vacuum +and has no cosmological constant). + +The "Robertson/Walker" model has an extra argument rama . +Alas, Mitica neglected to document what it means :( :( :(, +and so far I (Jonathan) haven't found any higher-level routine which +uses it. + + FIXME: Wouldn't it be cleaner to just compute $g_{ab}$, and use a 4x4 matrix inversion to get the other one? diff --git a/src/metrics/Robertson_Walker.F77 b/src/metrics/Robertson_Walker.F77 index 8335762..b7340e4 100644 --- a/src/metrics/Robertson_Walker.F77 +++ b/src/metrics/Robertson_Walker.F77 @@ -13,27 +13,39 @@ C $Header$ $ gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, psi, rama) + $ guxx, guyy, guzz, guxy, guyz, guzx, + $ psi, Tmunu_flag, + $ rama) implicit none DECLARE_CCTK_PARAMETERS DECLARE_CCTK_FUNCTIONS - +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, psi, rama - + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag + CCTK_REAL rama +c local static variables logical firstcall - - CCTK_REAL r2,x2,y2,z2,am,ag, kapa - + CCTK_REAL kapa data firstcall /.true./ save firstcall, kapa + +c local variables + CCTK_REAL r2,x2,y2,z2,am,ag + +C This model may set the stress-energy tensor + Tmunu_flag = .true. + if (firstcall) then kapa = Robertson_Walker__k firstcall = .false. diff --git a/src/metrics/Schwarzschild_EF.F77 b/src/metrics/Schwarzschild_EF.F77 index 4f69802..7f3b9f7 100644 --- a/src/metrics/Schwarzschild_EF.F77 +++ b/src/metrics/Schwarzschild_EF.F77 @@ -11,37 +11,41 @@ c $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local static variables logical firstcall - CCTK_REAL eps, m - data firstcall /.true./ save firstcall, eps, m +c local variables CCTK_REAL r +C This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .false. + C Get parameters of the exact solution. if (firstcall) then - eps = Schwarzschild_EF__epsilon m = Schwarzschild_EF__mass - firstcall = .false. - end if r = max(sqrt(x**2 + y**2 + z**2), eps) diff --git a/src/metrics/Schwarzschild_Lemaitre.F77 b/src/metrics/Schwarzschild_Lemaitre.F77 index 6d9d033..eb5d44e 100644 --- a/src/metrics/Schwarzschild_Lemaitre.F77 +++ b/src/metrics/Schwarzschild_Lemaitre.F77 @@ -13,25 +13,35 @@ C $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local static variables logical firstcall - - CCTK_REAL lam, mas, r2, ppp, unu, doi - data firstcall /.true./ save firstcall + +c local variables + CCTK_REAL lam, mas, r2, ppp, unu, doi + +C This model has a cosmological constant + Tmunu_flag = .true. + + if (firstcall) then lam = Schwarzschild_Lemaitre__Lambda mas = Schwarzschild_Lemaitre__mass diff --git a/src/metrics/Schwarzschild_Novikov.F77 b/src/metrics/Schwarzschild_Novikov.F77 index 38dafc7..dd09c2a 100644 --- a/src/metrics/Schwarzschild_Novikov.F77 +++ b/src/metrics/Schwarzschild_Novikov.F77 @@ -15,41 +15,45 @@ C $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS -c Input. - +c input arguments CCTK_REAL x, y, z, t -c Output. - +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag -c Internal. +c local static variables logical firstcall - CCTK_REAL eps, mass - data firstcall /.true./ save firstcall, eps, mass +c local variables CCTK_REAL radius CCTK_REAL r,c,psi4 - CCTK_REAL zero,one,two CCTK_REAL nov_dr_drmax, nov_rmax, nov_r CCTK_REAL grr, gqq, detg CCTK_REAL psi4_o_r2 +c constants + CCTK_REAL zero,one,two + parameter (zero=0.0d0, one=1.0d0, two=2.0d0) + +C This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .false. + C Get parameters of the exact solution. if (firstcall) then @@ -63,12 +67,6 @@ C Get parameters of the exact solution. r = max(sqrt(x**2 + y**2 + z**2), eps) -c Find {zero,one,two}. - - zero = 0.0D0 - one = 1.0D0 - two = 2.0D0 - c Find r. r = dsqrt(x**2 + y**2 + z**2) diff --git a/src/metrics/Schwarzschild_PG.F77 b/src/metrics/Schwarzschild_PG.F77 index 13db0f1..d6124c4 100644 --- a/src/metrics/Schwarzschild_PG.F77 +++ b/src/metrics/Schwarzschild_PG.F77 @@ -12,37 +12,41 @@ c $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local static variables logical firstcall - CCTK_REAL eps, m - data firstcall /.true./ save firstcall, eps, m +c local variables CCTK_REAL r, bx, by, bz, b2 +C This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .false. + C Get parameters of the exact solution. if (firstcall) then - eps = Schwarzschild_PG__epsilon m = Schwarzschild_PG__mass - firstcall = .false. - end if r = max(sqrt(x**2 + y**2 + z**2), eps) diff --git a/src/metrics/Thorne_fakebinary.F77 b/src/metrics/Thorne_fakebinary.F77 index 8c3f842..1feb9b2 100644 --- a/src/metrics/Thorne_fakebinary.F77 +++ b/src/metrics/Thorne_fakebinary.F77 @@ -16,28 +16,26 @@ C $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS DECLARE_CCTK_FUNCTIONS -C input +c input arguments CCTK_REAL x, y, z, t -C output +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdxz, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guxz, - $ psi - -C static + $ guxx, guyy, guzz, guxy, guyz, guxz + CCTK_REAL psi + LOGICAL Tmunu_flag +c local variables logical firstcall - CCTK_REAL eps, m, a0, Omega0, bround, atype, aretarded - data firstcall /.true./ save firstcall, eps, m, a0, Omega0, bround, atype, aretarded @@ -47,10 +45,12 @@ C temps CCTK_REAL rho, r, sinp, cosp, phi, sint, cost, tx, ty, tz, px, py, pz CCTK_REAL a2, b2, bx, by, bz, detgd +C This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .false. + C get parameters of the exact solution. if (firstcall) then - firstcall = .false. eps = Thorne_fakebinary__epsilon @@ -76,7 +76,6 @@ C get parameters of the exact solution. else aretarded = 0.d0 endif - end if C spherical coordinates diff --git a/src/metrics/anti_de_Sitter_Lambda.F77 b/src/metrics/anti_de_Sitter_Lambda.F77 index 483d847..326ce6b 100644 --- a/src/metrics/anti_de_Sitter_Lambda.F77 +++ b/src/metrics/anti_de_Sitter_Lambda.F77 @@ -11,34 +11,41 @@ C $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local static variables logical firstcall - - CCTK_REAL arad,am - + CCTK_REAL arad data firstcall /.true./ save firstcall, arad + +c local variables + CCTK_REAL am + +C This model has a cosmological constant + Tmunu_flag = .true. + if (firstcall) then arad = anti_de_Sitter_Lambda__scale firstcall = .false. end if - - am=exp(2.0D0*dsqrt(-arad/3.0D0)*x) - gdtt = -am gdtx = 0.0D0 diff --git a/src/metrics/boost_rotation_symmetric.F77 b/src/metrics/boost_rotation_symmetric.F77 index 0a69f8d..7cc75d0 100644 --- a/src/metrics/boost_rotation_symmetric.F77 +++ b/src/metrics/boost_rotation_symmetric.F77 @@ -11,30 +11,40 @@ c $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS - CCTK_REAL x, y, z, t, - $ gdtt, gdtx, gdty, gdtz, - $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, - $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi +c input arguments + CCTK_REAL x, y, z, t + +c output arguments + CCTK_REAL gdtt, gdtx, gdty, gdtz, + $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, + $ gutt, gutx, guty, gutz, + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag + +c functions local to this file + CCTK_REAL gfunc + +c local variables CCTK_REAL a, b, mu0, mu1, lam1, mu2, lam2, $ lam3, mu4, lam4, mu5, lam5, num, div, f, - $ elam, emu0, delta, gfunc, tmp - CCTK_REAL h, d, numlim - - external gfunc + $ elam, emu0, delta, tmp +c local static variables logical firstcall - + CCTK_REAL h, d, numlim data firstcall /.true./ save firstcall, h, d, numlim +C This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .false. + C Get parameters of the exact solution. if (firstcall) then @@ -141,13 +151,13 @@ ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc C Calculates g = [exp (x f) - 1] / x as a power series for small x, C so that the expression is regular at x = 0. - function gfunc(x, f) + CCTK_REAL function gfunc(x, f) implicit none integer n - CCTK_REAL x, f, gfunc + CCTK_REAL x, f CCTK_REAL sum, tmp if (abs(x*f) .ge. 1.d-6) then diff --git a/src/metrics/bowl.F77 b/src/metrics/bowl.F77 index 36a1cf7..683886f 100644 --- a/src/metrics/bowl.F77 +++ b/src/metrics/bowl.F77 @@ -58,43 +58,46 @@ c $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS DECLARE_CCTK_FUNCTIONS -c Input. +c input arguments CCTK_REAL x, y, z, t -c Output. +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local static variables logical firstcall,evolve + CCTK_REAL a,c,s + CCTK_REAL dx,dy,dz + CCTK_REAL t0,st + data firstcall /.true./ + save firstcall,evolve,type,a,c,s,dx,dy,dz,t0,st +c local variables integer type - CCTK_REAL a,c,s - CCTK_REAL dx,dy,dz CCTK_REAL r,r2,rr2 CCTK_REAL xr,yr,zr,xr2,yr2,zr2 CCTK_REAL fac,det - CCTK_REAL tfac,st,t0 - CCTK_REAL zero,one,two + CCTK_REAL tfac - data firstcall /.true./ - save firstcall,evolve,type,a,c,s,dx,dy,dz,t0,st - -c Find {zero,one,two}. +c constants + CCTK_REAL zero,one,two + parameter (zero=0.0d0, one=1.0d0, two=2.0d0) - zero = 0.0d0 - one = 1.0d0 - two = 2.0d0 +C This is a vacuum spacetime with no cosmological constant + Tmunu_flag = .false. c Get parameters of the metric. diff --git a/src/metrics/constant_density_star.F77 b/src/metrics/constant_density_star.F77 index aecb4ab..35b8bc4 100644 --- a/src/metrics/constant_density_star.F77 +++ b/src/metrics/constant_density_star.F77 @@ -6,6 +6,14 @@ c to set up the matter variables. c Author: Mitica Vulcanov c $Header$ +c +c The metric is given as a conformally flat metric. +c Turns out that in the original areal radius, the +c metric variables have a kink at the surface of the +c star, but they are smooth in the conformal form. +c +c Thanks to Philippos Papadopoulos for suggesting +c the use of this metric. #include "cctk.h" #include "cctk_Parameters.h" @@ -16,49 +24,39 @@ c $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) - -c -c The metric is given as a conformally flat metric. -c Turns out that in the original areal radius, the -c metric variables have a kink at the surface of the -c star, but they are smooth in the conformal form. -c -c Thanks to Philippos Papadopoulos for suggesting -c the use of this metric. + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS -c Input. - +c input arguments CCTK_REAL x, y, z, t -c Output. - +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi - -c Internal. + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local static variables logical firstcall - CCTK_REAL mass,radius - CCTK_REAL r,c,psi4 - CCTK_REAL zero,one,two - data firstcall /.true./ save firstcall, mass, radius -c Find {zero,one,two}. +c local variables + CCTK_REAL r,c,psi4 + +c constants + CCTK_REAL zero,one,two + parameter (zero=0.0d0, one=1.0d0, two=2.0d0) - zero = 0.0D0 - one = 1.0D0 - two = 2.0D0 +c This model has matter +c ==> it sets the stress-energy tensor in the "CalcTmunu" code + Tmunu_flag = .true. c Get parameters of the metric. diff --git a/src/metrics/de_Sitter.F77 b/src/metrics/de_Sitter.F77 index f073d73..34ab08a 100644 --- a/src/metrics/de_Sitter.F77 +++ b/src/metrics/de_Sitter.F77 @@ -17,25 +17,36 @@ C $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local static variables logical firstcall - - CCTK_REAL arad,am - + CCTK_REAL arad data firstcall /.true./ save firstcall, arad + +c local variables + CCTK_REAL am + +C This model has a cosmological constant +C ==> it sets the stress-energy tensor in the "CalcTmunu" code + Tmunu_flag = .true. + if (firstcall) then arad = de_Sitter__scale firstcall = .false. diff --git a/src/metrics/de_Sitter_Lambda.F77 b/src/metrics/de_Sitter_Lambda.F77 index 868557a..aa03288 100644 --- a/src/metrics/de_Sitter_Lambda.F77 +++ b/src/metrics/de_Sitter_Lambda.F77 @@ -11,25 +11,36 @@ C $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS +c input arguments CCTK_REAL x, y, z, t + +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local static variables logical firstcall - - CCTK_REAL arad,am - + CCTK_REAL arad data firstcall /.true./ save firstcall, arad + +c local variables + CCTK_REAL am + +C This model is non-vacuum +C ==> it sets the stress-energy tensor in the "CalcTmunu" code + Tmunu_flag = .true. + if (firstcall) then arad = de_Sitter_Lambda__scale firstcall = .false. diff --git a/src/metrics/multi_BH.F77 b/src/metrics/multi_BH.F77 index 0068db0..145d6a0 100644 --- a/src/metrics/multi_BH.F77 +++ b/src/metrics/multi_BH.F77 @@ -25,32 +25,40 @@ c $Header$ $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi) + $ psi, Tmunu_flag) implicit none DECLARE_CCTK_PARAMETERS -c Input. +c input arguments CCTK_REAL x, y, z, t -c Output. +c output arguments CCTK_REAL gdtt, gdtx, gdty, gdtz, $ gdxx, gdyy, gdzz, gdxy, gdyz, gdzx, $ gutt, gutx, guty, gutz, - $ guxx, guyy, guzz, guxy, guyz, guzx, - $ psi + $ guxx, guyy, guzz, guxy, guyz, guzx + CCTK_REAL psi + LOGICAL Tmunu_flag +c local static variables logical firstcall - - CCTK_REAL kt_r, kt_aa, kt_omega - CCTK_REAL one,zero CCTK_REAL kt_xbh(10),kt_ybh(10),kt_zbh(10),kt_mbh(10) + data firstcall /.true./ + save firstcall,kt_xbh,kt_ybh,kt_zbh,kt_mbh +c local variables + CCTK_REAL kt_r, kt_aa, kt_omega integer i - data firstcall /.true./ - save firstcall,kt_xbh,kt_ybh,kt_zbh,kt_mbh +c constants + CCTK_REAL zero,one + parameter (zero=0.0d0, one=1.0d0) + +C This model doesn't set the stress-energy tensor +C FIXME: should it? I.e. isn't there a nonzero Maxwell tensor here? + Tmunu_flag = .false. c Get parameters of the exact solution. @@ -97,9 +105,6 @@ c Get parameters of the exact solution. end if - one =1.0 - zero=0.0 - kt_aa=exp(multi_BH__Hubble*t) kt_omega=1.0 diff --git a/src/slice_evolve.F b/src/slice_evolve.F index 75b12f4..c296b41 100644 --- a/src/slice_evolve.F +++ b/src/slice_evolve.F @@ -17,6 +17,7 @@ c #define-ing the symbol EXACT_NO_F90 will turn this subroutine into a no-op CCTK_REAL s1d(4,3), nd(4), nu(4), norm, gd(4,4), gu(4,4) CCTK_REAL dx,dy,dz,dt + CCTK_REAL psi C Grid parameters. @@ -84,7 +85,8 @@ C x^A. $ gd(1,2), gd(2,3), gd(1,3), $ gu(4,4), gu(1,4), gu(2,4), gu(3,4), $ gu(1,1), gu(2,2), gu(3,3), - $ gu(1,2), gu(2,3), gu(1,3)) + $ gu(1,2), gu(2,3), gu(1,3), + $ psi) C Calculate n^A and dx^A/dt #include "include/slice_normal.inc" |