20 #include "headcpp.hpp"
21 #include "spheric.hpp"
23 #include "tensor_impl.hpp"
36 if ((j==0) && (mquant!=0))
40 if ((j==
nbr_coefs(1)-1) || ((j==0) && (mquant!=0)))
44 if (((j==1) && (mquant>1)) ||(j==0) || (j==
nbr_coefs(1)-1))
48 if (((j==0) && (mquant>1)) || (j==
nbr_coefs(1)-1))
52 cerr <<
"Unknow theta basis in Domain_shell::nbr_conditions_val_boundary_mquant" << endl ;
65 int kmin = 2*mlim + 2 ;
77 if ((j==0) && (k>=kmin))
81 if ((j==
nbr_coefs(1)-1) || ((j==0) && (k>=kmin)))
85 if (((j==1)&&(k>=kmin+2)) || (j==0) || (j==
nbr_coefs(1)-1))
89 if (((j==0)&&(k>=kmin+2))||(j==
nbr_coefs(1)-1))
93 cerr <<
"Unknow theta basis in Domain_shell::nbr_conditions_val_boundary" << endl ;
106 if ((bound!=INNER_BC) && (bound!=OUTER_BC)) {
107 cerr <<
"Unknown boundary in Domain_shell::nbr_conditions_boundary" << endl ;
111 int size = (n_cmp==-1) ? tt.
get_n_comp() : n_cmp ;
135 else for (
int i=0 ; i<n_cmp ; i++) {
136 if ((*p_cmp[i])(0)==1)
138 if ((*p_cmp[i])(0)==2)
140 if ((*p_cmp[i])(0)==3)
152 else for (
int i=0 ; i<n_cmp ; i++) {
153 if ((*p_cmp[i])(0)==1)
155 if ((*p_cmp[i])(0)==2)
157 if ((*p_cmp[i])(0)==3)
169 else for (
int i=0 ; i<n_cmp ; i++) {
170 if ((*p_cmp[i])(0)==1)
172 if ((*p_cmp[i])(0)==2)
174 if ((*p_cmp[i])(0)==3)
180 cerr <<
"Unknown type of vector Domain_shell::nbr_conditions_boundary" << endl ;
197 else for (
int i=0 ; i<n_cmp ; i++) {
198 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==1))
200 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==2))
202 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==3))
204 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==2))
206 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==3))
208 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==3))
226 else for (
int i=0 ; i<n_cmp ; i++) {
227 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==1))
229 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==2))
231 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==3))
233 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==1))
235 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==2))
237 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==3))
239 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==1))
241 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==2))
243 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==3))
258 else for (
int i=0 ; i<n_cmp ; i++) {
259 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==1))
261 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==2))
263 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==3))
265 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==2))
267 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==3))
269 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==3))
288 else for (
int i=0 ; i<n_cmp ; i++) {
289 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==1))
291 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==2))
293 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==3))
295 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==1))
297 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==2))
299 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==3))
301 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==1))
303 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==2))
305 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==3))
320 else for (
int i=0 ; i<n_cmp ; i++) {
321 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==1))
323 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==2))
325 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==3))
327 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==2))
329 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==3))
331 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==3))
350 else for (
int i=0 ; i<n_cmp ; i++) {
351 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==1))
353 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==2))
355 if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==3))
357 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==1))
359 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==2))
361 if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==3))
363 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==1))
365 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==2))
367 if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==3))
373 cerr <<
"Unknown type of 2-tensor Domain_shell::nbr_conditions_boundary" << endl ;
379 cerr <<
"Valence " << val <<
" not implemented in Domain_shell::nbr_conditions_boundary" << 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.
virtual Array< int > nbr_conditions_boundary(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 on a boundary.
int nbr_conditions_val_domain_boundary_mquant(const Val_domain &so, int mquant) const
Computes number of discretized equations associated with a given equation on a boundary.
int nbr_conditions_val_domain_boundary(const Val_domain &so, int mlim) const
Computes number of discretized equations associated with a given equation on a boundary.
Dim_array nbr_coefs
Number of coefficients.
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.