SundancePeanoMesher2D.hpp
Go to the documentation of this file.
00001 /* @HEADER@ */
00002 // ************************************************************************
00003 //
00004 //                              Sundance
00005 //                 Copyright (2005) Sandia Corporation
00006 //
00007 // Copyright (year first published) Sandia Corporation.  Under the terms
00008 // of Contract DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government
00009 // retains certain rights in this software.
00010 //
00011 // This library is free software; you can redistribute it and/or modify
00012 // it under the terms of the GNU Lesser General Public License as
00013 // published by the Free Software Foundation; either version 2.1 of the
00014 // License, or (at your option) any later version.
00015 //
00016 // This library is distributed in the hope that it will be useful, but
00017 // WITHOUT ANY WARRANTY; without even the implied warranty of
00018 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00019 // Lesser General Public License for more details.
00020 //
00021 // You should have received a copy of the GNU Lesser General Public
00022 // License along with this library; if not, write to the Free Software
00023 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
00024 // USA
00025 // Questions? Contact Kevin Long (krlong@sandia.gov),
00026 // Sandia National Laboratories, Livermore, California, USA
00027 //
00028 // ************************************************************************
00029 /* @HEADER@ */
00030 
00031 
00032 /*
00033  * SundancePeanoMesher2D.h
00034  *
00035  *  Created on: Sep 16, 2009
00036  *      Author: benk
00037  */
00038 
00039 #ifndef SUNDANCE_PEANOMESHER2D_H_
00040 #define SUNDANCE_PEANOMESHER2D_H_
00041 
00042 #include "SundanceDefs.hpp"
00043 #include "SundanceMeshSourceBase.hpp"
00044 #include "SundancePeanoMesh2D.hpp"
00045 
00046 
00047 namespace Sundance
00048 {
00049 class PeanoMesher2D : public MeshSourceBase
00050   {
00051   public:
00052     /**
00053      * Set up meshing, for the Peano mesh
00054      * position_x
00055      * position_y
00056      * offset_x
00057      * offset_y
00058      * resolution,
00059      */
00060   PeanoMesher2D(double position_x, double position_y,
00061                         double offset_x , double offset_y,
00062                         double resolution,
00063                         const MeshType& meshType,
00064                         const MPIComm& comm = MPIComm::world())
00065       :
00066     MeshSourceBase(meshType, 0, comm),
00067       _position_x(position_x), _position_y(position_y),
00068       _offset_x(offset_x), _offset_y(offset_y),
00069       _resolution(resolution) {;}
00070 
00071 
00072     /** Create a rectangle mesher from a ParameterList */
00073   PeanoMesher2D(const ParameterList& params);
00074 
00075     /** */
00076     virtual ~PeanoMesher2D() {;}
00077 
00078     /** Print a short descriptive std::string */
00079     virtual std::string description() const
00080     {return "SundancePeanoMesher[pos x =" + Teuchos::toString(_position_x)
00081        + ", pos y=" + Teuchos::toString(_position_y)
00082        + ", offset x=" + Teuchos::toString(_offset_x) +
00083        + ", offset y=" + Teuchos::toString(_offset_y)
00084        + ", resolution=" + Teuchos::toString(_resolution)+ "]";}
00085 
00086 
00087     /** Return a ref count pointer to self */
00088     virtual RCP<MeshSourceBase> getRcp() {return rcp(this);}
00089 
00090 
00091   protected:
00092 
00093     /** The method which all Mesher should have */
00094     virtual Mesh fillMesh() const ;
00095 
00096   private:
00097 
00098     /** The X coordinate of the origin point (lower left)*/
00099     double _position_x;
00100     /** The Y coordinate of the origin point (lower left)*/
00101     double _position_y;
00102     /** The offset (length) of the grid in the X direction*/
00103     double _offset_x;
00104     /** The offset (length) of the grid in the Y direction*/
00105     double _offset_y;
00106     /** The resolution in each dimension, since we do not want to have stretched elements*/
00107     double _resolution;
00108 
00109   };
00110 }
00111 #endif /* SUNDANCE_PEANOMESHER2D_H_ */

Site Contact