summaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
authorgoodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac>1999-12-14 11:39:37 +0000
committergoodale <goodale@17b73243-c579-4c4c-a9d2-2d5706c11dac>1999-12-14 11:39:37 +0000
commit59f29ba9354f2b59ad9d6904fab54733f305ae62 (patch)
treeb29ac542aaf2a0bcbcc8f43128349d37472bb7f3 /src/main
parent2f00a0478ae6154c734856935eb9091dc072c5e6 (diff)
Added Gab's complex number stuff.
Tom git-svn-id: http://svn.cactuscode.org/flesh/trunk@1190 17b73243-c579-4c4c-a9d2-2d5706c11dac
Diffstat (limited to 'src/main')
-rw-r--r--src/main/Complex.c235
-rw-r--r--src/main/make.code.defn1
2 files changed, 236 insertions, 0 deletions
diff --git a/src/main/Complex.c b/src/main/Complex.c
new file mode 100644
index 00000000..af774d80
--- /dev/null
+++ b/src/main/Complex.c
@@ -0,0 +1,235 @@
+ /*@@
+ @file Complex.c
+ @date Tue Dec 14 12:09:43 1999
+ @author Tom Goodale
+ @desc
+ Complex variable stuff
+ @enddesc
+ @@*/
+
+static char *rcsid = "$Header$";
+
+#include "cctk.h"
+#include "cctk_complex.h"
+
+ /*@@
+ @routine CCTK_Cmplx
+ @date Tue Dec 14 12:16:01 1999
+ @author Tom Goodale
+ @desc
+ Turns two reals into a complex number
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
+CCTK_COMPLEX CCTK_Cmplx(CCTK_REAL Re, CCTK_REAL Im)
+{
+ CCTK_COMPLEX complex_number;
+
+ complex_number.Re = Re;
+ complex_number.Im = Im;
+
+ return complex_number;
+}
+
+ /*@@
+ @routine CCTK_CmplxReal
+ @date Tue Dec 14 12:22:41 1999
+ @author Tom Goodale
+ @desc
+ Returns the real part of a complex number.
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
+CCTK_REAL CCTK_CmplxReal(CCTK_COMPLEX complex_number)
+{
+ return complex_number.Im;
+}
+
+ /*@@
+ @routine CCTK_CmplxImag
+ @date Tue Dec 14 12:22:41 1999
+ @author Tom Goodale
+ @desc
+ Returns the imaginary part of a complex number.
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
+CCTK_REAL CCTK_CmplxImag(CCTK_COMPLEX complex_number)
+{
+ return complex_number.Im;
+}
+
+ /*@@
+ @routine CCTK_CmplxConjg
+ @date Tue Dec 14 12:22:41 1999
+ @author Tom Goodale
+ @desc
+ Returns the complex conjugate of a complex number.
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
+CCTK_COMPLEX CCTK_CmplxConjg(CCTK_COMPLEX in)
+{
+ CCTK_COMPLEX conjg;
+
+ conjg.Re = in.Re;
+ conjg.Im = -in.Im;
+
+ return conjg;
+}
+
+ /*@@
+ @routine CCTK_CmplxAbs
+ @date Tue Dec 14 12:26:33 1999
+ @author Tom Goodale
+ @desc
+ Return the absolute value of a complex number.
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
+CCTK_REAL CCTK_CmplxAbs(CCTK_COMPLEX in)
+{
+ CCTK_REAL cabs;
+
+ cabs = sqrt(in.Re*in.Re + in.Im*in.Im);
+
+ return cabs;
+}
+
+ /*@@
+ @routine CCTK_CmplxAdd
+ @date Sat Dec 4 12:11:04 1999
+ @author Gabrielle Allen
+ @desc
+ Adds two complex numbers
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
+CCTK_COMPLEX CCTK_CmplxAdd(CCTK_COMPLEX a,CCTK_COMPLEX b)
+{
+ CCTK_COMPLEX add_ab;
+ add_ab.Re = a.Re + b.Re;
+ add_ab.Im = a.Im + b.Im;
+ return add_ab;
+}
+
+ /*@@
+ @routine CCTK_CmplxSub
+ @date Sat Dec 4 12:11:04 1999
+ @author Gabrielle Allen
+ @desc
+ Subtracts two complex numbers
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
+CCTK_COMPLEX CCTK_CmplxSub(CCTK_COMPLEX a,CCTK_COMPLEX b)
+{
+ CCTK_COMPLEX sub_ab;
+ sub_ab.Re = a.Re - b.Re;
+ sub_ab.Im = a.Im - b.Im;
+ return sub_ab;
+}
+
+ /*@@
+ @routine CCTK_CmplxMul
+ @date Sat Dec 4 12:11:04 1999
+ @author Gabrielle Allen
+ @desc
+ Multiplies two complex numbers
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
+CCTK_COMPLEX CCTK_CmplxMul(CCTK_COMPLEX a,CCTK_COMPLEX b)
+{
+ CCTK_COMPLEX mult_ab;
+ mult_ab.Re = a.Re*b.Re-a.Im*b.Im;
+ mult_ab.Im = a.Im*b.Re+a.Re*b.Im;
+ return mult_ab;
+}
+
+ /*@@
+ @routine CCTK_CmplxDiv
+ @date Sat Dec 4 12:11:04 1999
+ @author Gabrielle Allen
+ @desc
+ Divides two complex numbers
+ @enddesc
+ @calls
+ @calledby
+ @history
+
+ @endhistory
+
+@@*/
+CCTK_COMPLEX CCTK_CmplxDiv(CCTK_COMPLEX a,CCTK_COMPLEX b)
+{
+ CCTK_COMPLEX div_ab;
+ CCTK_REAL fac;
+
+ fac = b.Re*b.Re+b.Im*b.Im;
+
+ if (fac != 0)
+ {
+ div_ab.Re = (a.Re*b.Re+a.Im*b.Im)/fac;
+ div_ab.Im = (a.Im*b.Re-a.Re*b.Im)/fac;
+ }
+ else
+ {
+ CCTK_WARN(0,"Divide by zero in CCTK_CmplxDiv");
+ div_ab.Re = 0;
+ div_ab.Im = 0;
+ }
+ return div_ab;
+}
+
+
+/* Routines to be added */
+
+/*
+CCTK_CmplxSqrt
+CCTK_CmplxSin
+CCTK_CmplxCos
+CCTK_CmplxLog
+CCTK_CmplxExp
+
+*/
diff --git a/src/main/make.code.defn b/src/main/make.code.defn
index b527fa41..666d54e5 100644
--- a/src/main/make.code.defn
+++ b/src/main/make.code.defn
@@ -10,6 +10,7 @@ CactusDefaultEvolve.c\
CactusDefaultShutdown.c\
CallStartupFunctions.c\
CommandLine.c\
+Complex.c\
ConfigData.c\
Coord.c\
DefaultTimers.c\