00001
00002
00003
00004
00005
00006 #ifndef AMROC_PROBLEM_H
00007 #define AMROC_PROBLEM_H
00008
00009 #include "acousticsv3.h"
00010 #include "ClpProblem.h"
00011
00012 #define OWN_GFMAMRSOLVER
00013 #include "ClpStdGFMProblem.h"
00014 #include "ClpF77GFMFileOutput.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 public:
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 SetFileOutput(new ClpF77GFMFileOutput<VectorType,FixupType,FlagType,AuxType,DIM>(*this,integ,f_flgout));
00026 SetFixup(new FixupSpecific(integ));
00027 SetFlagging(new FlaggingSpecific(*this));
00028 AddGFM(new GhostFluidMethod<VectorType,DIM>(new F77GFMBoundary<VectorType,DIM>(f_ibndrfl),
00029 new F77GFMLevelSet<DataType,DIM>(f_lset)));
00030 }
00031
00032 ~SolverSpecific() {
00033 DeleteGFM(_GFM[0]);
00034 delete _Flagging;
00035 delete _Fixup;
00036 }
00037 };