KADATH
domain_compact_export_tau_boundary.cpp
1 /*
2  Copyright 2017 Philippe Grandclement
3 
4  This file is part of Kadath.
5 
6  Kadath is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
10 
11  Kadath is distributed in the hope that it will be useful,
12  but WITHOUT ANY WARRANTY; without even the implied warranty of
13  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  GNU General Public License for more details.
15 
16  You should have received a copy of the GNU General Public License
17  along with Kadath. If not, see <http://www.gnu.org/licenses/>.
18 */
19 
20 #include "headcpp.hpp"
21 
22 #include "spheric.hpp"
23 #include "scalar.hpp"
24 #include "tensor_impl.hpp"
25 #include "tensor.hpp"
26 
27 namespace Kadath {
28 void Domain_compact::export_tau_val_domain_boundary_mquant (const Val_domain& so, int mquant, int bound, Array<double>& sec, int& pos_sec, int ncond) const {
29 
30  if (so.check_if_zero())
31  pos_sec += ncond ;
32  else {
33  so.coef() ;
34  Index pos_cf (nbr_coefs) ;
35  Index pos_galerkin (nbr_coefs) ;
36 
37  // Loop on theta
38  int baset = (*so.get_base().bases_1d[1]) (0) ;
39  for (int j=0 ; j<nbr_coefs(1) ; j++) {
40  pos_cf.set(1) = j ;
41  switch (baset) {
42  case COS_EVEN:
43  if (mquant==0) {
44  sec.set(pos_sec) = val_boundary(bound, so, pos_cf) ;
45  pos_sec ++ ;
46  }
47  else if (j!=0) {
48  // Galerkin base
49  pos_galerkin = pos_cf ;
50  pos_galerkin.set(1) = 0 ;
51  sec.set(pos_sec) = val_boundary(bound, so, pos_cf)
52  -2.*val_boundary(bound, so, pos_galerkin) ;
53  pos_sec ++ ;
54  }
55  break ;
56  case COS_ODD:
57  if (j!=nbr_coefs(1)-1) {
58  if (mquant==0) {
59  sec.set(pos_sec) = val_boundary(bound, so, pos_cf) ;
60  pos_sec ++ ;
61  }
62  else if (j!=0) {
63  // Galerkin base
64  pos_galerkin = pos_cf ;
65  pos_galerkin.set(1) = 0 ;
66  sec.set(pos_sec) = val_boundary(bound, so, pos_cf)
67  -val_boundary(bound, so, pos_galerkin) ;
68  pos_sec ++ ;
69  }}
70  break ;
71  case SIN_EVEN:
72  if ((j!=0) && (j!=nbr_coefs(1)-1)) {
73  if (mquant<=1) {
74  sec.set(pos_sec) = val_boundary(bound, so, pos_cf) ;
75  pos_sec ++ ;
76  }
77  else if (j!=1) {
78  pos_galerkin = pos_cf ;
79  pos_galerkin.set(1) = 1 ;
80  sec.set(pos_sec) = val_boundary(bound, so, pos_cf)
81  -j*val_boundary(bound, so, pos_galerkin) ;
82  pos_sec ++ ;
83  }}
84  break ;
85  case SIN_ODD:
86  if (j!=nbr_coefs(1)-1) {
87  if (mquant<=1) {
88  sec.set(pos_sec) = val_boundary(bound, so, pos_cf) ;
89  pos_sec ++ ;
90  }
91  else if (j!=0) {
92  pos_galerkin = pos_cf ;
93  pos_galerkin.set(1) = 0 ;
94  sec.set(pos_sec) = val_boundary(bound, so, pos_cf)
95  -(2*j+1)*val_boundary(bound, so, pos_galerkin) ;
96  pos_sec ++ ;
97  }}
98 
99  break ;
100  default:
101  cerr << "Unknow theta basis in Domain_compact::export_tau_val_domain_boundary_mquant" << endl ;
102  abort() ;
103  }
104  }
105  }
106 }
107 
108 void Domain_compact::export_tau_val_domain_boundary (const Val_domain& so, int mlim, int bound, Array<double>& sec, int& pos_sec, int ncond) const {
109 
110  if (so.check_if_zero())
111  pos_sec += ncond ;
112  else {
113  so.coef() ;
114  int kmin = 2*mlim + 2 ;
115  Index pos_cf (nbr_coefs) ;
116  Index pos_galerkin (nbr_coefs) ;
117 
118  // Loop on phi :
119  for (int k=0 ; k<nbr_coefs(2)-1 ; k++)
120  if (k!=1) {
121  pos_cf.set(2) = k ;
122  // Loop on theta
123  int baset = (*so.get_base().bases_1d[1]) (k) ;
124  for (int j=0 ; j<nbr_coefs(1) ; j++) {
125  pos_cf.set(1) = j ;
126  switch (baset) {
127  case COS_EVEN:
128  if (k<kmin) {
129  sec.set(pos_sec) = val_boundary(bound, so, pos_cf) ;
130  pos_sec ++ ;
131  }
132  else if (j!=0) {
133  // Galerkin base
134  pos_galerkin = pos_cf ;
135  pos_galerkin.set(1) = 0 ;
136  sec.set(pos_sec) = val_boundary(bound, so, pos_cf)
137  -2.*val_boundary(bound, so, pos_galerkin) ;
138  pos_sec ++ ;
139  }
140  break ;
141  case COS_ODD:
142  if (j!=nbr_coefs(1)-1) {
143  if (k<kmin) {
144  sec.set(pos_sec) = val_boundary(bound, so, pos_cf) ;
145  pos_sec ++ ;
146  }
147  else if (j!=0) {
148  // Galerkin base
149  pos_galerkin = pos_cf ;
150  pos_galerkin.set(1) = 0 ;
151  sec.set(pos_sec) = val_boundary(bound, so, pos_cf)
152  -val_boundary(bound, so, pos_galerkin) ;
153  pos_sec ++ ;
154  }}
155  break ;
156  case SIN_EVEN:
157  if ((j!=0) && (j!=nbr_coefs(1)-1)) {
158  if (k<kmin+2) {
159  sec.set(pos_sec) = val_boundary(bound, so, pos_cf) ;
160  pos_sec ++ ;
161  }
162  else if (j!=1) {
163  // Galerkin
164  pos_galerkin = pos_cf ;
165  pos_galerkin.set(1) = 1 ;
166  sec.set(pos_sec) = val_boundary(bound, so, pos_cf)
167  -j*val_boundary(bound, so, pos_galerkin) ;
168  pos_sec ++ ;
169 
170  }
171  }
172  break ;
173  case SIN_ODD:
174  if (j!=nbr_coefs(1)-1) {
175  if (k<kmin+2) {
176  sec.set(pos_sec) = val_boundary(bound, so, pos_cf) ;
177  pos_sec ++ ;
178  }
179  else if (j!=0) {
180  // Galerkin
181  pos_galerkin = pos_cf ;
182  pos_galerkin.set(1) = 0 ;
183  sec.set(pos_sec) = val_boundary(bound, so, pos_cf)
184  -(2*j+1)*val_boundary(bound, so, pos_galerkin) ;
185  pos_sec ++ ;
186 
187  }
188  }
189  break ;
190  default:
191  cerr << "Unknow theta basis in Domain_compact::export_tau_val_domain_boundary" << endl ;
192  abort() ;
193  }
194  }
195  }
196  }
197 }
198 
199 void Domain_compact::export_tau_boundary (const Tensor& tt, int dom, int bound, Array<double>& res, int& pos_res, const Array<int>& ncond,
200  int n_cmp, Array<int>** p_cmp) const {
201 
202  // Check boundary
203  if ((bound!=INNER_BC) && (bound!=OUTER_BC)) {
204  cerr << "Unknown boundary in Domain_compact::export_tau_boundary" << endl ;
205  abort() ;
206  }
207 
208  int val = tt.get_valence() ;
209  switch (val) {
210  case 0 :
211  if (tt.is_m_quant_affected()) {
212  // Special case for bosonic field
213  export_tau_val_domain_boundary_mquant (tt()(dom), tt.get_parameters().get_m_quant(), bound, res, pos_res, ncond(0)) ;
214  }
215  else {
216  if (!tt.is_m_order_affected())
217  export_tau_val_domain_boundary (tt()(dom), 0, bound, res, pos_res, ncond(0)) ;
218  else
219  export_tau_val_domain_boundary (tt()(dom), tt.get_parameters().get_m_order(), bound, res, pos_res, ncond(0)) ;
220  }
221  break ;
222  case 1 : {
223  bool found = false ;
224  // Cartesian basis
225  if (tt.get_basis().get_basis(dom)==CARTESIAN_BASIS) {
226  if (n_cmp==-1) {
227  export_tau_val_domain_boundary (tt(1)(dom), 0, bound, res, pos_res, ncond(0)) ;
228  export_tau_val_domain_boundary (tt(2)(dom), 0, bound, res, pos_res, ncond(1)) ;
229  export_tau_val_domain_boundary (tt(3)(dom), 0, bound, res, pos_res, ncond(2)) ;
230  }
231  else for (int i=0 ; i<n_cmp ; i++) {
232  if ((*p_cmp[i])(0)==1)
233  export_tau_val_domain_boundary (tt(1)(dom), 0, bound, res, pos_res, ncond(i)) ;
234  if ((*p_cmp[i])(0)==2)
235  export_tau_val_domain_boundary (tt(2)(dom), 0, bound, res, pos_res, ncond(i)) ;
236  if ((*p_cmp[i])(0)==3)
237  export_tau_val_domain_boundary (tt(3)(dom), 0, bound, res, pos_res, ncond(i)) ;
238  }
239  found = true ;
240  }
241  // Spherical coordinates
242  if (tt.get_basis().get_basis(dom)==SPHERICAL_BASIS) {
243  if (n_cmp==-1) {
244  export_tau_val_domain_boundary (tt(1)(dom), 0, bound, res, pos_res, ncond(0)) ;
245  export_tau_val_domain_boundary (tt(2)(dom), 1, bound, res, pos_res, ncond(1)) ;
246  export_tau_val_domain_boundary (tt(3)(dom), 1, bound, res, pos_res, ncond(2)) ;
247  }
248  else for (int i=0 ; i<n_cmp ; i++) {
249  if ((*p_cmp[i])(0)==1)
250  export_tau_val_domain_boundary (tt(1)(dom), 0, bound, res, pos_res, ncond(i)) ;
251  if ((*p_cmp[i])(0)==2)
252  export_tau_val_domain_boundary (tt(2)(dom), 1, bound, res, pos_res, ncond(i)) ;
253  if ((*p_cmp[i])(0)==3)
254  export_tau_val_domain_boundary (tt(3)(dom), 1, bound, res, pos_res, ncond(i)) ;
255  }
256  found = true ;
257  }
258  if (!found) {
259  cerr << "Unknown type of vector Domain_compact::export_tau_boundary" << endl ;
260  abort() ;
261  }
262  }
263  break ;
264  case 2 : {
265  bool found = false ;
266  // Cartesian basis and symetric
267  if ((tt.get_basis().get_basis(dom)==CARTESIAN_BASIS) && (tt.get_n_comp()==6)) {
268  if (n_cmp==-1) {
269  export_tau_val_domain_boundary (tt(1,1)(dom), 0, bound, res, pos_res, ncond(0)) ;
270  export_tau_val_domain_boundary (tt(1,2)(dom), 0, bound, res, pos_res, ncond(1)) ;
271  export_tau_val_domain_boundary (tt(1,3)(dom), 0, bound, res, pos_res, ncond(2)) ;
272  export_tau_val_domain_boundary (tt(2,2)(dom), 0, bound, res, pos_res, ncond(3)) ;
273  export_tau_val_domain_boundary (tt(2,3)(dom), 0, bound, res, pos_res, ncond(4)) ;
274  export_tau_val_domain_boundary (tt(3,3)(dom), 0, bound, res, pos_res, ncond(5)) ;
275  }
276  else for (int i=0 ; i<n_cmp ; i++) {
277  if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==1))
278  export_tau_val_domain_boundary (tt(1, 1)(dom), 0, bound, res, pos_res, ncond(i)) ;
279  if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==2))
280  export_tau_val_domain_boundary (tt(1, 2)(dom), 0, bound, res, pos_res, ncond(i)) ;
281  if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==3))
282  export_tau_val_domain_boundary (tt(1, 3)(dom), 0, bound, res, pos_res, ncond(i)) ;
283  if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==2))
284  export_tau_val_domain_boundary (tt(2, 2)(dom), 0, bound, res, pos_res, ncond(i)) ;
285  if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==3))
286  export_tau_val_domain_boundary (tt(2, 3)(dom), 0, bound, res, pos_res, ncond(i)) ;
287  if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==3))
288  export_tau_val_domain_boundary (tt(3, 3)(dom), 0, bound, res, pos_res, ncond(i)) ;
289  }
290  found = true ;
291  }
292  // Cartesian basis and not symetric
293  if ((tt.get_basis().get_basis(dom)==CARTESIAN_BASIS) && (tt.get_n_comp()==9)) {
294  if (n_cmp==-1) {
295  export_tau_val_domain_boundary (tt(1,1)(dom), 0, bound, res, pos_res, ncond(0)) ;
296  export_tau_val_domain_boundary (tt(1,2)(dom), 0, bound, res, pos_res, ncond(1)) ;
297  export_tau_val_domain_boundary (tt(1,3)(dom), 0, bound, res, pos_res, ncond(2)) ;
298  export_tau_val_domain_boundary (tt(2,1)(dom), 0, bound, res, pos_res, ncond(3)) ;
299  export_tau_val_domain_boundary (tt(2,2)(dom), 0, bound, res, pos_res, ncond(4)) ;
300  export_tau_val_domain_boundary (tt(2,3)(dom), 0, bound, res, pos_res, ncond(5)) ;
301  export_tau_val_domain_boundary (tt(3,1)(dom), 0, bound, res, pos_res, ncond(6)) ;
302  export_tau_val_domain_boundary (tt(3,2)(dom), 0, bound, res, pos_res, ncond(7)) ;
303  export_tau_val_domain_boundary (tt(3,3)(dom), 0, bound, res, pos_res, ncond(8)) ;
304 
305  }
306  else for (int i=0 ; i<n_cmp ; i++) {
307  if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==1))
308  export_tau_val_domain_boundary (tt(1, 1)(dom), 0, bound, res, pos_res, ncond(i)) ;
309  if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==2))
310  export_tau_val_domain_boundary (tt(1, 2)(dom), 0, bound, res, pos_res, ncond(i)) ;
311  if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==3))
312  export_tau_val_domain_boundary (tt(1, 3)(dom), 0, bound, res, pos_res, ncond(i)) ;
313  if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==1))
314  export_tau_val_domain_boundary (tt(2, 1)(dom), 0, bound, res, pos_res, ncond(i)) ;
315  if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==2))
316  export_tau_val_domain_boundary (tt(2, 2)(dom), 0, bound, res, pos_res, ncond(i)) ;
317  if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==3))
318  export_tau_val_domain_boundary (tt(2, 3)(dom), 0, bound, res, pos_res, ncond(i)) ;
319  if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==1))
320  export_tau_val_domain_boundary (tt(3, 1)(dom), 0, bound, res, pos_res, ncond(i)) ;
321  if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==2))
322  export_tau_val_domain_boundary (tt(3, 2)(dom), 0, bound, res, pos_res, ncond(i)) ;
323  if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==3))
324  export_tau_val_domain_boundary (tt(3, 3)(dom), 0, bound, res, pos_res, ncond(i)) ;
325  }
326  found = true ;
327  }
328  // Spherical coordinates and symetric
329  if ((tt.get_basis().get_basis(dom)==SPHERICAL_BASIS) && (tt.get_n_comp()==6)) {
330  if (n_cmp==-1) {
331  export_tau_val_domain_boundary (tt(1,1)(dom), 0, bound, res, pos_res, ncond(0)) ;
332  export_tau_val_domain_boundary (tt(1,2)(dom), 1, bound, res, pos_res, ncond(1)) ;
333  export_tau_val_domain_boundary (tt(1,3)(dom), 1, bound, res, pos_res, ncond(2)) ;
334  export_tau_val_domain_boundary (tt(2,2)(dom), 2, bound, res, pos_res, ncond(3)) ;
335  export_tau_val_domain_boundary (tt(2,3)(dom), 2, bound, res, pos_res, ncond(4)) ;
336  export_tau_val_domain_boundary (tt(3,3)(dom), 2, bound, res, pos_res, ncond(5)) ;
337  }
338  else for (int i=0 ; i<n_cmp ; i++) {
339  if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==1))
340  export_tau_val_domain_boundary (tt(1, 1)(dom), 0, bound, res, pos_res, ncond(i)) ;
341  if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==2))
342  export_tau_val_domain_boundary (tt(1, 2)(dom), 1, bound, res, pos_res, ncond(i)) ;
343  if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==3))
344  export_tau_val_domain_boundary (tt(1, 3)(dom), 1, bound, res, pos_res, ncond(i)) ;
345  if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==2))
346  export_tau_val_domain_boundary (tt(2, 2)(dom), 2, bound, res, pos_res, ncond(i)) ;
347  if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==3))
348  export_tau_val_domain_boundary (tt(2, 3)(dom), 2, bound, res, pos_res, ncond(i)) ;
349  if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==3))
350  export_tau_val_domain_boundary (tt(3, 3)(dom), 2, bound, res, pos_res, ncond(i)) ;
351  }
352  found = true ;
353  }
354  // Spherical coordinates and not symetric
355  if ((tt.get_basis().get_basis(dom)==SPHERICAL_BASIS) && (tt.get_n_comp()==9)) {
356  if (n_cmp==-1) {
357  export_tau_val_domain_boundary (tt(1,1)(dom), 0, bound, res, pos_res, ncond(0)) ;
358  export_tau_val_domain_boundary (tt(1,2)(dom), 1, bound, res, pos_res, ncond(1)) ;
359  export_tau_val_domain_boundary (tt(1,3)(dom), 1, bound, res, pos_res, ncond(2)) ;
360  export_tau_val_domain_boundary (tt(2,1)(dom), 1, bound, res, pos_res, ncond(3)) ;
361  export_tau_val_domain_boundary (tt(2,2)(dom), 2, bound, res, pos_res, ncond(4)) ;
362  export_tau_val_domain_boundary (tt(2,3)(dom), 2, bound, res, pos_res, ncond(5)) ;
363  export_tau_val_domain_boundary (tt(3,1)(dom), 1, bound, res, pos_res, ncond(6)) ;
364  export_tau_val_domain_boundary (tt(3,2)(dom), 2, bound, res, pos_res, ncond(7)) ;
365  export_tau_val_domain_boundary (tt(3,3)(dom), 2, bound, res, pos_res, ncond(8)) ;
366  }
367  else for (int i=0 ; i<n_cmp ; i++) {
368  if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==1))
369  export_tau_val_domain_boundary (tt(1, 1)(dom), 0, bound, res, pos_res, ncond(i)) ;
370  if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==2))
371  export_tau_val_domain_boundary (tt(1, 2)(dom), 1, bound, res, pos_res, ncond(i)) ;
372  if (((*p_cmp[i])(0)==1) && ((*p_cmp[i])(1)==3))
373  export_tau_val_domain_boundary (tt(1, 3)(dom), 1, bound, res, pos_res, ncond(i)) ;
374  if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==1))
375  export_tau_val_domain_boundary (tt(2, 1)(dom), 1, bound, res, pos_res, ncond(i)) ;
376  if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==2))
377  export_tau_val_domain_boundary (tt(2, 2)(dom), 2, bound, res, pos_res, ncond(i)) ;
378  if (((*p_cmp[i])(0)==2) && ((*p_cmp[i])(1)==3))
379  export_tau_val_domain_boundary (tt(2, 3)(dom), 2, bound, res, pos_res, ncond(i)) ;
380  if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==1))
381  export_tau_val_domain_boundary (tt(3, 1)(dom), 1, bound, res, pos_res, ncond(i)) ;
382  if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==2))
383  export_tau_val_domain_boundary (tt(3, 2)(dom), 2, bound, res, pos_res, ncond(i)) ;
384  if (((*p_cmp[i])(0)==3) && ((*p_cmp[i])(1)==3))
385  export_tau_val_domain_boundary (tt(3, 3)(dom), 2, bound, res, pos_res, ncond(i)) ;
386  }
387  found = true ;
388  }
389  if (!found) {
390  cerr << "Unknown type of 2-tensor Domain_compact::export_tau_boundary" << endl ;
391  abort() ;
392  }
393  }
394  break ;
395  default :
396  cerr << "Valence " << val << " not implemented in Domain_compact::export_tau_boundary" << endl ;
397  break ;
398  }
399 }}
reference set(const Index &pos)
Read/write of an element.
Definition: array.hpp:186
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.
Definition: base_tensor.hpp:93
virtual double val_boundary(int, const Val_domain &, const Index &) const
Computes the value of a field at a boundary.
void export_tau_val_domain_boundary_mquant(const Val_domain &eq, int mquant, int bound, Array< double > &res, int &pos_res, int ncond) const
Exports all the residual equations corresponding to a tensorial one on a given boundary It makes use ...
virtual void export_tau_boundary(const Tensor &, int, int, Array< double > &, int &, const Array< int > &, int n_cmp=-1, Array< int > **p_cmp=0x0) const
Exports all the residual equations corresponding to a tensorial one on a given boundary It makes use ...
void export_tau_val_domain_boundary(const Val_domain &eq, int mlim, int bound, Array< double > &res, int &pos_res, int ncond) const
Exports all the residual equations corresponding to a tensorial one on a given boundary It makes use ...
Dim_array nbr_coefs
Number of coefficients.
Definition: space.hpp:66
Class that gives the position inside a multi-dimensional Array.
Definition: index.hpp:38
int & set(int i)
Read/write of the position in a given dimension.
Definition: index.hpp:72
int get_m_order() const
Returns .
Definition: tensor.hpp:737
int get_m_quant() const
Returns .
Definition: tensor.hpp:747
Tensor handling.
Definition: tensor.hpp:149
bool is_m_order_affected() const
Checks whether the additional parameter order is affected (not very used).
Definition: tensor.hpp:323
const Param_tensor & get_parameters() const
Returns a pointer on the possible additional parameter.
Definition: tensor.hpp:311
const Base_tensor & get_basis() const
Returns the vectorial basis (triad) on which the components are defined.
Definition: tensor.hpp:504
int get_n_comp() const
Returns the number of stored components.
Definition: tensor.hpp:514
int get_valence() const
Returns the valence.
Definition: tensor.hpp:509
bool is_m_quant_affected() const
Checks whether the additional parameter is affected (used for boson stars for instance).
Definition: tensor.hpp:326
Class for storing the basis of decompositions of a field and its values on both the configuration and...
Definition: val_domain.hpp:69
bool check_if_zero() const
Check whether the logical state is zero or not.
Definition: val_domain.hpp:142
void coef() const
Computes the coefficients.
Definition: val_domain.cpp:622
const Base_spectral & get_base() const
Returns the basis of decomposition.
Definition: val_domain.hpp:122