00001
00002
00003 #ifndef AMROC_PROBLEM_H
00004 #define AMROC_PROBLEM_H
00005
00006 #define DIM 2
00007 #define NEQUATIONS 9
00008 #define NVARS 7
00009
00010 #include "WENOProblem.h"
00011
00012
00013 #define OWN_GFMAMRSOLVER
00014 #include "WENOStdGFMProblem.h"
00015
00016 class SolverSpecific :
00017 public AMRGFMSolver<VectorType,FixupType,FlagType,DIM> {
00018 typedef VectorType::InternalDataType DataType;
00019 typedef AMRGFMSolver<VectorType,FixupType,FlagType,DIM> base;
00020 typedef F77GFMFileOutput<VectorType,FixupType,FlagType,DIM> output_type;
00021 public:
00022
00023 SolverSpecific(IntegratorSpecific& integ,
00024 base::initial_condition_type& init,
00025 base::boundary_conditions_type& bc) : base(integ, init, bc) {
00026 SetLevelTransfer(new F77LevelTransfer<VectorType,DIM>(f_prolong, f_restrict));
00027 #ifdef f_flgout
00028 SetFileOutput(new F77GFMFileOutput<VectorType,FixupType,FlagType,DIM>(*this,f_flgout));
00029 #else
00030 SetFileOutput(new GFMFileOutput<VectorType,FixupType,FlagType,DIM>(*this));
00031 #endif
00032 SetFixup(new FixupSpecific());
00033 SetFlagging(new FlaggingSpecific(*this));
00034 AddGFM(new GhostFluidMethod<VectorType,DIM>(
00035 new F77GFMBoundary<VectorType,DIM>(f_ibndrfl,f_itrans),
00036 new F77GFMLevelSet<DataType,DIM>(f_lset)));
00037 }
00038
00039 ~SolverSpecific() {
00040 DeleteGFM(_GFM[0]);
00041 delete _Flagging;
00042 delete _Fixup;
00043 }