/[escript]/trunk/finley/src/CPPAdapter/MeshAdapter.h
ViewVC logotype

Diff of /trunk/finley/src/CPPAdapter/MeshAdapter.h

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1059 by gross, Fri Mar 23 11:01:53 2007 UTC revision 1859 by gross, Wed Oct 8 03:03:37 2008 UTC
# Line 1  Line 1 
1  // $Id$  
2  /*  /*******************************************************
3   ************************************************************  *
4   *          Copyright 2006 by ACcESS MNRF                   *  * Copyright (c) 2003-2008 by University of Queensland
5   *                                                          *  * Earth Systems Science Computational Center (ESSCC)
6   *              http://www.access.edu.au                    *  * http://www.uq.edu.au/esscc
7   *       Primary Business: Queensland, Australia            *  *
8   *  Licensed under the Open Software License version 3.0    *  * Primary Business: Queensland, Australia
9   *     http://www.opensource.org/licenses/osl-3.0.php       *  * Licensed under the Open Software License version 3.0
10   *                                                          *  * http://www.opensource.org/licenses/osl-3.0.php
11   ************************************************************  *
12  */  *******************************************************/
13                                                                              
14    
15  #if !defined finley_MeshAdapter_20040526_H  #if !defined finley_MeshAdapter_20040526_H
16  #define finley_MeshAdapter_20040526_H  #define finley_MeshAdapter_20040526_H
17  #include "system_dep.h"  #include "system_dep.h"
# Line 20  extern "C" { Line 21  extern "C" {
21  #include "../Finley.h"  #include "../Finley.h"
22  #include "../Assemble.h"  #include "../Assemble.h"
23  #include "paso/SystemMatrix.h"  #include "paso/SystemMatrix.h"
24    #include "paso/SolverFCT.h"
25    #include "paso/Paso_MPI.h"
26  }  }
27    
28  #include "FinleyError.h"  #include "FinleyError.h"
29  #include "FinleyAdapterException.h"  #include "FinleyAdapterException.h"
30    
31  #include "SystemMatrixAdapter.h"  #include "SystemMatrixAdapter.h"
32    #include "TransportProblemAdapter.h"
33  #include "escript/AbstractContinuousDomain.h"  #include "escript/AbstractContinuousDomain.h"
34  #include "escript/FunctionSpace.h"  #include "escript/FunctionSpace.h"
35  #include "escript/FunctionSpaceFactory.h"  #include "escript/FunctionSpaceFactory.h"
# Line 74  class MeshAdapter : public escript::Abst Line 78  class MeshAdapter : public escript::Abst
78    static const int DegreesOfFreedom;    static const int DegreesOfFreedom;
79    static const int ReducedDegreesOfFreedom;    static const int ReducedDegreesOfFreedom;
80    static const int Nodes;    static const int Nodes;
81      static const int ReducedNodes;
82    static const int Elements;    static const int Elements;
83    static const int ReducedElements;    static const int ReducedElements;
84    static const int FaceElements;    static const int FaceElements;
# Line 90  class MeshAdapter : public escript::Abst Line 95  class MeshAdapter : public escript::Abst
95    
96       Description:       Description:
97       Constructor for MeshAdapter. The pointer passed to MeshAdapter       Constructor for MeshAdapter. The pointer passed to MeshAdapter
98       is deleted using a call to Finley_Mesh_deallocate in the       is deleted using a call to Finley_Mesh_free in the
99       MeshAdapter destructor.       MeshAdapter destructor.
100    
101       Throws:       Throws:
# Line 99  class MeshAdapter : public escript::Abst Line 104  class MeshAdapter : public escript::Abst
104       \param finleyMesh Input - A pointer to the externally constructed       \param finleyMesh Input - A pointer to the externally constructed
105                                 finley mesh.The pointer passed to MeshAdapter                                 finley mesh.The pointer passed to MeshAdapter
106                                 is deleted using a call to                                 is deleted using a call to
107                                 Finley_Mesh_deallocate in the MeshAdapter                                 Finley_Mesh_free in the MeshAdapter
108                                 destructor.                                 destructor.
109    */    */
110    FINLEY_DLL_API    FINLEY_DLL_API
# Line 115  class MeshAdapter : public escript::Abst Line 120  class MeshAdapter : public escript::Abst
120    /**    /**
121       \brief       \brief
122       Destructor for MeshAdapter. As specified in the constructor       Destructor for MeshAdapter. As specified in the constructor
123       this calls Finley_Mesh_deallocate for the pointer given to the       this calls Finley_Mesh_free for the pointer given to the
124       constructor.       constructor.
125    */    */
126    FINLEY_DLL_API    FINLEY_DLL_API
# Line 123  class MeshAdapter : public escript::Abst Line 128  class MeshAdapter : public escript::Abst
128    
129    /**    /**
130       \brief       \brief
131         return the number of processors used for this domain
132      */
133      FINLEY_DLL_API
134      virtual int getMPISize() const;
135      /**
136         \brief
137         return the number MPI rank of this processor
138      */
139    
140      FINLEY_DLL_API
141      virtual int getMPIRank() const;
142    
143      /**
144         \brief
145       return this as an AbstractContinuousDomain.       return this as an AbstractContinuousDomain.
146    */    */
147    inline const AbstractContinuousDomain& asAbstractContinuousDomain() const    inline const AbstractContinuousDomain& asAbstractContinuousDomain() const
# Line 149  class MeshAdapter : public escript::Abst Line 168  class MeshAdapter : public escript::Abst
168    
169    /**    /**
170       \brief       \brief
171         Write the current mesh to a file with the given name.
172         \param fileName Input - The name of the file to write to.
173      */
174      FINLEY_DLL_API
175      void Print_Mesh_Info(const bool) const;
176    
177      /**
178         \brief
179         dumps the mesh to a file with the given name.
180         \param fileName Input - The name of the file
181      */
182      FINLEY_DLL_API
183      void dump(const std::string& fileName) const;
184    
185      /**
186         \brief
187       return the pointer to the underlying finley mesh structure       return the pointer to the underlying finley mesh structure
188    */    */
189    FINLEY_DLL_API    FINLEY_DLL_API
# Line 209  class MeshAdapter : public escript::Abst Line 244  class MeshAdapter : public escript::Abst
244    
245    /**    /**
246       \brief       \brief
247         Return a continuous on reduced order nodes FunctionSpace code
248      */
249      FINLEY_DLL_API
250      virtual int getReducedContinuousFunctionCode() const;
251    
252      /**
253         \brief
254       Return a function FunctionSpace code       Return a function FunctionSpace code
255    */    */
256    FINLEY_DLL_API    FINLEY_DLL_API
# Line 298  class MeshAdapter : public escript::Abst Line 340  class MeshAdapter : public escript::Abst
340    
341    /**    /**
342       \brief       \brief
343         Return the number of data points summed across all MPI processes
344      */
345      FINLEY_DLL_API
346      virtual int getNumDataPointsGlobal() const;
347    
348      /**
349         \brief
350       Return the number of data points per sample, and the number of samples as a pair.       Return the number of data points per sample, and the number of samples as a pair.
351       \param functionSpaceCode Input -       \param functionSpaceCode Input -
352    */    */
# Line 404  class MeshAdapter : public escript::Abst Line 453  class MeshAdapter : public escript::Abst
453    
454    /**    /**
455       \brief       \brief
456       return the identifier of the matrix type to be used for the global stiffness matrix when a particular solver, package       return the identifier of the matrix type to be used for the global stiffness matrix when a particular solver, package, perconditioner,
457       and symmetric matrix is used.       and symmetric matrix is used.
458         \param precondioner
459       \param solver       \param solver
460       \param symmetry       \param symmetry
461    */    */
462    FINLEY_DLL_API    FINLEY_DLL_API
463    virtual int getSystemMatrixTypeId(const int solver, const int package, const bool symmetry) const;    virtual int getSystemMatrixTypeId(const int solver, const int preconditioner, const int package, const bool symmetry) const;
464    
465      /**
466         \brief
467         return the identifier of the transport problem type to be used when a particular solver, perconditioner, package
468         and symmetric matrix is used.
469         \param precondioner
470         \param solver
471         \param symmetry
472      */
473      FINLEY_DLL_API
474      virtual int getTransportTypeId(const int solver, const int preconditioner, const int package, const bool symmetry) const;
475    
476    /**    /**
477       \brief       \brief
# Line 457  class MeshAdapter : public escript::Abst Line 518  class MeshAdapter : public escript::Abst
518                       const escript::Data& D, const escript::Data& X, const escript::Data& Y,                       const escript::Data& D, const escript::Data& X, const escript::Data& Y,
519                       const escript::Data& d, const escript::Data& y,                       const escript::Data& d, const escript::Data& y,
520                       const escript::Data& d_contact, const escript::Data& y_contact) const;                       const escript::Data& d_contact, const escript::Data& y_contact) const;
521      /**
522         \brief
523         adds a PDE onto the lumped stiffness matrix matrix
524      */
525      FINLEY_DLL_API
526      virtual void addPDEToLumpedSystem(
527                         escript::Data& mat,
528                         const escript::Data& D,
529                         const escript::Data& d) const;
530    
531    /**    /**
532       \brief       \brief
# Line 466  class MeshAdapter : public escript::Abst Line 536  class MeshAdapter : public escript::Abst
536    virtual void addPDEToRHS(escript::Data& rhs,    virtual void addPDEToRHS(escript::Data& rhs,
537                       const escript::Data& X, const escript::Data& Y,                       const escript::Data& X, const escript::Data& Y,
538                       const escript::Data& y, const escript::Data& y_contact) const;                       const escript::Data& y, const escript::Data& y_contact) const;
539      /**
540         \brief
541         adds a PDE onto a transport problem
542      */
543    
544      FINLEY_DLL_API
545      virtual void addPDEToTransportProblem(
546                         TransportProblemAdapter& tp, escript::Data& source,
547                         const escript::Data& M,
548                         const escript::Data& A, const escript::Data& B, const escript::Data& C,const  escript::Data& D,
549                         const  escript::Data& X,const  escript::Data& Y,
550                         const escript::Data& d, const escript::Data& y,
551                         const escript::Data& d_contact,const escript::Data& y_contact) const;
552    
553    
554    /**    /**
555       \brief       \brief
556      creates a SystemMatrixAdapter stiffness matrix an initializes it with zeros:      creates a SystemMatrixAdapter stiffness matrix and initializes it with zeros:
557    */    */
558    FINLEY_DLL_API    FINLEY_DLL_API
559    SystemMatrixAdapter newSystemMatrix(    SystemMatrixAdapter newSystemMatrix(
# Line 478  class MeshAdapter : public escript::Abst Line 562  class MeshAdapter : public escript::Abst
562                        const int column_blocksize,                        const int column_blocksize,
563                        const escript::FunctionSpace& column_functionspace,                        const escript::FunctionSpace& column_functionspace,
564                        const int type) const;                        const int type) const;
565      /**
566       \brief
567        creates a TransportProblemAdapter
568    
569      */
570    
571      FINLEY_DLL_API
572      TransportProblemAdapter newTransportProblem(
573                          const double theta,
574                          const int blocksize,
575                          const escript::FunctionSpace& functionspace,
576                          const int type) const;
577    
578    /**    /**
579       \brief returns locations in the FEM nodes       \brief returns locations in the FEM nodes
# Line 513  class MeshAdapter : public escript::Abst Line 609  class MeshAdapter : public escript::Abst
609    FINLEY_DLL_API    FINLEY_DLL_API
610    virtual void setTags(const int functionSpaceType, const int newTag, const escript::Data& mask) const;    virtual void setTags(const int functionSpaceType, const int newTag, const escript::Data& mask) const;
611    
612      /**
613          \brief
614              return the number of tags in use and a pointer to an array with the number of tags in use
615      */
616      FINLEY_DLL_API
617      virtual int getNumberOfTagsInUse(int functionSpaceCode) const;
618    
619      FINLEY_DLL_API
620      virtual int* borrowListOfTagsInUse(int functionSpaceCode) const;
621    
622    
623      /**
624         \brief Checks if this domain allows tags for the specified functionSpaceCode.
625      */
626      FINLEY_DLL_API
627      virtual
628      bool canTag(int functionSpaceCode) const;
629    
630    
631   protected:   protected:
632    
633   private:   private:

Legend:
Removed from v.1059  
changed lines
  Added in v.1859

  ViewVC Help
Powered by ViewVC 1.1.26