23 #include "term_eq.hpp"
25 #include "tensor_impl.hpp"
26 #include "system_of_eqs.hpp"
27 #include "metric_tensor.hpp"
28 #include "name_tools.hpp"
38 Metric_const::~Metric_const() {
46 cerr <<
"Metric already set for the system" << endl ;
57 trim_spaces (ss.
name_met, name_met) ;
66 cerr <<
"Function only implemented for dimension 3" << endl ;
88 detval = (*
syst->
cst[place]->val_t)(1,1)(dd)*(*
syst->
cst[place]->val_t)(2,2)(dd)*(*
syst->
cst[place]->val_t)(3,3)(dd)
89 + (*
syst->
cst[place]->val_t)(1,2)(dd)*(*
syst->
cst[place]->val_t)(2,3)(dd)*(*
syst->
cst[place]->val_t)(1,3)(dd)
90 + (*
syst->
cst[place]->val_t)(1,3)(dd)*(*
syst->
cst[place]->val_t)(1,2)(dd)*(*
syst->
cst[place]->val_t)(2,3)(dd)
91 - (*
syst->
cst[place]->val_t)(1,3)(dd)*(*
syst->
cst[place]->val_t)(1,3)(dd)*(*
syst->
cst[place]->val_t)(2,2)(dd)
92 - (*
syst->
cst[place]->val_t)(2,3)(dd)*(*
syst->
cst[place]->val_t)(2,3)(dd)*(*
syst->
cst[place]->val_t)(1,1)(dd)
93 - (*
syst->
cst[place]->val_t)(1,2)(dd)*(*
syst->
cst[place]->val_t)(1,2)(dd)*(*
syst->
cst[place]->val_t)(3,3)(dd) ;
96 cmpval = (*
syst->
cst[place]->val_t)(2,2)(dd)*(*
syst->
cst[place]->val_t)(3,3)(dd)
97 -(*
syst->
cst[place]->val_t)(2,3)(dd)*(*
syst->
cst[place]->val_t)(2,3)(dd) ;
99 res[0] =
new Term_eq (dd, val) ;
103 cmpval = (*
syst->
cst[place]->val_t)(1,3)(dd)*(*
syst->
cst[place]->val_t)(2,3)(dd)
104 -(*
syst->
cst[place]->val_t)(1,2)(dd)*(*
syst->
cst[place]->val_t)(3,3)(dd) ;
106 res[1] =
new Term_eq (dd, val) ;
109 cmpval = (*
syst->
cst[place]->val_t)(1,2)(dd)*(*
syst->
cst[place]->val_t)(2,3)(dd)
110 -(*
syst->
cst[place]->val_t)(1,3)(dd)*(*
syst->
cst[place]->val_t)(2,2)(dd) ;
112 res[2] =
new Term_eq (dd, val) ;
116 cmpval = (*
syst->
cst[place]->val_t)(1,1)(dd)*(*
syst->
cst[place]->val_t)(3,3)(dd)
117 -(*
syst->
cst[place]->val_t)(1,3)(dd)*(*
syst->
cst[place]->val_t)(1,3)(dd) ;
119 res[3] =
new Term_eq (dd, val) ;
122 cmpval = (*
syst->
cst[place]->val_t)(1,3)(dd)*(*
syst->
cst[place]->val_t)(1,2)(dd)
123 -(*
syst->
cst[place]->val_t)(1,1)(dd)*(*
syst->
cst[place]->val_t)(2,3)(dd) ;
125 res[4] =
new Term_eq (dd, val) ;
129 cmpval = (*
syst->
cst[place]->val_t)(1,1)(dd)*(*
syst->
cst[place]->val_t)(2,2)(dd)
130 -(*
syst->
cst[place]->val_t)(1,2)(dd)*(*
syst->
cst[place]->val_t)(1,2)(dd) ;
132 res[5] =
new Term_eq (dd, val) ;
145 for (
int i=1 ; i<=3 ; i++)
146 for (
int j=i ; j<=3 ; j++)
163 cerr <<
"Function only implemented for dimension 3" << endl ;
185 detval = (*
syst->
cst[place]->val_t)(1,1)(dd)*(*
syst->
cst[place]->val_t)(2,2)(dd)*(*
syst->
cst[place]->val_t)(3,3)(dd)
186 + (*
syst->
cst[place]->val_t)(1,2)(dd)*(*
syst->
cst[place]->val_t)(2,3)(dd)*(*
syst->
cst[place]->val_t)(1,3)(dd)
187 + (*
syst->
cst[place]->val_t)(1,3)(dd)*(*
syst->
cst[place]->val_t)(1,2)(dd)*(*
syst->
cst[place]->val_t)(2,3)(dd)
188 - (*
syst->
cst[place]->val_t)(1,3)(dd)*(*
syst->
cst[place]->val_t)(1,3)(dd)*(*
syst->
cst[place]->val_t)(2,2)(dd)
189 - (*
syst->
cst[place]->val_t)(2,3)(dd)*(*
syst->
cst[place]->val_t)(2,3)(dd)*(*
syst->
cst[place]->val_t)(1,1)(dd)
190 - (*
syst->
cst[place]->val_t)(1,2)(dd)*(*
syst->
cst[place]->val_t)(1,2)(dd)*(*
syst->
cst[place]->val_t)(3,3)(dd) ;
193 cmpval = (*
syst->
cst[place]->val_t)(2,2)(dd)*(*
syst->
cst[place]->val_t)(3,3)(dd)
194 -(*
syst->
cst[place]->val_t)(2,3)(dd)*(*
syst->
cst[place]->val_t)(2,3)(dd) ;
196 res[0] =
new Term_eq (dd, val) ;
199 cmpval = (*
syst->
cst[place]->val_t)(1,3)(dd)*(*
syst->
cst[place]->val_t)(2,3)(dd)
200 -(*
syst->
cst[place]->val_t)(1,2)(dd)*(*
syst->
cst[place]->val_t)(3,3)(dd) ;
202 res[1] =
new Term_eq (dd, val) ;
205 cmpval = (*
syst->
cst[place]->val_t)(1,2)(dd)*(*
syst->
cst[place]->val_t)(2,3)(dd)
206 -(*
syst->
cst[place]->val_t)(1,3)(dd)*(*
syst->
cst[place]->val_t)(2,2)(dd) ;
208 res[2] =
new Term_eq (dd, val) ;
211 cmpval = (*
syst->
cst[place]->val_t)(1,1)(dd)*(*
syst->
cst[place]->val_t)(3,3)(dd)
212 -(*
syst->
cst[place]->val_t)(1,3)(dd)*(*
syst->
cst[place]->val_t)(1,3)(dd) ;
214 res[3] =
new Term_eq (dd, val) ;
217 cmpval = (*
syst->
cst[place]->val_t)(1,3)(dd)*(*
syst->
cst[place]->val_t)(1,2)(dd)
218 -(*
syst->
cst[place]->val_t)(1,1)(dd)*(*
syst->
cst[place]->val_t)(2,3)(dd) ;
220 res[4] =
new Term_eq (dd, val) ;
223 cmpval = (*
syst->
cst[place]->val_t)(1,1)(dd)*(*
syst->
cst[place]->val_t)(2,2)(dd)
224 -(*
syst->
cst[place]->val_t)(1,2)(dd)*(*
syst->
cst[place]->val_t)(1,2)(dd) ;
226 res[5] =
new Term_eq (dd, val) ;
238 for (
int i=1 ; i<=3 ; i++)
239 for (
int j=i ; j<=3 ; j++)
Class to deal with arbitrary type of metric but that is constant.
virtual void compute_cov(int) const
Computes the covariant representation, in a given Domain.
virtual void set_system(System_of_eqs &syst, const char *name)
Associate the metric to a given system of equations.
virtual void compute_con(int) const
Computes the contravariant representation, in a given Domain.
Metric_const(Metric_tensor &)
Constructor from a Metric_tensor.
Class to deal with arbitrary type of metric.
Metric_tensor * p_met
Pointer on the Metric_tensor describing the metric.
int place_syst
Gives the location of the metric amongst the various unknowns of the associated System_of_eqs.
const Base_tensor & basis
The tensorial basis used.
Particular type of Tensor, dedicated to the desription of metrics.
int type_tensor
States if one works in the CON or COV representation.
const Space & espace
The associated Space.
MMPtr_array< Term_eq > p_met_cov
Array of pointers on various Term_eq.
MMPtr_array< Term_eq > p_met_con
Array of pointers on various Term_eq.
const System_of_eqs * syst
Pointer of the system of equations where the metric is used (only one for now).
The class Scalar does not really implements scalars in the mathematical sense but rather tensorial co...
Val_domain & set_domain(int)
Read/write of a particular Val_domain.
const Domain * get_domain(int i) const
returns a pointer on the domain.
int get_ndim() const
Returns the number of dimensions.
Class used to describe and solve a system of equations.
virtual void add_cst(const char *name, double cst)
Addition of a constant (number case)
int ndom
Number of domains used.
MMPtr_array< Term_eq > cst
Pointers on the Term_eq coming from the constants passed by the user.
char * name_met
Name by which the metric is recognized.
int ncst
Number of constants passed by the user.
int dom_min
Smallest domain number.
Metric * met
Pointer on the associated Metric, if defined.
Scalar & set(const Array< int > &ind)
Returns the value of a component (read/write version).
int get_n_comp() const
Returns the number of stored components.
This class is intended to describe the manage objects appearing in the equations.
Tensor const & get_val_t() const
Class for storing the basis of decompositions of a field and its values on both the configuration and...