00001
00002
00003
00004
00005
00006 #ifndef AMROC_LBM_STD_GFM_PROBLEM_H
00007 #define AMROC_LBM_STD_GFM_PROBLEM_H
00008
00016 #define OWN_AMRSOLVER
00017 #include "LBMStdProblem.h"
00018
00019 #include "AMRGFMSolver.h"
00020 #include "Interfaces/SchemeGFMBoundary.h"
00021 #include "Interfaces/SchemeGFMFileOutput.h"
00022
00023 #ifndef OWN_GFMAMRSOLVER
00024 class SolverSpecific :
00025 public AMRGFMSolver<MicroType,FixupType,FlagType,DIM> {
00026 typedef AMRGFMSolver<MicroType,FixupType,FlagType,DIM> base;
00027 public:
00028 SolverSpecific(IntegratorSpecific& integ,
00029 base::initial_condition_type& init,
00030 base::boundary_conditions_type& bc) : base(integ, init, bc) {
00031 SetLevelTransfer(new LBMF77LevelTransfer<LBMType,DIM>(integ.Scheme(), f_prolong, f_restrict));
00032 SetFileOutput(new SchemeGFMFileOutput<LBMType,FixupType,FlagType,DIM>(*this,integ.Scheme()));
00033 SetFixup(new FixupSpecific(integ.Scheme()));
00034 SetFlagging(new FlaggingSpecific(*this,integ.Scheme()));
00035 AddGFM(new GhostFluidMethodSpecific(new GFMBoundarySpecific(integ.Scheme()),
00036 new GFMLevelSetSpecific()));
00037 }
00038
00039 ~SolverSpecific() {
00040 DeleteGFM(_GFM[0]);
00041 delete _LevelTransfer;
00042 delete _Flagging;
00043 delete _Fixup;
00044 delete _FileOutput;
00045 }
00046
00047 virtual void SetupData() {
00048 base::SetupData();
00049 base::NAMRTimeSteps = 1;
00050 base::Step[0].LastTime = 1.e37;
00051 base::Step[0].VariableTimeStepping = -1;
00052 base::Step[0].dtv[0] = ((LBMIntegrator<LBMType,DIM> &)Integrator_()).LBM().TimeScale();
00053 }
00054 };
00055
00056 #endif
00057
00058 #endif
00059