/[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 2487 by jfenwick, Tue Jun 23 04:26:07 2009 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         If compiled for MPI then execute an MPI_Barrier, else do nothing
146      */
147    
148      FINLEY_DLL_API
149      virtual void MPIBarrier() const;
150    
151      /**
152         \brief
153         Return true if on MPI processor 0, else false
154      */
155    
156      FINLEY_DLL_API
157      virtual bool onMasterProcessor() const;
158    
159      /**
160         \brief
161       return this as an AbstractContinuousDomain.       return this as an AbstractContinuousDomain.
162    */    */
163    inline const AbstractContinuousDomain& asAbstractContinuousDomain() const    inline const AbstractContinuousDomain& asAbstractContinuousDomain() const
# Line 149  class MeshAdapter : public escript::Abst Line 184  class MeshAdapter : public escript::Abst
184    
185    /**    /**
186       \brief       \brief
187         Write the current mesh to a file with the given name.
188         \param fileName Input - The name of the file to write to.
189      */
190      FINLEY_DLL_API
191      void Print_Mesh_Info(const bool) const;
192    
193      /**
194         \brief
195         dumps the mesh to a file with the given name.
196         \param fileName Input - The name of the file
197      */
198      FINLEY_DLL_API
199      void dump(const std::string& fileName) const;
200    
201      /**
202         \brief
203       return the pointer to the underlying finley mesh structure       return the pointer to the underlying finley mesh structure
204    */    */
205    FINLEY_DLL_API    FINLEY_DLL_API
# Line 169  class MeshAdapter : public escript::Abst Line 220  class MeshAdapter : public escript::Abst
220       \param functionSpaceType Input - The function space type.       \param functionSpaceType Input - The function space type.
221    */    */
222    FINLEY_DLL_API    FINLEY_DLL_API
223    int* borrowSampleReferenceIDs(int functionSpaceType) const;    const int* borrowSampleReferenceIDs(int functionSpaceType) const;
224    
225    /**    /**
226       \brief       \brief
# Line 209  class MeshAdapter : public escript::Abst Line 260  class MeshAdapter : public escript::Abst
260    
261    /**    /**
262       \brief       \brief
263         Return a continuous on reduced order nodes FunctionSpace code
264      */
265      FINLEY_DLL_API
266      virtual int getReducedContinuousFunctionCode() const;
267    
268      /**
269         \brief
270       Return a function FunctionSpace code       Return a function FunctionSpace code
271    */    */
272    FINLEY_DLL_API    FINLEY_DLL_API
# Line 298  class MeshAdapter : public escript::Abst Line 356  class MeshAdapter : public escript::Abst
356    
357    /**    /**
358       \brief       \brief
359         Return the number of data points summed across all MPI processes
360      */
361      FINLEY_DLL_API
362      virtual int getNumDataPointsGlobal() const;
363    
364      /**
365         \brief
366       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.
367       \param functionSpaceCode Input -       \param functionSpaceCode Input -
368    */    */
# Line 404  class MeshAdapter : public escript::Abst Line 469  class MeshAdapter : public escript::Abst
469    
470    /**    /**
471       \brief       \brief
472       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,
473       and symmetric matrix is used.       and symmetric matrix is used.
474         \param precondioner
475       \param solver       \param solver
476       \param symmetry       \param symmetry
477    */    */
478    FINLEY_DLL_API    FINLEY_DLL_API
479    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;
480    
481      /**
482         \brief
483         return the identifier of the transport problem type to be used when a particular solver, perconditioner, package
484         and symmetric matrix is used.
485         \param precondioner
486         \param solver
487         \param symmetry
488      */
489      FINLEY_DLL_API
490      virtual int getTransportTypeId(const int solver, const int preconditioner, const int package, const bool symmetry) const;
491    
492    /**    /**
493       \brief       \brief
# Line 437  class MeshAdapter : public escript::Abst Line 514  class MeshAdapter : public escript::Abst
514       This has to be implemented by the actual Domain adapter.       This has to be implemented by the actual Domain adapter.
515    */    */
516    FINLEY_DLL_API    FINLEY_DLL_API
517    virtual void saveVTK(const std::string& filename,const boost::python::dict& arg) const;    virtual void saveVTK(const std::string& filename,const boost::python::dict& arg,  const std::string& metadata, const std::string& metadata_schema) const;
518    
519    /**    /**
520       \brief       \brief
# Line 457  class MeshAdapter : public escript::Abst Line 534  class MeshAdapter : public escript::Abst
534                       const escript::Data& D, const escript::Data& X, const escript::Data& Y,                       const escript::Data& D, const escript::Data& X, const escript::Data& Y,
535                       const escript::Data& d, const escript::Data& y,                       const escript::Data& d, const escript::Data& y,
536                       const escript::Data& d_contact, const escript::Data& y_contact) const;                       const escript::Data& d_contact, const escript::Data& y_contact) const;
537      /**
538         \brief
539         adds a PDE onto the lumped stiffness matrix matrix
540      */
541      FINLEY_DLL_API
542      virtual void addPDEToLumpedSystem(
543                         escript::Data& mat,
544                         const escript::Data& D,
545                         const escript::Data& d) const;
546    
547    /**    /**
548       \brief       \brief
# Line 466  class MeshAdapter : public escript::Abst Line 552  class MeshAdapter : public escript::Abst
552    virtual void addPDEToRHS(escript::Data& rhs,    virtual void addPDEToRHS(escript::Data& rhs,
553                       const escript::Data& X, const escript::Data& Y,                       const escript::Data& X, const escript::Data& Y,
554                       const escript::Data& y, const escript::Data& y_contact) const;                       const escript::Data& y, const escript::Data& y_contact) const;
555      /**
556         \brief
557         adds a PDE onto a transport problem
558      */
559    
560      FINLEY_DLL_API
561      virtual void addPDEToTransportProblem(
562                         TransportProblemAdapter& tp, escript::Data& source,
563                         const escript::Data& M,
564                         const escript::Data& A, const escript::Data& B, const escript::Data& C,const  escript::Data& D,
565                         const  escript::Data& X,const  escript::Data& Y,
566                         const escript::Data& d, const escript::Data& y,
567                         const escript::Data& d_contact,const escript::Data& y_contact) const;
568    
569    
570    /**    /**
571       \brief       \brief
572      creates a SystemMatrixAdapter stiffness matrix an initializes it with zeros:      creates a SystemMatrixAdapter stiffness matrix and initializes it with zeros:
573    */    */
574    FINLEY_DLL_API    FINLEY_DLL_API
575    SystemMatrixAdapter newSystemMatrix(    SystemMatrixAdapter newSystemMatrix(
# Line 478  class MeshAdapter : public escript::Abst Line 578  class MeshAdapter : public escript::Abst
578                        const int column_blocksize,                        const int column_blocksize,
579                        const escript::FunctionSpace& column_functionspace,                        const escript::FunctionSpace& column_functionspace,
580                        const int type) const;                        const int type) const;
581      /**
582       \brief
583        creates a TransportProblemAdapter
584    
585      */
586    
587      FINLEY_DLL_API
588      TransportProblemAdapter newTransportProblem(
589                          const double theta,
590                          const int blocksize,
591                          const escript::FunctionSpace& functionspace,
592                          const int type) const;
593    
594    /**    /**
595       \brief returns locations in the FEM nodes       \brief returns locations in the FEM nodes
# Line 513  class MeshAdapter : public escript::Abst Line 625  class MeshAdapter : public escript::Abst
625    FINLEY_DLL_API    FINLEY_DLL_API
626    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;
627    
628      /**
629          \brief
630              return the number of tags in use and a pointer to an array with the number of tags in use
631      */
632      FINLEY_DLL_API
633      virtual int getNumberOfTagsInUse(int functionSpaceCode) const;
634    
635      FINLEY_DLL_API
636      virtual const int* borrowListOfTagsInUse(int functionSpaceCode) const;
637    
638    
639      /**
640         \brief Checks if this domain allows tags for the specified functionSpaceCode.
641      */
642      FINLEY_DLL_API
643      virtual
644      bool canTag(int functionSpaceCode) const;
645    
646    
647   protected:   protected:
648    
649   private:   private:
650      void extractArgsFromDict(const boost::python::dict& arg, int& numData,
651                                 char**& names, escriptDataC*& data,
652                                 escriptDataC**& dataPtr) const;
653    
654    //    //
655    // pointer to the externally created finley mesh    // pointer to the externally created finley mesh

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

  ViewVC Help
Powered by ViewVC 1.1.26