User: reisswig Date: 2011/06/15 11:18 AM
Added: /PITTNullCode/NullPsiInt/ README, configuration.ccl, interface.ccl, param.ccl, schedule.ccl /PITTNullCode/NullPsiInt/doc/ documentation.tex /PITTNullCode/NullPsiInt/src/ NullPsiInt_InitMoL.F90, NullPsiInt_MoLRegister.c, NullPsiInt_dotNewsPsi.F90, make.code.defn
Log: Re-added thorn mistakenly removed in previous commit.
File Changes:
Directory: /PITTNullCode/NullPsiInt/ ====================================
File [added]: README Delta lines: +9 -0 =================================================================== --- PITTNullCode/NullPsiInt/README (rev 0) +++ PITTNullCode/NullPsiInt/README 2011-06-15 16:18:44 UTC (rev 39) @@ -0,0 +1,9 @@ +Cactus Code Thorn NullPsi4IO +Author(s) : Maria Babiuc babiuc@marshall.edu +Maintainer(s): Maria Babiuc babiuc@marshall.edu +Licence : N +-------------------------------------------------------------------------- + +1. Purpose + +not documented
File [added]: configuration.ccl Delta lines: +2 -0 =================================================================== --- PITTNullCode/NullPsiInt/configuration.ccl (rev 0) +++ PITTNullCode/NullPsiInt/configuration.ccl 2011-06-15 16:18:44 UTC (rev 39) @@ -0,0 +1,2 @@ + +REQUIRES THORNS: Fortran NullNews NullGrid
File [added]: interface.ccl Delta lines: +59 -0 =================================================================== --- PITTNullCode/NullPsiInt/interface.ccl (rev 0) +++ PITTNullCode/NullPsiInt/interface.ccl 2011-06-15 16:18:44 UTC (rev 39) @@ -0,0 +1,59 @@ +# Interface definition for thorn NullPsiInt +# $Header:$ + +implements: NullPsiInt +inherits: NullVars NullGrid NullNews NullInterp NullEvolve + +CCTK_INT FUNCTION MoLRegisterEvolvedGroup(CCTK_INT IN EvolvedIndex, \ + CCTK_INT IN RHSIndex) + + +REQUIRES FUNCTION MoLRegisterEvolvedGroup + +public: + +# News and Psi4 masked +cctk_complex NewsB_mask[2] Type=ARRAY dim=2 size=\ +(NullGrid::N_ang_pts_inside_eq+2*(NullGrid::N_ang_ev_outside_eq+NullGrid::N_ang_stencil_size)),\ +(NullGrid::N_ang_pts_inside_eq+2*(NullGrid::N_ang_ev_outside_eq+NullGrid::N_ang_stencil_size)) \ + GHOSTSIZE=NullGrid::N_ang_ghost_pts,NullGrid::N_ang_ghost_pts \ +"News inside equator" + +cctk_complex Psi4_mask[2] Type=ARRAY dim=2 size=\ +(NullGrid::N_ang_pts_inside_eq+2*(NullGrid::N_ang_ev_outside_eq+NullGrid::N_ang_stencil_size)),\ +(NullGrid::N_ang_pts_inside_eq+2*(NullGrid::N_ang_ev_outside_eq+NullGrid::N_ang_stencil_size)) \ + GHOSTSIZE=NullGrid::N_ang_ghost_pts,NullGrid::N_ang_ghost_pts \ +"Psi4 inside equator" + +#MoL variables +cctk_complex NewsB_Psi[2] Type=ARRAY dim=2 size=\ +(NullGrid::N_ang_pts_inside_eq+2*(NullGrid::N_ang_ev_outside_eq+NullGrid::N_ang_stencil_size)),\ +(NullGrid::N_ang_pts_inside_eq+2*(NullGrid::N_ang_ev_outside_eq+NullGrid::N_ang_stencil_size)) \ + GHOSTSIZE=NullGrid::N_ang_ghost_pts,NullGrid::N_ang_ghost_pts \ +"integrated Psi" + +private: + +cctk_real re_dotNewsB[2] Type=ARRAY timelevels=2 dim=2 size=\ +(NullGrid::N_ang_pts_inside_eq+2*(NullGrid::N_ang_ev_outside_eq+NullGrid::N_ang_stencil_size)),\ +(NullGrid::N_ang_pts_inside_eq+2*(NullGrid::N_ang_ev_outside_eq+NullGrid::N_ang_stencil_size)) \ + GHOSTSIZE=NullGrid::N_ang_ghost_pts,NullGrid::N_ang_ghost_pts \ +"real dotNews for MoL - this is the real part of Psi4 (RHS)" + +cctk_real im_dotNewsB[2] Type=ARRAY timelevels=2 dim=2 size=\ +(NullGrid::N_ang_pts_inside_eq+2*(NullGrid::N_ang_ev_outside_eq+NullGrid::N_ang_stencil_size)),\ +(NullGrid::N_ang_pts_inside_eq+2*(NullGrid::N_ang_ev_outside_eq+NullGrid::N_ang_stencil_size)) \ + GHOSTSIZE=NullGrid::N_ang_ghost_pts,NullGrid::N_ang_ghost_pts \ +"imag dotNews for MoL - this is the imaginary part of Psi4 (RHS)" + +cctk_real re_PsiInt[2] Type=ARRAY timelevels=2 dim=2 size=\ +(NullGrid::N_ang_pts_inside_eq+2*(NullGrid::N_ang_ev_outside_eq+NullGrid::N_ang_stencil_size)),\ +(NullGrid::N_ang_pts_inside_eq+2*(NullGrid::N_ang_ev_outside_eq+NullGrid::N_ang_stencil_size)) \ + GHOSTSIZE=NullGrid::N_ang_ghost_pts,NullGrid::N_ang_ghost_pts \ +"real integrated Psi for MoL - this is the real part of NewsB_Psi (RHS)" + +cctk_real im_PsiInt[2] Type=ARRAY timelevels=2 dim=2 size=\ +(NullGrid::N_ang_pts_inside_eq+2*(NullGrid::N_ang_ev_outside_eq+NullGrid::N_ang_stencil_size)),\ +(NullGrid::N_ang_pts_inside_eq+2*(NullGrid::N_ang_ev_outside_eq+NullGrid::N_ang_stencil_size)) \ + GHOSTSIZE=NullGrid::N_ang_ghost_pts,NullGrid::N_ang_ghost_pts \ +"imag integrated Psi for MoL - this is the imaginary part of NewsB_Psi4 (RHS)"
File [added]: param.ccl Delta lines: +38 -0 =================================================================== --- PITTNullCode/NullPsiInt/param.ccl (rev 0) +++ PITTNullCode/NullPsiInt/param.ccl 2011-06-15 16:18:44 UTC (rev 39) @@ -0,0 +1,38 @@ +# Parameter definitions for thorn NullPsiInt +# $Header:$ + +shares: NullGrid + +uses int N_ang_pts_inside_eq +uses int N_ang_ev_outside_eq +uses int N_ang_stencil_size +uses int N_ang_ghost_pts +uses int N_radial_pts + + +shares: MethodOfLines +uses cctk_int MoL_Num_ArrayEvolved_Vars +uses cctk_int MoL_Max_Evolved_Array_Size + +restricted: + +cctk_int NullPsiInt_NumArrayEvolvedVars "The maximum number of evolved grid arrays used by NullPsiInt" ACCUMULATOR-BASE=MethodOfLines::MoL_Num_ArrayEvolved_Vars +{ + 4:4 :: "Is is the real and imaginary part of the RHS (Psi) and the News obtained by integrating Psi" +} 4 + +cctk_int NullPsiInt_MaxEvolvedArraySize "The maximum size of evolved grid arrays used by NullPsiInt" ACCUMULATOR-BASE=MethodOfLines::MoL_Max_Evolved_Array_Size +{ + 1:* :: "The size of the generator grid arrays" +} 1 + + +private: + +keyword mask_type "type of mask for error in J" +{ + "none" :: "no mask" + "EG_mask" :: "mask all the active points" + "EV_mask" :: "mask only the evolution points" + "EQ_mask" :: "mask only the equator points" +} "none"
File [added]: schedule.ccl Delta lines: +28 -0 =================================================================== --- PITTNullCode/NullPsiInt/schedule.ccl (rev 0) +++ PITTNullCode/NullPsiInt/schedule.ccl 2011-06-15 16:18:44 UTC (rev 39) @@ -0,0 +1,28 @@ +# Schedule definitions for thorn NullPsiInt +# $Header:$ + +######## initialization: MoL + STORAGE: NewsB_mask, Psi4_mask, NewsB_Psi, re_dotNewsB[2], im_dotNewsB[2], re_PsiInt[2], im_PsiInt[2] + + + schedule NullPsiInt_InitMoL in NullEvol_Initial after NullEvol_InitialSlice + { + LANG: Fortran + OPTIONS: global + } "Initial Data" + + schedule NullPsiInt_MoLRegister in MoL_Register + { + LANG: C + } "Register variables for MoL" + + +######## evolution: Mol + + schedule NullPsiInt_dotNewsPsi in MoL_CalcRHS + { + LANG: Fortran + SYNC: NewsB_Psi + } "calculate the integral of Psi4" + +
Directory: /PITTNullCode/NullPsiInt/doc/ ========================================
File [added]: documentation.tex Delta lines: +144 -0 =================================================================== --- PITTNullCode/NullPsiInt/doc/documentation.tex (rev 0) +++ PITTNullCode/NullPsiInt/doc/documentation.tex 2011-06-15 16:18:44 UTC (rev 39) @@ -0,0 +1,144 @@ +% *======================================================================* +% Cactus Thorn template for ThornGuide documentation +% Author: Ian Kelley +% Date: Sun Jun 02, 2002 +% $Header: /cactusdevcvs/Cactus/doc/ThornGuide/template.tex,v 1.12 2004/01/07 20:12:39 rideout Exp $ +% +% Thorn documentation in the latex file doc/documentation.tex +% will be included in ThornGuides built with the Cactus make system. +% The scripts employed by the make system automatically include +% pages about variables, parameters and scheduling parsed from the +% relevant thorn CCL files. +% +% This template contains guidelines which help to assure that your +% documentation will be correctly added to ThornGuides. More +% information is available in the Cactus UsersGuide. +% +% Guidelines: +% - Do not change anything before the line +% % START CACTUS THORNGUIDE", +% except for filling in the title, author, date, etc. fields. +% - Each of these fields should only be on ONE line. +% - Author names should be separated with a \ or a comma. +% - You can define your own macros, but they must appear after +% the START CACTUS THORNGUIDE line, and must not redefine standard +% latex commands. +% - To avoid name clashes with other thorns, 'labels', 'citations', +% 'references', and 'image' names should conform to the following +% convention: +% ARRANGEMENT_THORN_LABEL +% For example, an image wave.eps in the arrangement CactusWave and +% thorn WaveToyC should be renamed to CactusWave_WaveToyC_wave.eps +% - Graphics should only be included using the graphicx package. +% More specifically, with the "\includegraphics" command. Do +% not specify any graphic file extensions in your .tex file. This +% will allow us to create a PDF version of the ThornGuide +% via pdflatex. +% - References should be included with the latex "\bibitem" command. +% - Use \begin{abstract}...\end{abstract} instead of \abstract{...} +% - Do not use \appendix, instead include any appendices you need as +% standard sections. +% - For the benefit of our Perl scripts, and for future extensions, +% please use simple latex. +% +% *======================================================================* +% +% Example of including a graphic image: +% \begin{figure}[ht] +% \begin{center} +% \includegraphics[width=6cm]{MyArrangement_MyThorn_MyFigure} +% \end{center} +% \caption{Illustration of this and that} +% \label{MyArrangement_MyThorn_MyLabel} +% \end{figure} +% +% Example of using a label: +% \label{MyArrangement_MyThorn_MyLabel} +% +% Example of a citation: +% \cite{MyArrangement_MyThorn_Author99} +% +% Example of including a reference +% \bibitem{MyArrangement_MyThorn_Author99} +% {J. Author, {\em The Title of the Book, Journal, or periodical}, 1 (1999), +% 1--16. {\tt http://www.nowhere.com/%7D%7D +% +% *======================================================================* + +% If you are using CVS use this line to give version information +% $Header: /cactusdevcvs/Cactus/doc/ThornGuide/template.tex,v 1.12 2004/01/07 20:12:39 rideout Exp $ + +\documentclass{article} + +% Use the Cactus ThornGuide style file +% (Automatically used from Cactus distribution, if you have a +% thorn without the Cactus Flesh download this from the Cactus +% homepage at www.cactuscode.org) +\usepackage{../../../../doc/latex/cactus} + +\begin{document} + +% The author of the documentation +\author{Maria Babiuc \textless babiuc@marshall.edu\textgreater} + +% The title of the document (not necessarily the name of the Thorn) +\title{NullPsi4IO} + +% the date your document was last changed, if your document is in CVS, +% please use: +% \date{$ $Date: 2004/01/07 20:12:39 $ $} +\date{October 21 2009} + +\maketitle + +% Do not delete next line +% START CACTUS THORNGUIDE + +% Add all definitions used in this documentation here +% \def\mydef etc + +% Add an abstract for this thorn's documentation +\begin{abstract} + +\end{abstract} + +% The following sections are suggestive only. +% Remove them or add your own. + +\section{Introduction} + +\section{Physical System} + +\section{Numerical Implementation} + +\section{Using This Thorn} + +\subsection{Obtaining This Thorn} + +\subsection{Basic Usage} + +\subsection{Special Behaviour} + +\subsection{Interaction With Other Thorns} + +\subsection{Examples} + +\subsection{Support and Feedback} + +\section{History} + +\subsection{Thorn Source Code} + +\subsection{Thorn Documentation} + +\subsection{Acknowledgements} + + +\begin{thebibliography}{9} + +\end{thebibliography} + +% Do not delete next line +% END CACTUS THORNGUIDE + +\end{document}
Directory: /PITTNullCode/NullPsiInt/src/ ========================================
File [added]: NullPsiInt_InitMoL.F90 Delta lines: +67 -0 =================================================================== --- PITTNullCode/NullPsiInt/src/NullPsiInt_InitMoL.F90 (rev 0) +++ PITTNullCode/NullPsiInt/src/NullPsiInt_InitMoL.F90 2011-06-15 16:18:44 UTC (rev 39) @@ -0,0 +1,67 @@ +! vim: syntax=fortran +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Functions.h" +#include "cctk_Parameters.h" + + subroutine NullPsiInt_InitMoL(CCTK_ARGUMENTS) + use cctk + use NullGrid_Vars + implicit none + + DECLARE_CCTK_ARGUMENTS + DECLARE_CCTK_FUNCTIONS + DECLARE_CCTK_PARAMETERS + + CCTK_INT :: patch_ID + CCTK_COMPLEX :: ii + ii = dcmplx(0.,1.) + +! I need to initialize News_Psi, dotNews_Psi + patch_ID = ip_n-1 + + do patch_ID = 1, 2 + +!Apply mask to the complex Characteristic Fields + if (CCTK_EQUALS(mask_type, "none")) then + + NewsB_mask(:,:,patch_ID) = NewsB(:,:,patch_ID) + Psi4_mask(:,:,patch_ID) = Psi4(:,:,patch_ID) + + else if (CCTK_EQUALS(mask_type, "EG_mask")) then + + NewsB_mask(:,:,patch_ID) = EG_mask*NewsB(:,:,patch_ID) + Psi4_mask(:,:,patch_ID) = EG_mask*Psi4(:,:,patch_ID) + + else if (CCTK_EQUALS(mask_type, "EQ_mask")) then + + NewsB_mask(:,:,patch_ID) = EQ_mask*NewsB(:,:,patch_ID) + Psi4_mask(:,:,patch_ID) = EQ_mask*Psi4(:,:,patch_ID) + + else if (CCTK_EQUALS(mask_type, "EV_mask")) then + + NewsB_mask(:,:,patch_ID) = EV_mask*NewsB(:,:,patch_ID) + Psi4_mask(:,:,patch_ID) = EV_mask*Psi4(:,:,patch_ID) + + else + call CCTK_WARN(0, "unsupported circular mask type") + end if + + + re_dotNewsB(:,:,patch_ID) = dble(Psi4_mask(:,:,patch_ID)) + im_dotNewsB(:,:,patch_ID) = dimag(Psi4_mask(:,:,patch_ID)) + + re_PsiInt(:,:,patch_ID) = dble(NewsB_mask(:,:,patch_ID)) + im_PsiInt(:,:,patch_ID) = dimag(NewsB_mask(:,:,patch_ID)) + + NewsB_Psi(:,:,patch_ID) = re_PsiInt(:,:,patch_ID) + ii*im_PsiInt(:,:,patch_ID) + + re_dotNewsB_p(:,:,patch_ID) = dble(Psi4_mask(:,:,patch_ID)) + im_dotNewsB_p(:,:,patch_ID) = dimag(Psi4_mask(:,:,patch_ID)) + + re_PsiInt_p(:,:,patch_ID) = dble(NewsB_mask(:,:,patch_ID)) + im_PsiInt_p(:,:,patch_ID) = dimag(NewsB_mask(:,:,patch_ID)) + + end do + + end subroutine NullPsiInt_InitMoL
File [added]: NullPsiInt_MoLRegister.c Delta lines: +55 -0 =================================================================== --- PITTNullCode/NullPsiInt/src/NullPsiInt_MoLRegister.c (rev 0) +++ PITTNullCode/NullPsiInt/src/NullPsiInt_MoLRegister.c 2011-06-15 16:18:44 UTC (rev 39) @@ -0,0 +1,55 @@ + /*@@ + @file NullPsiInt_MoLRegister.c + @date Wed Oct 21 11:52:41 CET 2009 + @author Maria Babiuc + @desc + Routine to register the variables with the MoL thorn. Based on Ian Hawke's WaveMoL + @enddesc + @@*/ + +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Parameters.h" + +static const char *rcsid = "$Header$"; + +int NullPsiInt_MoLRegister(CCTK_ARGUMENTS); + +int NullPsiInt_MoLRegister(CCTK_ARGUMENTS) +{ + + DECLARE_CCTK_ARGUMENTS; + DECLARE_CCTK_PARAMETERS; + + CCTK_INT ierr = 0, group, rhs, var; + + group = CCTK_GroupIndex("NullPsiInt::re_PsiInt"); + rhs = CCTK_GroupIndex("NullPsiInt::re_dotNewsB"); + + if (CCTK_IsFunctionAliased("MoLRegisterEvolvedGroup")) + { + ierr += MoLRegisterEvolvedGroup(group, rhs); + } + else + { + CCTK_WARN(0, "MoL function not aliased"); + ierr++; + } + + group = CCTK_GroupIndex("NullPsiInt::im_PsiInt"); + rhs = CCTK_GroupIndex("NullPsiInt::im_dotNewsB"); + + if (CCTK_IsFunctionAliased("MoLRegisterEvolvedGroup")) + { + ierr += MoLRegisterEvolvedGroup(group, rhs); + } + else + { + CCTK_WARN(0, "MoL function not aliased"); + ierr++; + } + + if (ierr) CCTK_WARN(0,"Problems registering with MoL"); + + return ierr; +}
File [added]: NullPsiInt_dotNewsPsi.F90 Delta lines: +61 -0 =================================================================== --- PITTNullCode/NullPsiInt/src/NullPsiInt_dotNewsPsi.F90 (rev 0) +++ PITTNullCode/NullPsiInt/src/NullPsiInt_dotNewsPsi.F90 2011-06-15 16:18:44 UTC (rev 39) @@ -0,0 +1,61 @@ +! vim: syntax=fortran +#include "cctk.h" +#include "cctk_Arguments.h" +#include "cctk_Functions.h" +#include "cctk_Parameters.h" + +subroutine NullPsiInt_dotNewsPsi(CCTK_ARGUMENTS) + use cctk + use NullInterp + use NullGrid_Vars + implicit none + + DECLARE_CCTK_ARGUMENTS + DECLARE_CCTK_FUNCTIONS + DECLARE_CCTK_PARAMETERS + + CCTK_INT :: patch_ID + CCTK_COMPLEX :: ii + ii = dcmplx(0.,1.) + +!INTEGRATION Int_Psi4 = News + patch_ID = ip_n-1 + + do patch_ID = 1, 2 + +!Apply mask to the complex Characteristic Fields + if (CCTK_EQUALS(mask_type, "none")) then + + NewsB_mask(:,:,patch_ID) = NewsB(:,:,patch_ID) + Psi4_mask(:,:,patch_ID) = Psi4(:,:,patch_ID) + + else if (CCTK_EQUALS(mask_type, "EG_mask")) then + + NewsB_mask(:,:,patch_ID) = EG_mask*NewsB(:,:,patch_ID) + Psi4_mask(:,:,patch_ID) = EG_mask*Psi4(:,:,patch_ID) + + else if (CCTK_EQUALS(mask_type, "EQ_mask")) then + + NewsB_mask(:,:,patch_ID) = EQ_mask*NewsB(:,:,patch_ID) + Psi4_mask(:,:,patch_ID) = EQ_mask*Psi4(:,:,patch_ID) + + else if (CCTK_EQUALS(mask_type, "EV_mask")) then + + NewsB_mask(:,:,patch_ID) = EV_mask*NewsB(:,:,patch_ID) + Psi4_mask(:,:,patch_ID) = EV_mask*Psi4(:,:,patch_ID) + + else + call CCTK_WARN(0, "unsupported circular mask type") + end if + + +! the evolution equation + + re_dotNewsB(:,:,patch_ID) = dble(Psi4_mask(:,:,patch_ID)) + im_dotNewsB(:,:,patch_ID) = dimag(Psi4_mask(:,:,patch_ID)) + + NewsB_Psi(:,:,patch_ID) = re_PsiInt(:,:,patch_ID) + ii*im_PsiInt(:,:,patch_ID) + + end do + +end subroutine NullPsiInt_dotNewsPsi
File [added]: make.code.defn Delta lines: +9 -0 =================================================================== --- PITTNullCode/NullPsiInt/src/make.code.defn (rev 0) +++ PITTNullCode/NullPsiInt/src/make.code.defn 2011-06-15 16:18:44 UTC (rev 39) @@ -0,0 +1,9 @@ +# Main make.code.defn file for thorn NullPsiInt +# $Header:$ + +# Source files in this directory +SRCS = NullPsiInt_dotNewsPsi.F90 NullPsiInt_MoLRegister.c \ + NullPsiInt_InitMoL.F90 + +# Subdirectories containing source files +SUBDIRS =