Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Compound Members | File Members

Divergence.H

Go to the documentation of this file.
00001 /* _______              __
00002   / ___/ /  ___  __ _  / /  ___
00003  / /__/ _ \/ _ \/  ' \/ _ \/ _ \
00004  \___/_//_/\___/_/_/_/_.__/\___/ 
00005 */
00006 
00007 // AmrSolver.H
00008 
00009 //
00010 // This software is copyright (C) by the Lawrence Berkeley
00011 // National Laboratory.  Permission is granted to reproduce
00012 // this software for non-commercial purposes provided that
00013 // this notice is left intact.
00014 // 
00015 // It is acknowledged that the U.S. Government has rights to
00016 // this software under Contract DE-AC03-765F00098 between
00017 // the U.S.  Department of Energy and the University of
00018 // California.
00019 //
00020 // This software is provided as a professional and academic
00021 // contribution for joint exchange. Thus it is experimental,
00022 // is provided ``as is'', with no warranties of any kind
00023 // whatsoever, no support, no promise of updates, or printed
00024 // documentation. By using this software, you acknowledge
00025 // that the Lawrence Berkeley National Laboratory and
00026 // Regents of the University of California shall have no
00027 // liability with respect to the infringement of other
00028 // copyrights by any part of this software.
00029 //
00030 // Dan Martin, Fri, Jan 14, 2000
00031 
00032 #ifndef _Divergence_H_
00033 #define _Divergence_H_
00034 
00035 #include "LevelData.H"
00036 #include "FArrayBox.H"
00037 #include "FluxBox.H"
00038 #include "LevelFluxRegister.H"
00039 #include "QuadCFInterp.H"
00040 
00041 /*@ManMemo: computes cell-centered level-operator divergence of 
00042   cell-centered vector field u; if uCrse != NULL, does coarse-fine
00043   boundary conditions for u -- if  quadInterp == true, uses quadratic
00044   coarse-fine boundary conditions, otherwise, use extrap BC's */
00045 void levelDivergenceCC(
00047                        LevelData<FArrayBox>& a_div, 
00049                        LevelData<FArrayBox>& a_u, 
00051                        LevelData<FArrayBox>* a_uCrsePtr, 
00053                        const Real a_dx,
00055                        const int a_nRefCrse,
00057                        const ProblemDomain& a_dProblem,
00059                        const bool a_quadInterp);
00060 
00061 /*@ManMemo: computes cell-centered level-operator divergence of 
00062   cell-centered vector field u; if uCrse != NULL, does coarse-fine
00063   boundary conditions for u -- if  quadInterp == true, uses quadratic
00064   coarse-fine boundary conditions, otherwise, use extrap BC's.
00065   This (deprecated) interface uses a Box instead of a ProblemDomain. */
00066 void levelDivergenceCC(
00068                        LevelData<FArrayBox>& a_div, 
00070                        LevelData<FArrayBox>& a_u, 
00072                        LevelData<FArrayBox>* a_uCrsePtr, 
00074                        const Real a_dx,
00076                        const int a_nRefCrse,
00078                        const Box& a_dProblem,
00080                        const bool a_quadInterp);
00081 
00082 /*@ManMemo: computes cell-centered level-operator divergence of 
00083   cell-centered vector field u; if uCrse != NULL, does coarse-fine
00084   boundary conditions for u -- if  quadInterp == true, uses quadratic
00085   coarse-fine boundary conditions, otherwise, use extrap BC's.  This
00086   one takes a pre-allocated QuadCFInterp object as an argument */
00087 void levelDivergenceCC(
00089                        LevelData<FArrayBox>& a_div, 
00091                        LevelData<FArrayBox>& a_u, 
00093                        LevelData<FArrayBox>* a_uCrsePtr, 
00095                        const Real a_dx,
00097                        const bool a_quadInterp, 
00099                        QuadCFInterp& a_cfInterp
00100                        );
00101 
00102 
00103 /*@ManMemo: computes cell-centered composite-operator divergence
00104   of cell-centered vector field u; uses same coarse-fine BC's as
00105   levelDivergenceCC -- if uFine != NULL, also does flux-matching
00106   BC with finer level uFine, using same coarse-fine BC's as used
00107   for coarse level BC. */
00108 void compDivergenceCC(
00110                       LevelData<FArrayBox>& a_div,
00112                       LevelData<FArrayBox>& a_u,
00114                       LevelData<FArrayBox>* a_uCrsePtr,
00116                       LevelData<FArrayBox>* a_uFinePtr,
00118                       const Real a_dx, 
00120                       const int a_nRefCrse,
00122                       const int a_nRefFine,
00124                       const ProblemDomain& a_dProblem,
00126                       const bool a_quadInterp);
00127 
00128 /*@ManMemo: computes cell-centered composite-operator divergence
00129   of cell-centered vector field u; uses same coarse-fine BC's as
00130   levelDivergenceCC -- if uFine != NULL, also does flux-matching
00131   BC with finer level uFine, using same coarse-fine BC's as used
00132   for coarse level BC. This (deprecated) interface uses a Box instead 
00133   of a ProblemDomain */
00134 void compDivergenceCC(
00136                       LevelData<FArrayBox>& a_div,
00138                       LevelData<FArrayBox>& a_u,
00140                       LevelData<FArrayBox>* a_uCrsePtr,
00142                       LevelData<FArrayBox>* a_uFinePtr,
00144                       const Real a_dx, 
00146                       const int a_nRefCrse,
00148                       const int a_nRefFine,
00150                       const Box& a_dProblem,
00152                       const bool a_quadInterp);
00153 
00154 
00155 /*@ManMemo: computes cell-centered composite-operator divergence
00156   of cell-centered vector field u; uses same coarse-fine BC's as
00157   levelDivergenceCC -- if uFine != NULL, also does flux-matching
00158   BC with finer level uFine, using same coarse-fine BC's as used
00159   for coarse level BC. In this one, pre-allocated LevelFluxRegister
00160   and QuadCFInterp objects are passed in as an argument (saves 
00161   allocation inside fn.)*/
00162 void compDivergenceCC(
00164                       LevelData<FArrayBox>& a_div,
00166                       LevelData<FArrayBox>& a_u,
00168                       LevelData<FArrayBox>* a_uCrsePtr,
00170                       LevelData<FArrayBox>* a_uFinePtr,
00172                       const Real a_dx, 
00174                       const int a_nRefFine,
00176                       const int a_nRefCrse,
00178                       const ProblemDomain& a_dProblem,
00180                       const bool a_quadInterp,
00182                       LevelFluxRegister* a_fluxRegFinePtr,
00184                       QuadCFInterp& a_cfInterpCrse,
00186                       QuadCFInterp& a_cfInterpFine);
00187 
00188 
00189 /*@ManMemo: computes cell-centered composite-operator divergence
00190   of cell-centered vector field u; uses same coarse-fine BC's as
00191   levelDivergenceCC -- if uFine != NULL, also does flux-matching
00192   BC with finer level uFine, using same coarse-fine BC's as used
00193   for coarse level BC. In this one, pre-allocated LevelFluxRegister
00194   and QuadCFInterp objects are passed in as an argument (saves 
00195   allocation inside fn.)  This (deprecated) interface uses a 
00196   Box instead of a ProblemDomain. */
00197 void compDivergenceCC(
00199                       LevelData<FArrayBox>& a_div,
00201                       LevelData<FArrayBox>& a_u,
00203                       LevelData<FArrayBox>* a_uCrsePtr,
00205                       LevelData<FArrayBox>* a_uFinePtr,
00207                       const Real a_dx, 
00209                       const int a_nRefFine,
00211                       const int a_nRefCrse,
00213                       const Box& a_dProblem,
00215                       const bool a_quadInterp,
00217                       LevelFluxRegister* a_fluxRegFinePtr,
00219                       QuadCFInterp& a_cfInterpCrse,
00221                       QuadCFInterp& a_cfInterpFine);
00222 
00223 
00224 /*@ManMemo: computes cell-centered level-operator divergence of 
00225   edge-centered vector field uEdge; assumes all coarse-fine BC's
00226   have already been set. */
00227 void levelDivergenceMAC(
00229                         LevelData<FArrayBox>& a_div,
00231                         const LevelData<FluxBox>& a_uEdge, 
00233                         const Real a_dx);
00234 
00235 
00237 void simpleDivergenceMAC(
00238                          FArrayBox& a_div,
00240                          const FluxBox& a_uEdge,
00242                          const Real a_dx);
00243 
00244 /*@ManMemo: computes composite cell-centered divergence of edge-centered
00245   vector field uEdge; if finer level data uEdgeFine exists, use 
00246   flux-matching condition to compute divergence along coarse-fine
00247   interface. */
00248 void compDivergenceMAC(
00250                        LevelData<FArrayBox>& a_div,
00252                        LevelData<FluxBox>& a_uEdge,
00254                        LevelData<FluxBox>* a_uEdgeFinePtr, 
00256                        const Real a_dx,
00258                        const Real* a_dxFine,
00260                        const int a_nRefFine,
00262                        const ProblemDomain& a_dProblem);
00263 
00264 /*@ManMemo: computes composite cell-centered divergence of edge-centered
00265   vector field uEdge; if finer level data uEdgeFine exists, use 
00266   flux-matching condition to compute divergence along coarse-fine
00267   interface. This (deprecated) interface uses a Box instead of a
00268   ProblemDomain */
00269 void compDivergenceMAC(
00271                        LevelData<FArrayBox>& a_div,
00273                        LevelData<FluxBox>& a_uEdge,
00275                        LevelData<FluxBox>* a_uEdgeFinePtr, 
00277                        const Real a_dx,
00279                        const Real* a_dxFine,
00281                        const int a_nRefFine,
00283                        const Box& a_dProblem);
00284 
00285 /*@ManMemo: just like normal compDivergenceMAC, but pass in a predefined 
00286   flux register (more efficient) */
00287 void compDivergenceMAC(
00289                        LevelData<FArrayBox>& a_div,
00291                        LevelData<FluxBox>& a_uEdge,
00293                        LevelData<FluxBox>* a_uEdgeFinePtr,
00295                        LevelFluxRegister* a_fluxRegPtr,
00297                        const Real a_dx,
00299                        const Real* a_dxFine,
00301                        const int a_nRefine,
00303                        const ProblemDomain& a_dProblem);
00304 
00305 
00306 
00307 /*@ManMemo: just like normal compDivergenceMAC, but pass in a predefined 
00308   flux register (more efficient). This (deprecated) interface uses a
00309   Box instead of a ProblemDomain. */
00310 void compDivergenceMAC(
00312                        LevelData<FArrayBox>& a_div,
00314                        LevelData<FluxBox>& a_uEdge,
00316                        LevelData<FluxBox>* a_uEdgeFinePtr,
00318                        LevelFluxRegister* a_fluxRegPtr,
00320                        const Real a_dx,
00322                        const Real* a_dxFine,
00324                        const int a_nRefine,
00326                        const Box& a_dProblem);
00327                        
00328 
00329 
00330 #endif
00331 
00332 

Generated on Wed Jun 2 13:53:33 2004 for Chombo&INSwithParticles by doxygen 1.3.2