aboutsummaryrefslogtreecommitdiff
path: root/src/Startup.c
blob: a368a0b2350d74504d50721a637563452461a037 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
 /*@@
   @file      Startup.c
   @date      Wed Apr 19 20:35:04 2000
   @author    Gerd Lanfermann
   @desc 
   Startup.c
   @enddesc 
 @@*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "cctk.h"

#include "Ell_DBstructure.h"

static const char *rcsid = "$Header$";

CCTK_FILEVERSION(CactusElliptic_EllBase_Startup_c)

void Ell_RegisterBaseEqTypes(cGH *GH);


 /*@@
   @routine    Ell_RegisterBaseEqTypes
   @date       Wed Apr 19 20:36:08 2000
   @author     Gerd Lanfermann
   @desc 
       At Startup, EllBase registers the elliptic equation classes for which 
       it provides solvers. Other routines, which may come up with new classes, 
       can registers the classes in their own thorns.
   @enddesc 
   @calls     
   @calledby   
   @history 
 
   @endhistory 

@@*/


void Ell_RegisterBaseEqTypes(cGH *GH) 
{

  int Ell_RegisterEq(void (*function),const char *);
  void Ell_LinConfMetricRegistry(void (*function),const char *);
  void Ell_LinMetricRegistry(void (*function),const char *);
  void Ell_LinFlatRegistry(void (*function),const char *);
  void Ell_BrBrConfMetricRegistry(void (*function),const char *);
  void Ell_PolyConfMetricRegistry(void (*function),const char *);
  
  int err=0;
  
  err += Ell_RegisterEq(Ell_LinConfMetricRegistry, "Ell_LinConfMetric");
  err += Ell_RegisterEq(Ell_BrBrConfMetricRegistry,"Ell_BrBrConfMetric");
  err += Ell_RegisterEq(Ell_PolyConfMetricRegistry,"Ell_PolyConfMetric");
  err += Ell_RegisterEq(Ell_LinMetricRegistry,     "Ell_LinMetric");
  err += Ell_RegisterEq(Ell_LinFlatRegistry,       "Ell_LinFlat");

  err += Ell_CreateKey(CCTK_VARIABLE_STRING,
                      "EllLinFlat::Bnd");
  err += Ell_CreateKey(CCTK_VARIABLE_STRING,
                      "EllLinConfMetric::Bnd");
  err += Ell_CreateKey(CCTK_VARIABLE_STRING,
                      "EllLinMetric::Bnd");

  err += Ell_CreateKey(CCTK_VARIABLE_STRING,
                      "EllLinFlat::Bnd::Robin");
  err += Ell_CreateKey(CCTK_VARIABLE_STRING,
                      "EllLinConfMetric::Bnd::Robin");
  err += Ell_CreateKey(CCTK_VARIABLE_STRING,
                      "EllLinMetric::Bnd::Robin");
  
  /* Register the variables needed to use these boundaries */
  err += Ell_CreateKey(CCTK_VARIABLE_REAL, 
                      "EllLinConfMetric::Bnd::Robin::inf"); 
  err += Ell_CreateKey(CCTK_VARIABLE_INT,  
                      "EllLinConfMetric::Bnd::Robin::falloff"); 
  err += Ell_CreateKey(CCTK_VARIABLE_REAL, 
                      "EllLinConfMetric::Bnd::Const::V0");

  /* Register the variables needed to use these boundaries */
  err += Ell_CreateKey(CCTK_VARIABLE_REAL, 
                      "EllLinMetric::Bnd::Robin::inf"); 
  err += Ell_CreateKey(CCTK_VARIABLE_INT,  
                      "EllLinMetric::Bnd::Robin::falloff"); 
  err += Ell_CreateKey(CCTK_VARIABLE_REAL, "EllLinMetric::Bnd::Const::V0");

  /* Register the variables needed to use these boundaries */
  err += Ell_CreateKey(CCTK_VARIABLE_REAL, 
                      "EllLinFlat::Bnd::Robin::inf"); 
  err += Ell_CreateKey(CCTK_VARIABLE_INT,  
                      "EllLinFlat::Bnd::Robin::falloff"); 
  err += Ell_CreateKey(CCTK_VARIABLE_REAL, 
                      "EllLinFlat::Bnd::Const::V0");

  if (err<0) CCTK_WARN(1,"Error registering the basic elliptic classes");
  
}