vtf-logo

weno/applications/euler/2d/Conical-Sturtevant72/src/Problem.h

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