vtf-logo

ClpStdELCGFMProblem.h

Go to the documentation of this file.
00001 // -*- C++ -*-
00002 
00003 // Copyright (C) 2003-2007 California Institute of Technology
00004 // Ralf Deiterding, ralf@amroc.net
00005 
00006 #ifndef AMROC_CLP_STD_ELC_GFM_PROBLEM_H
00007 #define AMROC_CLP_STD_ELC_GFM_PROBLEM_H
00008 
00016 #define OWN_GFMAMRSOLVER
00017 #include "ClpStdGFMProblem.h"
00018 #include "AMRELCGFMSolver.h"
00019 
00020 #ifndef OWN_ELCGFMAMRSOLVER
00021 class FluidSolverSpecific : 
00022   public AMRELCGFMSolver<VectorType,FixupType,FlagType,DIM> {
00023   typedef VectorType::InternalDataType DataType;
00024   typedef AMRELCGFMSolver<VectorType,FixupType,FlagType,DIM> base;
00025   typedef F77GFMFileOutput<VectorType,FixupType,FlagType,DIM> output_type;
00026 public:
00027   FluidSolverSpecific() : base(_IntegratorSpecific, _InitialConditionSpecific, 
00028                                _BoundaryConditionsSpecific) {
00029     SetLevelTransfer(new F77LevelTransfer<VectorType,DIM>(f_prolong, f_restrict));
00030     SetFileOutput(new output_type(*this,f_flgout)); 
00031     SetFixup(new FixupSpecific(_IntegratorSpecific));
00032     SetFlagging(new FlaggingSpecific(*this)); 
00033     AddGFM(new GhostFluidMethod<VectorType,DIM>(
00034               new F77ELCGFMBoundary<VectorType,DIM>(f_ibndrfl,f_itrans,*this),
00035               new CPTLevelSet<DataType,DIM>()));
00036     SetCoupleGFM(0);
00037   }  
00038  
00039   ~FluidSolverSpecific() {
00040     DeleteGFM(_GFM[0]);
00041     delete _Flagging;
00042     delete _Fixup;
00043   }
00044 
00045   virtual void SendBoundaryData() {
00046     START_WATCH
00047       for (register int l=0; l<=FineLevel(base::GH()); l++) 
00048         ((output_type*) _FileOutput)->Transform(base::U(), base::Work(), 
00049                                                 CurrentTime(base::GH(),l), l, 
00050                                                 base::Dim()+4, base::t[l]);
00051     END_WATCH(FLUID_CPL_PRESSURE_CALCULATE)
00052     base::SendBoundaryData();
00053   }
00054 
00055 protected:
00056   IntegratorSpecific _IntegratorSpecific;
00057   InitialConditionSpecific _InitialConditionSpecific;
00058   BoundaryConditionsSpecific _BoundaryConditionsSpecific;
00059 }; 
00060 
00061 #endif
00062 
00063 #endif