17 #if !defined dudley_MeshAdapter_20040526_H
18 #define dudley_MeshAdapter_20040526_H
21 #include "dudley/Mesh.h"
22 #include "dudley/Dudley.h"
23 #include "dudley/Assemble.h"
24 #include "esysUtils/Esys_MPI.h"
29 #include <pasowrap/SystemMatrixAdapter.h>
30 #include <pasowrap/TransportProblemAdapter.h>
31 #include "escript/AbstractContinuousDomain.h"
32 #include "escript/FunctionSpace.h"
33 #include "escript/FunctionSpaceFactory.h"
35 #include <boost/shared_ptr.hpp>
36 #include <boost/python/dict.hpp>
37 #include <boost/python/extract.hpp>
64 class MeshAdapter :
public escript::AbstractContinuousDomain {
166 void write(
const std::string& fileName)
const;
181 void dump(
const std::string& fileName)
const;
337 virtual int getDim()
const;
364 virtual std::pair<int,int>
getDataShape(
int functionSpaceCode)
const;
372 virtual void setToX(escript::Data& arg)
const;
381 virtual void setTagMap(
const std::string& name,
int tag);
389 virtual int getTag(
const std::string& name)
const;
411 virtual void setNewX(
const escript::Data& arg);
442 virtual void interpolateACross(escript::Data& target,
const escript::Data& source)
const;
449 virtual bool probeInterpolationACross(
int functionSpaceType_source,
const escript::AbstractDomain& targetDomain,
int functionSpaceType_target)
const;
457 virtual void setToNormal(escript::Data& out)
const;
465 virtual void setToSize(escript::Data& out)
const;
473 virtual void setToGradient(escript::Data& grad,
const escript::Data& arg)
const;
481 virtual void setToIntegrals(std::vector<double>& integrals,
const escript::Data& arg)
const;
493 virtual int getSystemMatrixTypeId(
const int solver,
const int preconditioner,
const int package,
const bool symmetry)
const;
505 virtual int getTransportTypeId(
const int solver,
const int preconditioner,
const int package,
const bool symmetry)
const;
524 escript::AbstractSystemMatrix& mat, escript::Data& rhs,
525 const escript::Data& A,
const escript::Data& B,
const escript::Data& C,
526 const escript::Data& D,
const escript::Data& X,
const escript::Data& Y,
527 const escript::Data& d,
const escript::Data& y,
528 const escript::Data& d_contact,
const escript::Data& y_contact,
529 const escript::Data& d_dirac,
const escript::Data& y_dirac)
const;
539 const escript::Data& D,
540 const escript::Data& d,
541 const escript::Data& d_dirac,
542 const bool useHRZ)
const;
550 const escript::Data& X,
const escript::Data& Y,
551 const escript::Data& y,
const escript::Data& y_contact,
const escript::Data& y_dirac)
const;
559 escript::AbstractTransportProblem& tp, escript::Data& source,
560 const escript::Data&
M,
561 const escript::Data& A,
const escript::Data& B,
const escript::Data& C,
const escript::Data& D,
562 const escript::Data& X,
const escript::Data& Y,
563 const escript::Data& d,
const escript::Data& y,
564 const escript::Data& d_contact,
const escript::Data& y_contact,
565 const escript::Data& d_dirac,
const escript::Data& y_dirac)
const;
574 const int row_blocksize,
575 const escript::FunctionSpace& row_functionspace,
576 const int column_blocksize,
577 const escript::FunctionSpace& column_functionspace,
578 const int type)
const;
588 const escript::FunctionSpace& functionspace,
589 const int type)
const;
595 virtual escript::Data
getX()
const;
607 virtual escript::Data
getSize()
const;
613 virtual bool operator==(
const escript::AbstractDomain& other)
const;
615 virtual bool operator!=(
const escript::AbstractDomain& other)
const;
623 virtual void setTags(
const int functionSpaceType,
const int newTag,
const escript::Data& mask)
const;
641 bool canTag(
int functionSpaceCode)
const;
658 char**& names, escriptDataC*& data,
659 escriptDataC**& dataPtr)
const;