Chombo + EB  3.2
ResistivityOp.H
Go to the documentation of this file.
1 #ifdef CH_LANG_CC
2 /*
3  * _______ __
4  * / ___/ / ___ __ _ / / ___
5  * / /__/ _ \/ _ \/ V \/ _ \/ _ \
6  * \___/_//_/\___/_/_/_/_.__/\___/
7  * Please refer to Copyright.txt, in Chombo's root directory.
8  */
9 #endif
10 
11 // dtg 2007
12 
13 #ifndef _RESISTIVITYOP_H_
14 #define _RESISTIVITYOP_H_
15 
16 #include "AMRMultiGrid.H"
17 #include "REAL.H"
18 #include "Box.H"
19 #include "LevelDataOps.H"
20 #include "BCFunc.H"
21 #include "FArrayBox.H"
22 #include "FluxBox.H"
23 #include "CFIVS.H"
24 #include "TensorCFInterp.H"
25 #include "CoarseAverage.H"
26 #include "AMRTGA.H"
27 #include "NamespaceHeader.H"
28 
29 ///
30 /**
31  operator L is defined as
32  L(B) = alpha B + beta*(divF)
33  where
34  F = eta((grad B - grad B^T) + I (div B))
35  alpha and beta are constants. eta is a function of space.
36  beta and eta are incorporated into the flux F when getFlux is called.
37  This is always 3 variables. SpaceDim refers to only the derivatives
38  that are meaningful in this bizzare application.
39 */
40 class ResistivityOp : public LevelTGAHelmOp<LevelData<FArrayBox>, FluxBox>
41 {
42 public:
43 
44  virtual void setAlphaAndBeta(const Real& a_alpha,
45  const Real& a_beta)
46  {
47  m_alpha = a_alpha;
48  m_beta = a_beta;
49  setLambda();
50  }
51 
52  virtual void diagonalScale(LevelData<FArrayBox>& a_rhs, bool a_kappaWeighted)
53  {
54  diagonalScale(a_rhs);
55  }
56 
57  virtual void diagonalScale(LevelData<FArrayBox>& a_rhs)
58  {
59  //does not apply here
60  }
61 
63  {
64  //does not apply here
65  }
66 
67  ///
68  /**
69  */
70  virtual ~ResistivityOp()
71  {
72  }
73 
74  //use at thy peril
75  virtual void getFlux(FluxBox& a_flux,
76  const LevelData<FArrayBox>& a_data,
77  const Box& a_grid,
78  const DataIndex& a_dit,
79  Real a_scale);
80 
81  ///
82  /**
83  */
84  ResistivityOp(const DisjointBoxLayout& a_grids,
85  const DisjointBoxLayout& a_gridsFine,
86  const DisjointBoxLayout& a_gridsCoar,
87  const RefCountedPtr<LevelData<FluxBox> >& a_eta,
88  Real a_alpha,
89  Real a_beta,
90  int a_refToFine,
91  int a_refToCoar,
92  const ProblemDomain& a_domain,
93  const Real& a_dxLevel,
94  const Real& a_dxCoar,
95  BCFunc a_bc);
96 
97  virtual void residual( LevelData<FArrayBox>& a_lhs,
98  const LevelData<FArrayBox>& a_phi,
99  const LevelData<FArrayBox>& a_rhs,
100  bool a_homogeneous = false);
101 
102  virtual void preCond( LevelData<FArrayBox>& a_correction,
103  const LevelData<FArrayBox>& a_residual);
104 
105  virtual void applyOp( LevelData<FArrayBox>& a_lhs,
106  const LevelData<FArrayBox>& a_phi,
107  bool a_homogeneous = false);
108 
109  virtual void applyOpNoBoundary( LevelData<FArrayBox>& a_lhs,
110  const LevelData<FArrayBox>& a_phi);
111 
112  virtual void create( LevelData<FArrayBox>& a_lhs,
113  const LevelData<FArrayBox>& a_rhs);
114  virtual void createCoarsened( LevelData<FArrayBox>& a_lhs,
115  const LevelData<FArrayBox>& a_rhs,
116  const int& a_refRat);
117 
118  void reflux(const LevelData<FArrayBox>& a_phiFine,
119  const LevelData<FArrayBox>& a_phi,
121  AMRLevelOp<LevelData<FArrayBox> >* a_finerOp);
122 
123  void getFlux(FArrayBox& a_flux,
124  const FArrayBox& a_data,
125  const FArrayBox& a_gradData,
126  const FArrayBox& a_etaFace,
127  const Box& a_facebox,
128  int a_dir,
129  int ref = 1);
130 
131  /// utility function which computes operator after all bc's have been set
133  const LevelData<FArrayBox>& a_phi);
134 
135  virtual void assign( LevelData<FArrayBox>& a_lhs,
136  const LevelData<FArrayBox>& a_rhs) ;
137  virtual Real dotProduct(const LevelData<FArrayBox>& a_1,
138  const LevelData<FArrayBox>& a_2) ;
139  virtual void incr( LevelData<FArrayBox>& a_lhs,
140  const LevelData<FArrayBox>& a_x,
141  Real a_scale) ;
142  virtual void axby( LevelData<FArrayBox>& a_lhs,
143  const LevelData<FArrayBox>& a_x,
144  const LevelData<FArrayBox>& a_y,
145  Real a, Real b) ;
146 
147  virtual void scale(LevelData<FArrayBox>& a_lhs, const Real& a_scale) ;
148 
149  virtual Real norm(const LevelData<FArrayBox>& a_x, int a_ord);
150 
151  virtual void setToZero( LevelData<FArrayBox>& a_x);
152  /*@}*/
153 
154  /**
155  \name MGLevelOp functions */
156  /*@{*/
157 
158  virtual void relax(LevelData<FArrayBox>& a_e,
159  const LevelData<FArrayBox>& a_residual,
160  int iterations);
161 
162  virtual void createCoarser(LevelData<FArrayBox>& a_coarse,
163  const LevelData<FArrayBox>& a_fine,
164  bool ghosted);
165  /**
166  calculate restricted residual
167  a_resCoarse[2h] = I[h->2h] (rhsFine[h] - L[h](phiFine[h])
168  */
169  virtual void restrictResidual(LevelData<FArrayBox>& a_resCoarse,
170  LevelData<FArrayBox>& a_phiFine,
171  const LevelData<FArrayBox>& a_rhsFine);
172 
173  /**
174  correct the fine solution based on coarse correction
175  a_phiThisLevel += I[2h->h](a_correctCoarse)
176  */
177  virtual void prolongIncrement(LevelData<FArrayBox>& a_phiThisLevel,
178  const LevelData<FArrayBox>& a_correctCoarse);
179 
180  /*@}*/
181 
182  /**
183  \name AMRLevelOp functions */
184  /*@{*/
185 
186  /** returns 1 when there are no coarser AMRLevelOp objects */
187  virtual int refToCoarser()
188  {
189  return m_refToCoar;
190  }
191 
192  /** a_residual = a_rhs - L(a_phi, a_phiFine, a_phiCoarse) */
193  virtual void AMRResidual(LevelData<FArrayBox>& a_residual,
194  const LevelData<FArrayBox>& a_phiFine,
195  const LevelData<FArrayBox>& a_phi,
196  const LevelData<FArrayBox>& a_phiCoarse,
197  const LevelData<FArrayBox>& a_rhs,
198  bool a_homogeneousPhysBC,
199  AMRLevelOp<LevelData<FArrayBox> >* a_finerOp);
200 
201  /** residual assuming no more coarser AMR levels */
202 
203  virtual void AMRResidualNC(LevelData<FArrayBox>& a_residual,
204  const LevelData<FArrayBox>& a_phiFine,
205  const LevelData<FArrayBox>& a_phi,
206  const LevelData<FArrayBox>& a_rhs,
207  bool a_homogeneousPhysBC,
208  AMRLevelOp<LevelData<FArrayBox> >* a_finerOp);
209 
210  /** a_residual = a_rhs - L(a_phi, a_phiCoarse) */
211  virtual void AMRResidualNF(LevelData<FArrayBox>& a_residual,
212  const LevelData<FArrayBox>& a_phi,
213  const LevelData<FArrayBox>& a_phiCoarse,
214  const LevelData<FArrayBox>& a_rhs,
215  bool a_homogeneousPhysBC);
216 
217  /** a_resCoarse = I[h-2h]( a_residual - L(a_correction, a_coarseCorrection))
218  it is assumed that a_resCoarse has already been filled in with the coarse
219  version of AMRResidualNF and that this operation is free to overwrite
220  in the overlap regions.
221  */
222 
223  virtual void AMRRestrict(LevelData<FArrayBox>& a_resCoarse,
224  const LevelData<FArrayBox>& a_residual,
225  const LevelData<FArrayBox>& a_correction,
226  const LevelData<FArrayBox>& a_coarseCorrection,
227  bool a_skip_res = false );
228 
229  /** a_correction += I[h->h](a_coarseCorrection) */
230  virtual void AMRProlong(LevelData<FArrayBox>& a_correction,
231  const LevelData<FArrayBox>& a_coarseCorrection);
232 
233  /** a_residual = a_residual - L(a_correction, a_coarseCorrection) */
234  virtual void AMRUpdateResidual(LevelData<FArrayBox>& a_residual,
235  const LevelData<FArrayBox>& a_correction,
236  const LevelData<FArrayBox>& a_coarseCorrection);
237 
238  ///
239  /**
240  compute norm over all cells on coarse not covered by finer
241  */
242  virtual Real AMRNorm(const LevelData<FArrayBox>& a_coarseResid,
243  const LevelData<FArrayBox>& a_fineResid,
244  const int& a_refRat,
245  const int& a_ord);
246 
248  ///
249  /**
250  does homogeneous coarse/fine interpolation for phi
251  */
252  void
254  const DataIndex& a_datInd,
255  int a_idir,
256  Side::LoHiSide a_hiorlo);
257 
258  ///
259  /** does homogeneous coarse/fine interpolation for tangential gradient
260  (needs phi ghost cells to be filled in first, so should call
261  homogeneousCFInterpPhi first)
262  */
264  const LevelData<FArrayBox>& a_phi,
265  const DataIndex& a_datInd,
266  int a_idir,
267  Side::LoHiSide a_hiorlo);
268 
270  const DataIndex& a_datInd,
271  const int a_idir,
272  const Side::LoHiSide a_hiorlo,
273  const IntVectSet& a_interpIVS);
274  ///
275  /**
276  Apply the AMR operator, including coarse-fine matching
277  */
278  void AMROperator( LevelData<FArrayBox>& a_LofPhi,
279  const LevelData<FArrayBox>& a_phiFine,
280  const LevelData<FArrayBox>& a_phi,
281  const LevelData<FArrayBox>& a_phiCoarse,
282  bool a_homogeneousDomBC,
283  AMRLevelOp<LevelData<FArrayBox> >* a_finerOp);
284 
285  void AMROperatorNF( LevelData<FArrayBox>& a_LofPhi,
286  const LevelData<FArrayBox>& a_phi,
287  const LevelData<FArrayBox>& a_phiCoarse,
288  bool a_homogeneousBC);
289 
290  virtual void AMROperatorNC( LevelData<FArrayBox>& a_LofPhi,
291  const LevelData<FArrayBox>& a_phiFine,
292  const LevelData<FArrayBox>& a_phi,
293  bool a_homogeneousBC,
294  AMRLevelOp<LevelData<FArrayBox> >* a_finerOp);
295 
296  void cellGrad(FArrayBox& a_gradPhi,
297  const FArrayBox& a_phi,
298  const Box& a_grid);
299 
300  void cfinterp(const LevelData<FArrayBox>& a_phiFine,
301  const LevelData<FArrayBox>& a_phiCoarse);
302 
303  virtual void fillGrad(const LevelData<FArrayBox>& a_phiFine);
304 
305  void loHiCenterFace(Box& a_loBox,
306  int& a_hasLo,
307  Box& a_hiBox,
308  int& a_hasHi,
309  Box& a_centerBox,
310  const ProblemDomain& a_eblg,
311  const Box& a_inBox,
312  const int& a_dir);
313 
314  void getFaceDivAndGrad(FArrayBox& a_faceDiv,
315  FArrayBox& a_faceGrad,
316  const FArrayBox& a_data,
317  const FArrayBox& a_gradData,
318  const ProblemDomain& a_domain,
319  const Box& a_faceBox,
320  const int& a_faceDir,
321  const Real a_dx);
322 
323  ///take cell centered divergence of the inputs.
324  /**
325  not part of the operator evaluation. this is to
326  test whether the divergence of b converges at h^2
327  as b does if b is analytically divergence-free.
328  */
330  const LevelData<FArrayBox>& a_phi,
331  const LevelData<FArrayBox>* a_phiC);
332 protected:
333  void setLambda();
341 
342  //b is a scalar in 2d, vector in 3d
343  static const int s_nComp; //==3
344  static const int s_nGradComp; //==3*SpaceDim
348  //relaxation coef
354 
357  // will need these to do tangential gradient computations
361 private:
362  ///weak construction is bad
364  {
365  MayDay::Error("invalid operator");
366  }
367  //copy constructor and operator= disallowed for all the usual reasons
369  {
370  MayDay::Error("invalid operator");
371  }
372  void operator=(const ResistivityOp& a_opin)
373  {
374  MayDay::Error("invalid operator");
375  }
376 };
377 
378 ///
379 /**
380  Factory to create ResistivityOps
381  */
382 class ResistivityOpFactory: public AMRLevelOpFactory<LevelData< FArrayBox> >
383 {
384 public:
386  {
387  }
388 
390  const Vector<RefCountedPtr<LevelData<FluxBox> > >& a_eta,
391  Real a_alpha,
392  Real a_beta,
393  const Vector<int>& a_refRatios,
394  const ProblemDomain& a_domainCoar,
395  const Real& a_dxCoar,
396  BCFunc a_bc);
397 
398  ///
400  MGnewOp(const ProblemDomain& a_FineindexSpace,
401  int depth,
402  bool homoOnly = true);
403 
404  ///
406  AMRnewOp(const ProblemDomain& a_indexSpace);
407 
408  ///
409  virtual int refToFiner(const ProblemDomain&) const;
410 
411 private:
417  // refinement to next coarser level
421 
422  ///weak construction is bad
424  {
425  MayDay::Error("invalid operator");
426  }
427  //copy constructor and operator= disallowed for all the usual reasons
429  {
430  MayDay::Error("invalid operator");
431  }
432 
433  void operator=(const ResistivityOpFactory& a_opin)
434  {
435  MayDay::Error("invalid operator");
436  }
437 };
438 
439 #include "NamespaceFooter.H"
440 #endif
Vector< Real > m_dx
Definition: ResistivityOp.H:416
Definition: ResistivityOp.H:382
virtual void applyOp(LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, bool a_homogeneous=false)
A reference-counting handle class.
Definition: RefCountedPtr.H:173
An irregular domain on an integer lattice.
Definition: IntVectSet.H:44
Real m_alpha
Definition: ResistivityOp.H:336
A class to facilitate interaction with physical boundary conditions.
Definition: ProblemDomain.H:141
Real m_beta
Definition: ResistivityOp.H:420
LayoutData< CFIVS > m_loCFIVS[SpaceDim]
Definition: ResistivityOp.H:355
static const int s_nGradComp
Definition: ResistivityOp.H:344
static const int s_nComp
Definition: ResistivityOp.H:343
void loHiCenterFace(Box &a_loBox, int &a_hasLo, Box &a_hiBox, int &a_hasHi, Box &a_centerBox, const ProblemDomain &a_eblg, const Box &a_inBox, const int &a_dir)
virtual void assign(LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs)
virtual int refToFiner(const ProblemDomain &) const
LevelDataOps< FArrayBox > m_levelOps
Definition: ResistivityOp.H:351
void computeOperatorNoBCs(LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi)
utility function which computes operator after all bc's have been set
A strange but true thing to make copying from one boxlayoutdata to another fast.
Definition: Copier.H:145
virtual void divideByIdentityCoef(LevelData< FArrayBox > &a_rhs)
Definition: ResistivityOp.H:62
LevelData< FArrayBox > m_grad
Definition: ResistivityOp.H:350
Vector< DisjointBoxLayout > m_boxes
Definition: ResistivityOp.H:415
virtual void diagonalScale(LevelData< FArrayBox > &a_rhs, bool a_kappaWeighted)
Definition: ResistivityOp.H:52
virtual void preCond(LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_residual)
void interpOnIVSHomo(LevelData< FArrayBox > &a_phif, const DataIndex &a_datInd, const int a_idir, const Side::LoHiSide a_hiorlo, const IntVectSet &a_interpIVS)
Quadratic coarse-fine interpolation utility for tensors.
Definition: TensorCFInterp.H:36
LayoutData< TensorFineStencilSet > m_hiTanStencilSets[SpaceDim]
Definition: ResistivityOp.H:358
void AMROperator(LevelData< FArrayBox > &a_LofPhi, const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_phiCoarse, bool a_homogeneousDomBC, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp)
virtual void restrictResidual(LevelData< FArrayBox > &a_resCoarse, LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_rhsFine)
virtual void createCoarsened(LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs, const int &a_refRat)
virtual void AMRResidualNF(LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_phiCoarse, const LevelData< FArrayBox > &a_rhs, bool a_homogeneousPhysBC)
Vector< IntVect > m_colors
Definition: ResistivityOp.H:360
void reflux(const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, LevelData< FArrayBox > &residual, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp)
Vector< ProblemDomain > m_domains
Definition: ResistivityOp.H:414
Real m_alpha
Definition: ResistivityOp.H:420
Definition: ResistivityOp.H:40
void cfinterp(const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phiCoarse)
const int SpaceDim
Definition: SPACE.H:38
Definition: AMRMultiGrid.H:39
virtual void scale(LevelData< FArrayBox > &a_lhs, const Real &a_scale)
Real m_dxCrse
Definition: ResistivityOp.H:346
Vector< RefCountedPtr< LevelData< FluxBox > > > m_eta
Definition: ResistivityOp.H:412
virtual ~ResistivityOp()
Definition: ResistivityOp.H:70
void AMROperatorNF(LevelData< FArrayBox > &a_LofPhi, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_phiCoarse, bool a_homogeneousBC)
A FArrayBox-like container for face-centered fluxes.
Definition: FluxBox.H:22
ResistivityOpFactory()
weak construction is bad
Definition: ResistivityOp.H:423
LevelData< FArrayBox > m_phic
Definition: ResistivityOp.H:413
virtual int refToCoarser()
Definition: ResistivityOp.H:187
virtual Real norm(const LevelData< FArrayBox > &a_x, int a_ord)
virtual void setAlphaAndBeta(const Real &a_alpha, const Real &a_beta)
Definition: ResistivityOp.H:44
virtual void applyOpNoBoundary(LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi)
virtual void prolongIncrement(LevelData< FArrayBox > &a_phiThisLevel, const LevelData< FArrayBox > &a_correctCoarse)
virtual void create(LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_rhs)
void homogeneousCFInterpPhi(LevelData< FArrayBox > &a_phif, const DataIndex &a_datInd, int a_idir, Side::LoHiSide a_hiorlo)
virtual void AMRProlong(LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection)
int m_refToFine
Definition: ResistivityOp.H:339
double Real
Definition: REAL.H:33
Definition: MultiGrid.H:30
virtual void setToZero(LevelData< FArrayBox > &a_x)
ProblemDomain m_domain
Definition: ResistivityOp.H:347
virtual void AMRUpdateResidual(LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection)
virtual void fillGrad(const LevelData< FArrayBox > &a_phiFine)
These functions are part of the LevelTGA interface......
virtual void getFlux(FluxBox &a_flux, const LevelData< FArrayBox > &a_data, const Box &a_grid, const DataIndex &a_dit, Real a_scale)
virtual Real dotProduct(const LevelData< FArrayBox > &a_1, const LevelData< FArrayBox > &a_2)
A BoxLayout that has a concept of disjointedness.
Definition: DisjointBoxLayout.H:30
void getFaceDivAndGrad(FArrayBox &a_faceDiv, FArrayBox &a_faceGrad, const FArrayBox &a_data, const FArrayBox &a_gradData, const ProblemDomain &a_domain, const Box &a_faceBox, const int &a_faceDir, const Real a_dx)
void cellGrad(FArrayBox &a_gradPhi, const FArrayBox &a_phi, const Box &a_grid)
LoHiSide
Definition: LoHiSide.H:27
void divergenceCC(LevelData< FArrayBox > &a_div, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > *a_phiC)
take cell centered divergence of the inputs.
Real m_beta
Definition: ResistivityOp.H:337
ResistivityOpFactory(const ResistivityOpFactory &a_opin)
Definition: ResistivityOp.H:428
virtual MGLevelOp< LevelData< FArrayBox > > * MGnewOp(const ProblemDomain &a_FineindexSpace, int depth, bool homoOnly=true)
virtual void createCoarser(LevelData< FArrayBox > &a_coarse, const LevelData< FArrayBox > &a_fine, bool ghosted)
static void Error(const char *const a_msg=m_nullString, int m_exitCode=CH_DEFAULT_ERROR_CODE)
Print out message to cerr and exit with the specified exit code.
TensorCFInterp m_interpWithCoarser
Definition: ResistivityOp.H:353
virtual void incr(LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_x, Real a_scale)
void(* BCFunc)(FArrayBox &a_state, const Box &a_valid, const ProblemDomain &a_domain, Real a_dx, bool a_homogeneous)
Definition: BCFunc.H:30
Copier m_exchangeCopier
Definition: ResistivityOp.H:352
void setLambda()
virtual void AMRRestrict(LevelData< FArrayBox > &a_resCoarse, const LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_correction, const LevelData< FArrayBox > &a_coarseCorrection, bool a_skip_res=false)
virtual AMRLevelOp< LevelData< FArrayBox > > * AMRnewOp(const ProblemDomain &a_indexSpace)
RefCountedPtr< LevelData< FluxBox > > m_eta
Definition: ResistivityOp.H:334
A Rectangular Domain on an Integer Lattice.
Definition: Box.H:465
void homogeneousCFInterp(LevelData< FArrayBox > &a_phif)
virtual void residual(LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs, bool a_homogeneous=false)
ResistivityOp(const ResistivityOp &a_opin)
Definition: ResistivityOp.H:368
Definition: DataIndex.H:112
virtual void AMRResidualNC(LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_rhs, bool a_homogeneousPhysBC, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp)
Real m_dx
Definition: ResistivityOp.H:345
virtual void AMROperatorNC(LevelData< FArrayBox > &a_LofPhi, const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, bool a_homogeneousBC, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp)
Definition: FArrayBox.H:45
Definition: AMRTGA.H:159
int m_refToCoar
Definition: ResistivityOp.H:338
virtual void AMRResidual(LevelData< FArrayBox > &a_residual, const LevelData< FArrayBox > &a_phiFine, const LevelData< FArrayBox > &a_phi, const LevelData< FArrayBox > &a_phiCoarse, const LevelData< FArrayBox > &a_rhs, bool a_homogeneousPhysBC, AMRLevelOp< LevelData< FArrayBox > > *a_finerOp)
BCFunc m_bc
Definition: ResistivityOp.H:340
void homogeneousCFInterpTanGrad(LevelData< FArrayBox > &a_tanGrad, const LevelData< FArrayBox > &a_phi, const DataIndex &a_datInd, int a_idir, Side::LoHiSide a_hiorlo)
virtual Real AMRNorm(const LevelData< FArrayBox > &a_coarseResid, const LevelData< FArrayBox > &a_fineResid, const int &a_refRat, const int &a_ord)
Definition: AMRMultiGrid.H:233
void operator=(const ResistivityOp &a_opin)
Definition: ResistivityOp.H:372
BCFunc m_bc
Definition: ResistivityOp.H:419
LayoutData< TensorFineStencilSet > m_loTanStencilSets[SpaceDim]
Definition: ResistivityOp.H:359
LevelData< FArrayBox > m_lambda
Definition: ResistivityOp.H:349
virtual ~ResistivityOpFactory()
Definition: ResistivityOp.H:385
LayoutData< CFIVS > m_hiCFIVS[SpaceDim]
Definition: ResistivityOp.H:356
void operator=(const ResistivityOpFactory &a_opin)
Definition: ResistivityOp.H:433
DisjointBoxLayout m_grids
Definition: ResistivityOp.H:335
virtual void diagonalScale(LevelData< FArrayBox > &a_rhs)
Definition: ResistivityOp.H:57
virtual void relax(LevelData< FArrayBox > &a_e, const LevelData< FArrayBox > &a_residual, int iterations)
ResistivityOp()
weak construction is bad
Definition: ResistivityOp.H:363
Vector< int > m_refRatios
Definition: ResistivityOp.H:418
virtual void axby(LevelData< FArrayBox > &a_lhs, const LevelData< FArrayBox > &a_x, const LevelData< FArrayBox > &a_y, Real a, Real b)