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"
31 Metric(met.get_space()), p_met(&met), basis(met.get_basis()), fmet(met.get_space(), basis) {
36 Metric (so), p_met(so.p_met), basis(so.basis), fmet(so.fmet), place_syst(so.place_syst) {
39 Metric_conf::~Metric_conf() {
53 cerr <<
"Function only implemented for dimension 3" << endl ;
68 bool doder = (
syst->
term[place]->der_t==0x0) ?
false :
true ;
79 cmpval = (*
syst->
term[place]->val_t)(2,2)(dd)*(*
syst->
term[place]->val_t)(3,3)(dd)
83 cmpder = (*
syst->
term[place]->der_t)(2,2)(dd)*(*
syst->
term[place]->val_t)(3,3)(dd)
86 - (*
syst->
term[place]->val_t)(2,3)(dd)*(*
syst->
term[place]->der_t)(2,3)(dd) ;
88 res[0] =
new Term_eq (dd, val, der) ;
91 res[0] =
new Term_eq (dd, val) ;
95 cmpval = (*
syst->
term[place]->val_t)(1,3)(dd)*(*
syst->
term[place]->val_t)(2,3)(dd)
99 cmpder = (*
syst->
term[place]->der_t)(1,3)(dd)*(*
syst->
term[place]->val_t)(2,3)(dd)
102 - (*
syst->
term[place]->val_t)(1,2)(dd)*(*
syst->
term[place]->der_t)(3,3)(dd) ;
104 res[1] =
new Term_eq (dd, val, der) ;
107 res[1] =
new Term_eq (dd, val) ;
111 cmpval = (*
syst->
term[place]->val_t)(1,2)(dd)*(*
syst->
term[place]->val_t)(2,3)(dd)
112 -(*
syst->
term[place]->val_t)(1,3)(dd)*(*
syst->
term[place]->val_t)(2,2)(dd) ;
115 cmpder = (*
syst->
term[place]->der_t)(1,2)(dd)*(*
syst->
term[place]->val_t)(2,3)(dd)
118 - (*
syst->
term[place]->val_t)(1,3)(dd)*(*
syst->
term[place]->der_t)(2,2)(dd) ;
120 res[2] =
new Term_eq (dd, val, der) ;
123 res[2] =
new Term_eq (dd, val) ;
127 cmpval = (*
syst->
term[place]->val_t)(1,1)(dd)*(*
syst->
term[place]->val_t)(3,3)(dd)
128 -(*
syst->
term[place]->val_t)(1,3)(dd)*(*
syst->
term[place]->val_t)(1,3)(dd) ;
131 cmpder = (*
syst->
term[place]->der_t)(1,1)(dd)*(*
syst->
term[place]->val_t)(3,3)(dd)
134 - (*
syst->
term[place]->val_t)(1,3)(dd)*(*
syst->
term[place]->der_t)(1,3)(dd) ;
136 res[3] =
new Term_eq (dd, val, der) ;
139 res[3] =
new Term_eq (dd, val) ;
143 cmpval = (*
syst->
term[place]->val_t)(1,3)(dd)*(*
syst->
term[place]->val_t)(1,2)(dd)
144 -(*
syst->
term[place]->val_t)(1,1)(dd)*(*
syst->
term[place]->val_t)(2,3)(dd) ;
147 cmpder = (*
syst->
term[place]->der_t)(1,3)(dd)*(*
syst->
term[place]->val_t)(1,2)(dd)
150 - (*
syst->
term[place]->val_t)(1,1)(dd)*(*
syst->
term[place]->der_t)(2,3)(dd) ;
152 res[4] =
new Term_eq (dd, val, der) ;
155 res[4] =
new Term_eq (dd, val) ;
159 cmpval = (*
syst->
term[place]->val_t)(1,1)(dd)*(*
syst->
term[place]->val_t)(2,2)(dd)
160 -(*
syst->
term[place]->val_t)(1,2)(dd)*(*
syst->
term[place]->val_t)(1,2)(dd) ;
163 cmpder = (*
syst->
term[place]->der_t)(1,1)(dd)*(*
syst->
term[place]->val_t)(2,2)(dd)
166 - (*
syst->
term[place]->val_t)(1,2)(dd)*(*
syst->
term[place]->der_t)(1,2)(dd) ;
168 res[5] =
new Term_eq (dd, val, der) ;
171 res[5] =
new Term_eq (dd, val) ;
214 cerr <<
"Function only implemented for dimension 3" << endl ;
229 bool doder = (
syst->
term[place]->der_t==0x0) ?
false :
true ;
239 cmpval = (*
syst->
term[place]->val_t)(2,2)(dd)*(*
syst->
term[place]->val_t)(3,3)(dd)
240 -(*
syst->
term[place]->val_t)(2,3)(dd)*(*
syst->
term[place]->val_t)(2,3)(dd) ;
243 cmpder = (*
syst->
term[place]->der_t)(2,2)(dd)*(*
syst->
term[place]->val_t)(3,3)(dd)
246 - (*
syst->
term[place]->val_t)(2,3)(dd)*(*
syst->
term[place]->der_t)(2,3)(dd) ;
248 res[0] =
new Term_eq (dd, val, der) ;
251 res[0] =
new Term_eq (dd, val) ;
255 cmpval = (*
syst->
term[place]->val_t)(1,3)(dd)*(*
syst->
term[place]->val_t)(2,3)(dd)
256 -(*
syst->
term[place]->val_t)(1,2)(dd)*(*
syst->
term[place]->val_t)(3,3)(dd) ;
259 cmpder = (*
syst->
term[place]->der_t)(1,3)(dd)*(*
syst->
term[place]->val_t)(2,3)(dd)
262 - (*
syst->
term[place]->val_t)(1,2)(dd)*(*
syst->
term[place]->der_t)(3,3)(dd) ;
264 res[1] =
new Term_eq (dd, val, der) ;
267 res[1] =
new Term_eq (dd, val) ;
271 cmpval = (*
syst->
term[place]->val_t)(1,2)(dd)*(*
syst->
term[place]->val_t)(2,3)(dd)
272 -(*
syst->
term[place]->val_t)(1,3)(dd)*(*
syst->
term[place]->val_t)(2,2)(dd) ;
275 cmpder = (*
syst->
term[place]->der_t)(1,2)(dd)*(*
syst->
term[place]->val_t)(2,3)(dd)
278 - (*
syst->
term[place]->val_t)(1,3)(dd)*(*
syst->
term[place]->der_t)(2,2)(dd) ;
280 res[2] =
new Term_eq (dd, val, der) ;
283 res[2] =
new Term_eq (dd, val) ;
287 cmpval = (*
syst->
term[place]->val_t)(1,1)(dd)*(*
syst->
term[place]->val_t)(3,3)(dd)
288 -(*
syst->
term[place]->val_t)(1,3)(dd)*(*
syst->
term[place]->val_t)(1,3)(dd) ;
291 cmpder = (*
syst->
term[place]->der_t)(1,1)(dd)*(*
syst->
term[place]->val_t)(3,3)(dd)
294 - (*
syst->
term[place]->val_t)(1,3)(dd)*(*
syst->
term[place]->der_t)(1,3)(dd) ;
296 res[3] =
new Term_eq (dd, val, der) ;
299 res[3] =
new Term_eq (dd, val) ;
303 cmpval = (*
syst->
term[place]->val_t)(1,3)(dd)*(*
syst->
term[place]->val_t)(1,2)(dd)
304 -(*
syst->
term[place]->val_t)(1,1)(dd)*(*
syst->
term[place]->val_t)(2,3)(dd) ;
307 cmpder = (*
syst->
term[place]->der_t)(1,3)(dd)*(*
syst->
term[place]->val_t)(1,2)(dd)
310 - (*
syst->
term[place]->val_t)(1,1)(dd)*(*
syst->
term[place]->der_t)(2,3)(dd) ;
312 res[4] =
new Term_eq (dd, val, der) ;
315 res[4] =
new Term_eq (dd, val) ;
319 cmpval = (*
syst->
term[place]->val_t)(1,1)(dd)*(*
syst->
term[place]->val_t)(2,2)(dd)
320 -(*
syst->
term[place]->val_t)(1,2)(dd)*(*
syst->
term[place]->val_t)(1,2)(dd) ;
323 cmpder = (*
syst->
term[place]->der_t)(1,1)(dd)*(*
syst->
term[place]->val_t)(2,2)(dd)
326 - (*
syst->
term[place]->val_t)(1,2)(dd)*(*
syst->
term[place]->der_t)(1,2)(dd) ;
328 res[5] =
new Term_eq (dd, val, der) ;
331 res[5] =
new Term_eq (dd, val) ;
387 type_ind.
set(0) = COV ; type_ind.
set(1) = COV ; type_ind.
set(2) = CON ;
392 bool doder = (flat_der.
der_t==0x0) ?
false :
true ;
394 Index pos (res_val) ;
400 cmpval += 0.5*(*
p_met_con[dd]->val_t)(pos(2)+1,l)(dd)*((*flat_der.
val_t)(pos(0)+1, pos(1)+1, l)(dd) +
401 (*flat_der.
val_t)(pos(1)+1, pos(0)+1, l)(dd) - (*flat_der.
val_t)(l, pos(0)+1, pos(1)+1)(dd)) ;
409 cmpder += 0.5*(*
p_met_con[dd]->der_t)(pos(2)+1,l)(dd)*((*flat_der.
val_t)(pos(0)+1, pos(1)+1, l)(dd) +
410 (*flat_der.
val_t)(pos(1)+1, pos(0)+1, l)(dd) - (*flat_der.
val_t)(l, pos(0)+1, pos(1)+1)(dd))
411 + 0.5*(*
p_met_con[dd]->val_t)(pos(2)+1,l)(dd)*((*flat_der.
der_t)(pos(0)+1, pos(1)+1, l)(dd) +
412 (*flat_der.
der_t)(pos(1)+1, pos(0)+1, l)(dd) - (*flat_der.
der_t)(l, pos(0)+1, pos(1)+1)(dd)) ;
444 indices.
set(0) = CON ; indices.
set(1) = COV ; indices.
set(2) = COV ; indices.
set(3) = COV ;
449 bool doder = (flat_der.
der_t==0x0) ?
false :
true ;
451 Index pos (res_val) ;
454 Val_domain cmpval ((*flat_der.
val_t)(pos(2)+1, pos(1)+1,pos(3)+1,pos(0)+1)(dd)
455 - (*flat_der.
val_t)(pos(3)+1, pos(1)+1, pos(2)+1, pos(0)+1)(dd)) ;
457 cmpval += (*
p_christo[dd]->val_t)(pos(2)+1,m, pos(0)+1)(dd)*(*
p_christo[dd]->val_t)(pos(1)+1,pos(3)+1,m)(dd)
458 - (*
p_christo[dd]->val_t)(pos(3)+1,m,pos(0)+1)(dd)*(*
p_christo[dd]->val_t)(pos(1)+1,pos(2)+1,m)(dd) ;
462 Val_domain cmpder ((*flat_der.
der_t)(pos(2)+1, pos(1)+1,pos(3)+1,pos(0)+1)(dd)
463 - (*flat_der.
der_t)(pos(3)+1, pos(1)+1, pos(2)+1, pos(0)+1)(dd)) ;
465 cmpder += (*
p_christo[dd]->der_t)(pos(2)+1,m, pos(0)+1)(dd)*(*
p_christo[dd]->val_t)(pos(1)+1,pos(3)+1,m)(dd)
466 + (*
p_christo[dd]->val_t)(pos(2)+1,m, pos(0)+1)(dd)*(*
p_christo[dd]->der_t)(pos(1)+1,pos(3)+1,m)(dd)
467 - (*
p_christo[dd]->der_t)(pos(3)+1,m,pos(0)+1)(dd)*(*
p_christo[dd]->val_t)(pos(1)+1,pos(2)+1,m)(dd)
468 - (*
p_christo[dd]->val_t)(pos(3)+1,m,pos(0)+1)(dd)*(*
p_christo[dd]->der_t)(pos(1)+1,pos(2)+1,m)(dd);
510 bool doder = ((der_cov.
der_t==0x0) || (der_con.
der_t==0x0) || (dder_con.
der_t==0x0)) ? false : true ;
512 Index pos (res_val) ;
520 cmpval += 0.5 * ((*
p_met_con[dd]->val_t)(k,l)(dd)*(*dder_con.
val_t)(k,l, pos(0)+1, pos(1)+1)(dd)
521 - (*der_con.
val_t)(l, pos(0)+1, k)(dd) * (*der_con.
val_t)(k, pos(1)+1, l)(dd)) ;
525 -(*
p_met_cov[dd]->val_t)(k,l)(dd)*(*
p_met_con[dd]->val_t)(m,n)(dd)*(*der_con.
val_t)(m, pos(0)+1, k)(dd)*(*der_con.
val_t)(n, pos(1)+1, l)(dd)
526 +(*
p_met_cov[dd]->val_t)(m,l)(dd)*(*
p_met_con[dd]->val_t)(pos(0)+1,k)(dd)*(*der_con.
val_t)(k, m, n)(dd)*(*der_con.
val_t)(n, pos(1)+1, l)(dd)
527 +(*
p_met_cov[dd]->val_t)(k,n)(dd)*(*
p_met_con[dd]->val_t)(pos(1)+1,l)(dd)*(*der_con.
val_t)(l, m, n)(dd)*(*der_con.
val_t)(m, pos(0)+1, k)(dd)
528 +0.5*(*
p_met_cov[dd]->val_t)(pos(0)+1,k)(dd)*(*
p_met_con[dd]->val_t)(pos(1)+1,l)(dd)*(*der_cov.
val_t)(k, m, n)(dd)*(*der_con.
val_t)(l,m,n)(dd)) ;
534 cmpval += 0.5 * ((*
p_dirac[dd]->val_t)(k)(dd)*(*der_con.
val_t)(k, pos(0)+1, pos(1)+1)(dd)
535 - (*
p_met_con[dd]->val_t)(pos(0)+1, k)(dd) * (*der_dirac.
val_t)(k, pos(1)+1)(dd)
536 - (*
p_met_con[dd]->val_t)(pos(1)+1, k)(dd) * (*der_dirac.
val_t)(k, pos(0)+1)(dd)) ;
547 cmpder += 0.5 * ((*
p_met_con[dd]->der_t)(k,l)(dd)*(*dder_con.
val_t)(k,l, pos(0)+1, pos(1)+1)(dd)
548 +(*
p_met_con[dd]->val_t)(k,l)(dd)*(*dder_con.
der_t)(k,l, pos(0)+1, pos(1)+1)(dd)
549 - (*der_con.
der_t)(l, pos(0)+1, k)(dd) * (*der_con.
val_t)(k, pos(1)+1, l)(dd)
550 - (*der_con.
val_t)(l, pos(0)+1, k)(dd) * (*der_con.
der_t)(k, pos(1)+1, l)(dd)) ;
554 -(*
p_met_cov[dd]->der_t)(k,l)(dd)*(*
p_met_con[dd]->val_t)(m,n)(dd)*(*der_con.
val_t)(m, pos(0)+1, k)(dd)*(*der_con.
val_t)(n, pos(1)+1, l)(dd)
555 -(*
p_met_cov[dd]->val_t)(k,l)(dd)*(*
p_met_con[dd]->der_t)(m,n)(dd)*(*der_con.
val_t)(m, pos(0)+1, k)(dd)*(*der_con.
val_t)(n, pos(1)+1, l)(dd)
556 -(*
p_met_cov[dd]->val_t)(k,l)(dd)*(*
p_met_con[dd]->val_t)(m,n)(dd)*(*der_con.
der_t)(m, pos(0)+1, k)(dd)*(*der_con.
val_t)(n, pos(1)+1, l)(dd)
557 -(*
p_met_cov[dd]->val_t)(k,l)(dd)*(*
p_met_con[dd]->val_t)(m,n)(dd)*(*der_con.
val_t)(m, pos(0)+1, k)(dd)*(*der_con.
der_t)(n, pos(1)+1, l)(dd)
558 +(*
p_met_cov[dd]->der_t)(m,l)(dd)*(*
p_met_con[dd]->val_t)(pos(0)+1,k)(dd)*(*der_con.
val_t)(k, m, n)(dd)*(*der_con.
val_t)(n, pos(1)+1, l)(dd)
559 +(*
p_met_cov[dd]->val_t)(m,l)(dd)*(*
p_met_con[dd]->der_t)(pos(0)+1,k)(dd)*(*der_con.
val_t)(k, m, n)(dd)*(*der_con.
val_t)(n, pos(1)+1, l)(dd)
560 +(*
p_met_cov[dd]->val_t)(m,l)(dd)*(*
p_met_con[dd]->val_t)(pos(0)+1,k)(dd)*(*der_con.
der_t)(k, m, n)(dd)*(*der_con.
val_t)(n, pos(1)+1, l)(dd)
561 +(*
p_met_cov[dd]->val_t)(m,l)(dd)*(*
p_met_con[dd]->val_t)(pos(0)+1,k)(dd)*(*der_con.
val_t)(k, m, n)(dd)*(*der_con.
der_t)(n, pos(1)+1, l)(dd)
562 +(*
p_met_cov[dd]->der_t)(k,n)(dd)*(*
p_met_con[dd]->val_t)(pos(1)+1,l)(dd)*(*der_con.
val_t)(l, m, n)(dd)*(*der_con.
val_t)(m, pos(0)+1, k)(dd)
563 +(*
p_met_cov[dd]->val_t)(k,n)(dd)*(*
p_met_con[dd]->der_t)(pos(1)+1,l)(dd)*(*der_con.
val_t)(l, m, n)(dd)*(*der_con.
val_t)(m, pos(0)+1, k)(dd)
564 +(*
p_met_cov[dd]->val_t)(k,n)(dd)*(*
p_met_con[dd]->val_t)(pos(1)+1,l)(dd)*(*der_con.
der_t)(l, m, n)(dd)*(*der_con.
val_t)(m, pos(0)+1, k)(dd)
565 +(*
p_met_cov[dd]->val_t)(k,n)(dd)*(*
p_met_con[dd]->val_t)(pos(1)+1,l)(dd)*(*der_con.
val_t)(l, m, n)(dd)*(*der_con.
der_t)(m, pos(0)+1, k)(dd)
566 +0.5*(*
p_met_cov[dd]->der_t)(pos(0)+1,k)(dd)*(*
p_met_con[dd]->val_t)(pos(1)+1,l)(dd)*(*der_cov.
val_t)(k, m, n)(dd)*(*der_con.
val_t)(l,m,n)(dd)
567 +0.5*(*
p_met_cov[dd]->val_t)(pos(0)+1,k)(dd)*(*
p_met_con[dd]->der_t)(pos(1)+1,l)(dd)*(*der_cov.
val_t)(k, m, n)(dd)*(*der_con.
val_t)(l,m,n)(dd)
568 +0.5*(*
p_met_cov[dd]->val_t)(pos(0)+1,k)(dd)*(*
p_met_con[dd]->val_t)(pos(1)+1,l)(dd)*(*der_cov.
der_t)(k, m, n)(dd)*(*der_con.
val_t)(l,m,n)(dd)
569 +0.5*(*
p_met_cov[dd]->val_t)(pos(0)+1,k)(dd)*(*
p_met_con[dd]->val_t)(pos(1)+1,l)(dd)*(*der_cov.
val_t)(k, m, n)(dd)*(*der_con.
der_t)(l,m,n)(dd)
576 cmpder += 0.5 * ((*
p_dirac[dd]->der_t)(k)(dd)*(*der_con.
val_t)(k, pos(0)+1, pos(1)+1)(dd)
577 + (*
p_dirac[dd]->val_t)(k)(dd)*(*der_con.
der_t)(k, pos(0)+1, pos(1)+1)(dd)
578 - (*
p_met_con[dd]->der_t)(pos(0)+1, k)(dd) * (*der_dirac.
val_t)(k, pos(1)+1)(dd)
579 - (*
p_met_con[dd]->val_t)(pos(0)+1, k)(dd) * (*der_dirac.
der_t)(k, pos(1)+1)(dd)
580 - (*
p_met_con[dd]->der_t)(pos(1)+1, k)(dd) * (*der_dirac.
val_t)(k, pos(0)+1)(dd)
581 - (*
p_met_con[dd]->val_t)(pos(1)+1, k)(dd) * (*der_dirac.
der_t)(k, pos(0)+1)(dd)) ;
676 if (ind_der==
char(start))
686 while ((!found) && (start<123)) ;
688 cerr <<
"Trouble with indices in derive (you are not using tensors of order > 24, are you ?)" << endl ;
691 char name_sum = char(start) ;
696 bool doder = ((so.
der_t==0x0) || (
p_christo[dd]->der_t==0x0)) ?
false :
true ;
704 p_christo[dd]->val_t->set_name_affected() ;
705 p_christo[dd]->val_t->set_name_ind(0, ind_der) ;
706 if (genre_indice==COV) {
708 p_christo[dd]->val_t->set_name_ind(2, name_sum) ;
712 p_christo[dd]->val_t->set_name_ind(1, name_sum) ;
716 p_christo[dd]->der_t->set_name_affected() ;
717 p_christo[dd]->der_t->set_name_ind(0, ind_der) ;
718 if (genre_indice==COV) {
720 p_christo[dd]->der_t->set_name_ind(2, name_sum) ;
724 p_christo[dd]->der_t->set_name_ind(1, name_sum) ;
734 bool need_sum = false ;
735 char const * ind =
p_christo[dd]->val_t->get_name_ind() ;
736 if ((ind[0]==ind[2]) || (ind[1]==ind[2]) || (ind[0]==ind[1]))
747 christ =
new Term_eq (auxi_christ) ;
766 Term_eq part_christo ((*christ)*copie) ;
769 if (genre_indice==CON)
770 res = res + part_christo ;
772 res = res - part_christo ;
787 bool doder = (flat_der.
der_t==0x0) ?
false :
true ;
789 Index pos (res_val) ;
795 cmpval += (*flat_der.
val_t)(l, l, pos(0)+1)(dd) ;
803 cmpder += (*flat_der.
der_t)(l, l, pos(0)+1)(dd) ;
835 cerr <<
"Metric already set for the system" << endl ;
841 trim_spaces (ss.
name_met, name_met) ;
reference set(const Index &pos)
Read/write of an element.
int get_basis(int nd) const
Read only the basis in a given domain.
Class that gives the position inside a multi-dimensional Array.
bool inc(int increm, int var=0)
Increments the position of the Index.
Class to deal with a metric which determinant is 1.
virtual int give_type(int) const
Returns the type of tensorial basis of the covariant representation, in a given Domain.
virtual void compute_con(int) const
Computes the contravariant representation, in a given Domain.
virtual Term_eq derive_flat(int, char, const Term_eq &) const
Computes the covariant flat derivative of a Term_eq.
Metric_flat fmet
Associated flat metric.
virtual void compute_riemann(int) const
Computes the Riemann tensor, in a given Domain.
Metric_tensor * p_met
Pointer on the Metric_tensor describing the metric.
virtual void compute_dirac(int) const
Computes the Dirac gauge term, in a given Domain.
const Base_tensor & basis
The tensorial basis used.
int place_syst
Gives the location of the metric amongst the various unknowns of the associated System_of_eqs.
virtual Term_eq derive(int, char, const Term_eq &) const
Computes the covariant derivative of a Term_eq (assumes Cartesian basis of decomposition).
virtual void compute_ricci_tensor(int) const
Computes the Ricci tensor, in a given Domain.
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_christo(int) const
Computes the Christoffel symbols, in a given Domain.
Term_eq derive_with_other(int tder, char indder, const Term_eq &so, const Metric *othermet) const
Computes the flat covariant derivative.
virtual Term_eq derive(int, char, const Term_eq &) const
Computes the covariant derivative of a Term_eq (assumes Cartesian basis of decomposition).
Particular type of Tensor, dedicated to the desription of metrics.
Purely abstract class for metric handling.
int type_tensor
States if one works in the CON or COV representation.
MMPtr_array< Term_eq > p_ricci_tensor
Array of pointers on various Term_eq.
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.
virtual void manipulate_ind(Term_eq &so, int ind) const
Uses the Metric to manipulate one of the index of a Term_eq (i.e.
MMPtr_array< Term_eq > p_dirac
Array of pointers on various Term_eq.
MMPtr_array< Term_eq > p_riemann
Array of pointers on various Term_eq.
MMPtr_array< Term_eq > p_christo
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_var(const char *name, double &var)
Addition of a variable (number case)
int ndom
Number of domains used.
char * name_met
Name by which the metric is recognized.
MMPtr_array< Term_eq > term
Pointers on the Term_eq corresponding to the unknown fields.
int dom_min
Smallest domain number.
Metric * met
Pointer on the associated Metric, if defined.
int nvar
Number of unknown fields.
void set_name_ind(int dd, char name)
Sets the name of one index ; the names must have been affected first.
void set_name_affected()
Affects the name of the indices.
Scalar & set(const Array< int > &ind)
Returns the value of a component (read/write version).
char const * get_name_ind() const
int get_index_type(int i) const
Gives the type (covariant or contravariant) of a given index.
int get_n_comp() const
Returns the number of stored components.
int get_valence() const
Returns the valence.
Tensor do_summation_one_dom(int dd) const
Does the inner contraction of the Tensor in a given domain.
This class is intended to describe the manage objects appearing in the equations.
Tensor * der_t
Pointer on the variation, if the Term_eq is a Tensor.
Tensor const & get_val_t() const
Tensor const & get_der_t() const
Tensor * val_t
Pointer on the value, if the Term_eq is a Tensor.
Class for storing the basis of decompositions of a field and its values on both the configuration and...