20 #include "headcpp.hpp"
21 #include "spheric.hpp"
23 #include "tensor_impl.hpp"
39 if ((pos(1)==0) && (mquant!=0))
43 if ((pos(1)==
nbr_coefs(1)-1) || ((pos(1)==0) && (mquant!=0)))
47 if (((pos(1)==1) && (mquant>1)) || (pos(1)==0) || (pos(1)==
nbr_coefs(1)-1))
51 if (((pos(1)==0) && (mquant>1)) || (pos(1)==
nbr_coefs(1)-1))
55 cerr <<
"Unknow theta basis in Domain_shell::nbr_conditions_val_domain_mquant" << endl ;
75 int kmin = 2*mlim + 2 ;
81 if ((pos(2)==1) || (pos(2)==
nbr_coefs(2)-1))
87 if ((pos(1)==0) && (pos(2)>=kmin))
91 if ((pos(1)==
nbr_coefs(1)-1) || ((pos(1)==0) && (pos(2)>=kmin)))
95 if (((pos(1)==1)&&(pos(2)>=kmin+2)) || (pos(1)==0) || (pos(1)==
nbr_coefs(1)-1))
99 if (((pos(1)==0)&&(pos(2)>=kmin+2)) || (pos(1)==
nbr_coefs(1)-1))
103 cerr <<
"Unknow theta basis in Domain_shell::nbr_conditions_val_domain" << endl ;
120 int size = (n_cmp==-1) ? tt.
get_n_comp() : n_cmp ;
145 else for (
int i=0 ; i<n_cmp ; i++) {
146 if ((*p_cmp[i])(0)==1)
148 if ((*p_cmp[i])(0)==2)
150 if ((*p_cmp[i])(0)==3)
162 else for (
int i=0 ; i<n_cmp ; i++) {
163 if ((*p_cmp[i])(0)==1)
165 if ((*p_cmp[i])(0)==2)
167 if ((*p_cmp[i])(0)==3)
179 else for (
int i=0 ; i<n_cmp ; i++) {
180 if ((*p_cmp[i])(0)==1)
182 if ((*p_cmp[i])(0)==2)
184 if ((*p_cmp[i])(0)==3)
190 cerr <<
"Unknown type of vector Domain_shell::nbr_conditions" << endl ;
207 else for (
int i=0 ; i<n_cmp ; i++) {
208 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==1))
210 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==2))
212 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==3))
214 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==2))
216 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==3))
218 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==3))
236 else for (
int i=0 ; i<n_cmp ; i++) {
237 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==1))
239 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==2))
241 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==3))
243 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==1))
245 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==2))
247 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==3))
249 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==1))
251 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==2))
253 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==3))
268 else for (
int i=0 ; i<n_cmp ; i++) {
269 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==1))
271 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==2))
273 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==3))
275 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==2))
277 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==3))
279 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==3))
298 else for (
int i=0 ; i<n_cmp ; i++) {
299 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==1))
301 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==2))
303 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==3))
305 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==1))
307 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==2))
309 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==3))
311 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==1))
313 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==2))
315 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==3))
329 else for (
int i=0 ; i<n_cmp ; i++) {
330 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==1))
332 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==2))
334 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==3))
336 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==2))
338 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==3))
340 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==3))
359 else for (
int i=0 ; i<n_cmp ; i++) {
360 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==1))
362 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==2))
364 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==3))
366 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==1))
368 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==2))
370 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==3))
372 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==1))
374 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==2))
376 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==3))
382 cerr <<
"Unknown type of 2-tensor Domain_shell::nbr_conditions" << endl ;
388 cerr <<
"Valence " << val <<
" not implemented in Domain_shell::nbr_conditions" << endl ;
reference set(const Index &pos)
Read/write of an element.
Bases_container bases_1d
Arrays containing the various basis of decomposition.
int get_basis(int nd) const
Read only the basis in a given domain.
int nbr_conditions_val_domain_mquant(const Val_domain &so, int mquant, int order) const
Computes number of discretized equations associated with a given tensorial equation in the bulk.
int nbr_conditions_val_domain(const Val_domain &so, int mlim, int order) const
Computes number of discretized equations associated with a given tensorial equation in the bulk.
virtual Array< int > nbr_conditions(const Tensor &, int, int, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Computes number of discretized equations associated with a given tensorial equation in the bulk.
Dim_array nbr_coefs
Number of coefficients.
Class that gives the position inside a multi-dimensional Array.
bool inc(int increm, int var=0)
Increments the position of the Index.
int get_m_order() const
Returns .
int get_m_quant() const
Returns .
bool is_m_order_affected() const
Checks whether the additional parameter order is affected (not very used).
const Param_tensor & get_parameters() const
Returns a pointer on the possible additional parameter.
const Base_tensor & get_basis() const
Returns the vectorial basis (triad) on which the components are defined.
int get_n_comp() const
Returns the number of stored components.
int get_valence() const
Returns the valence.
bool is_m_quant_affected() const
Checks whether the additional parameter is affected (used for boson stars for instance).
Class for storing the basis of decompositions of a field and its values on both the configuration and...
const Base_spectral & get_base() const
Returns the basis of decomposition.