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

SelfGravityPhysics.H

Go to the documentation of this file.
00001 /* _______              __
00002   / ___/ /  ___  __ _  / /  ___
00003  / /__/ _ \/ _ \/  ' \/ _ \/ _ \
00004  \___/_//_/\___/_/_/_/_.__/\___/
00005 */
00006 //
00007 // This software is copyright (C) by the Lawrence Berkeley
00008 // National Laboratory.  Permission is granted to reproduce
00009 // this software for non-commercial purposes provided that
00010 // this notice is left intact.
00011 //
00012 // It is acknowledged that the U.S. Government has rights to
00013 // this software under Contract DE-AC03-765F00098 between
00014 // the U.S.  Department of Energy and the University of
00015 // California.
00016 //
00017 // This software is provided as a professional and academic
00018 // contribution for joint exchange. Thus it is experimental,
00019 // is provided ``as is'', with no warranties of any kind
00020 // whatsoever, no support, no promise of updates, or printed
00021 // documentation. By using this software, you acknowledge
00022 // that the Lawrence Berkeley National Laboratory and
00023 // Regents of the University of California shall have no
00024 // liability with respect to the infringement of other
00025 // copyrights by any part of this software.
00026 //
00027 
00028 #ifndef _SELFGRAVITY_PHYSICS_H_
00029 #define _SELFGRAVITY_PHYSICS_H_
00030 
00031 #include <string>
00032 using std::string;
00033 
00034 #include "GodunovPhysics.H"
00035 #include "FluxBox.H"
00036 #include "LGintegrator.H"
00037 
00039 class SelfGravityPhysics : public GodunovPhysics
00040 {
00041 public:
00043   SelfGravityPhysics();
00044 
00046   virtual ~SelfGravityPhysics();
00047 
00049   virtual Real getMaxWaveSpeed(const FArrayBox& a_U,
00050                                const Box&       a_box);
00051 
00053   virtual Real getMaxWaveSpeedWithSource(const FArrayBox& a_U,
00054                                          const FArrayBox& a_S,
00055                                          const Real&      a_dx,
00056                                          const Box&       a_box);
00057 
00059   virtual GodunovPhysics* new_godunovPhysics() const;
00060 
00062   virtual Vector<string> stateNames();
00063 
00065   virtual Vector<string> plotNames();
00066 
00068   virtual int numConserved();
00069 
00071 
00075   virtual int numFluxes();
00076 
00077   virtual bool isDefined();
00078 
00080   virtual int numPrimitives();
00081 
00083   virtual int numSlopes();
00084 
00086   virtual void consToPrim(FArrayBox&       a_W,
00087                           const FArrayBox& a_U,
00088                           const Box&       a_box);
00089 
00091   virtual void getFlux(FArrayBox&       a_flux,
00092                        const FArrayBox& a_whalf,
00093                        const int&       a_dir,
00094                        const Box&       a_box);
00095 
00097 
00105   virtual void charAnalysis(FArrayBox&       a_dW,
00106                             const FArrayBox& a_W,
00107                             const int&       a_dir,
00108                             const Box&       a_box);
00109 
00111   virtual void charSynthesis(FArrayBox&       a_dW,
00112                              const FArrayBox& a_W,
00113                              const int&       a_dir,
00114                              const Box&       a_box);
00115 
00117   virtual void charValues(FArrayBox&       a_lambda,
00118                           const FArrayBox& a_W,
00119                           const int&       a_dir,
00120                           const Box&       a_box);
00121 
00123   virtual void incrementSource(FArrayBox&       a_localS,
00124                                const FArrayBox& a_S,
00125                                const FArrayBox& a_W,
00126                                const Real&      a_time,
00127                                const Real&      a_dt,
00128                                const Box&       a_box);
00130   virtual void incrementSource(FArrayBox&       a_S,
00131                                const FArrayBox& a_W,
00132                                const Box&       a_box){;};
00133 
00135   virtual void riemann(FArrayBox&       a_WStar,
00136                        const FArrayBox& a_WLeft,
00137                        const FArrayBox& a_WRight,
00138                        const FArrayBox& a_W,
00139                        const Real&      a_time,
00140                        const int&       a_dir,
00141                        const Box&       a_box);
00142 
00144   virtual void postNormalPred(FArrayBox&       a_dWMinus,
00145                               FArrayBox&       a_dWPlus,
00146                               const FArrayBox& a_W,
00147                               const Real&      a_dt,
00148                               const Real&      a_dx,
00149                               const int&       a_dir,
00150                               const Box&       a_box);
00151 
00153   virtual void quasilinearUpdate(FArrayBox&       a_AdWdx,
00154                                  const FArrayBox& a_wHalf,
00155                                  const FArrayBox& a_W,
00156                                  const Real&      a_scale,
00157                                  const int&       a_dir,
00158                                  const Box&       a_box);
00159 
00161   virtual void synchronize(FArrayBox&       a_U,
00162                            const FArrayBox& a_UOld,
00163                            const Box&       a_box);
00164 
00166   virtual void setupSourceTerm(FArrayBox&       a_S,
00167                                const FArrayBox& a_force,
00168                                const FArrayBox& a_U,
00169                                const Real&      a_time,
00170                                const Real&      a_dt,
00171                                const Box&       a_box);
00172 
00174   virtual Real applySource(FArrayBox&       a_U,
00175                            const FArrayBox& a_force,
00176                            const Real&      a_time,
00177                            const Real&      a_dt,
00178                            const Box&       a_box);
00179 
00181   virtual void forceCorrection(FArrayBox&       a_U,
00182                                const FArrayBox& a_force,
00183                                const Real&      a_time,
00184                                const Real&      a_dt,
00185                                const Box&       a_box);
00186 
00188   virtual void setPressureToEntropy(FArrayBox& a_U,
00189                                     const Box& a_box);
00190 
00192   virtual Interval velocityInterval();
00193 
00195   virtual int pressureIndex();
00196 
00198   virtual int densityIndex();
00199 
00201   virtual int bulkModulusIndex();
00202 
00204   virtual int entropyIndex();
00205 
00207   virtual Real smallPressure();
00208 
00210   virtual void setSmallPressure(const Real& a_smallPressure);
00211 
00212 protected:
00214   Real m_smallPressure;
00215 
00216 private:
00218   void operator=(const SelfGravityPhysics& a_input)
00219   {
00220     MayDay::Error("invalid operator");
00221   }
00222 
00224   SelfGravityPhysics(const SelfGravityPhysics& a_input)
00225   {
00226     MayDay::Error("invalid operator");
00227   }
00228 };
00229 
00230 
00231 #endif

Generated on Wed Oct 19 13:33:48 2005 for Chombo&AMRSelfGravity by doxygen 1.3.2