vtf-logo

clawpack/applications/euler/3d/RampGFM/src/Problem.h

00001 // -*- C++ -*-
00002 
00003 // Copyright (C) 2003-2007 California Institute of Technology
00004 // Ralf Deiterding, ralf@amroc.net
00005 
00006 #ifndef AMROC_PROBLEM_H
00007 #define AMROC_PROBLEM_H
00008 
00009 #include "euler3.h"
00010 #include "ClpProblem.h"
00011 
00012 #define OWN_GFMAMRSOLVER
00013 #include "ClpStdGFMProblem.h"
00014 #include "StatCPTLevelSet.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 #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(integ));
00031     SetFlagging(new FlaggingSpecific(*this)); 
00032     AddGFM(new GhostFluidMethod<VectorType,DIM>(
00033               new F77GFMBoundary<VectorType,DIM>(f_ibndrfl,f_itrans),
00034               new StatCPTLevelSet<DataType,DIM>()));
00035   }  
00036  
00037   ~SolverSpecific() {
00038     DeleteGFM(_GFM[0]);
00039     delete _Flagging;
00040     delete _Fixup;
00041   }