/[escript]/trunk/dudley/src/CPPAdapter/MeshAdapter.cpp
ViewVC logotype

Diff of /trunk/dudley/src/CPPAdapter/MeshAdapter.cpp

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

revision 3268 by jfenwick, Mon Oct 11 01:48:14 2010 UTC revision 3269 by jfenwick, Wed Oct 13 03:21:50 2010 UTC
# Line 681  pair<int,int> MeshAdapter::getDataShape( Line 681  pair<int,int> MeshAdapter::getDataShape(
681  // adds linear PDE of second order into a given stiffness matrix and right hand side:  // adds linear PDE of second order into a given stiffness matrix and right hand side:
682  //  //
683  void MeshAdapter::addPDEToSystem(  void MeshAdapter::addPDEToSystem(
684                                   SystemMatrixAdapter& mat, escript::Data& rhs,                                   AbstractSystemMatrix& mat, escript::Data& rhs,
685                                   const escript::Data& A, const escript::Data& B, const escript::Data& C,const  escript::Data& D,const  escript::Data& X,const  escript::Data& Y,                                   const escript::Data& A, const escript::Data& B, const escript::Data& C,const  escript::Data& D,const  escript::Data& X,const  escript::Data& Y,
686                                   const escript::Data& d, const escript::Data& y) const                                   const escript::Data& d, const escript::Data& y,
687                     const escript::Data& d_contact, const escript::Data& y_contact) const
688  {  {
689        if (!d_contact.isEmpty())
690        {
691        throw DudleyAdapterException("Dudley does not support d_contact");
692        }
693        if (!y_contact.isEmpty())
694        {
695        throw DudleyAdapterException("Dudley does not support y_contact");
696        }
697       SystemMatrixAdapter* smat=dynamic_cast<SystemMatrixAdapter*>(&mat);
698       if (smat==0)
699       {
700        throw DudleyAdapterException("Dudley only accepts its own system matrices");
701       }
702     escriptDataC _rhs=rhs.getDataC();     escriptDataC _rhs=rhs.getDataC();
703     escriptDataC _A  =A.getDataC();     escriptDataC _A  =A.getDataC();
704     escriptDataC _B=B.getDataC();     escriptDataC _B=B.getDataC();
# Line 697  void MeshAdapter::addPDEToSystem( Line 711  void MeshAdapter::addPDEToSystem(
711    
712     Dudley_Mesh* mesh=m_dudleyMesh.get();     Dudley_Mesh* mesh=m_dudleyMesh.get();
713    
714     Dudley_Assemble_PDE(mesh->Nodes,mesh->Elements,mat.getPaso_SystemMatrix(), &_rhs, &_A, &_B, &_C, &_D, &_X, &_Y );     Dudley_Assemble_PDE(mesh->Nodes,mesh->Elements,smat->getPaso_SystemMatrix(), &_rhs, &_A, &_B, &_C, &_D, &_X, &_Y );
715     checkDudleyError();     checkDudleyError();
716    
717    
718     Dudley_Assemble_PDE(mesh->Nodes,mesh->FaceElements, mat.getPaso_SystemMatrix(), &_rhs, 0, 0, 0, &_d, 0, &_y );     Dudley_Assemble_PDE(mesh->Nodes,mesh->FaceElements, smat->getPaso_SystemMatrix(), &_rhs, 0, 0, 0, &_d, 0, &_y );
719     checkDudleyError();     checkDudleyError();
720    
721    
# Line 731  void  MeshAdapter::addPDEToLumpedSystem( Line 745  void  MeshAdapter::addPDEToLumpedSystem(
745  //  //
746  // adds linear PDE of second order into the right hand side only  // adds linear PDE of second order into the right hand side only
747  //  //
748  void MeshAdapter::addPDEToRHS( escript::Data& rhs, const  escript::Data& X,const  escript::Data& Y, const escript::Data& y) const  void MeshAdapter::addPDEToRHS( escript::Data& rhs, const  escript::Data& X,const  escript::Data& Y, const escript::Data& y, const escript::Data& y_contact) const
749  {  {
750       if (!y_contact.isEmpty())
751       {
752        throw DudleyAdapterException("Dudley does not support y_contact");
753       }
754     Dudley_Mesh* mesh=m_dudleyMesh.get();     Dudley_Mesh* mesh=m_dudleyMesh.get();
755    
756     escriptDataC _rhs=rhs.getDataC();     escriptDataC _rhs=rhs.getDataC();
# Line 752  void MeshAdapter::addPDEToRHS( escript:: Line 770  void MeshAdapter::addPDEToRHS( escript::
770  // adds PDE of second order into a transport problem  // adds PDE of second order into a transport problem
771  //  //
772  void MeshAdapter::addPDEToTransportProblem(  void MeshAdapter::addPDEToTransportProblem(
773                                             TransportProblemAdapter& tp, escript::Data& source, const escript::Data& M,                                             AbstractTransportProblem& tp, escript::Data& source, const escript::Data& M,
774                                             const escript::Data& A, const escript::Data& B, const escript::Data& C,                                             const escript::Data& A, const escript::Data& B, const escript::Data& C,
775                                             const  escript::Data& D,const  escript::Data& X,const  escript::Data& Y,                                             const  escript::Data& D,const  escript::Data& X,const  escript::Data& Y,
776                                             const escript::Data& d, const escript::Data& y,                                             const escript::Data& d, const escript::Data& y,
777                                             const escript::Data& d_contact,const escript::Data& y_contact) const                      const escript::Data& d_contact,const escript::Data& y_contact) const
778  {  {
779        if (!d_contact.isEmpty())
780        {
781        throw DudleyAdapterException("Dudley does not support d_contact");
782        }
783        if (!y_contact.isEmpty())
784        {
785        throw DudleyAdapterException("Dudley does not support y_contact");
786        }  
787       TransportProblemAdapter* tpa=dynamic_cast<TransportProblemAdapter*>(&tp);
788       if (tpa==0)
789       {
790        throw DudleyAdapterException("Dudley only accepts its own Transportproblems");
791       }
792     DataTypes::ShapeType shape;     DataTypes::ShapeType shape;
793     source.expand();     source.expand();
794     escriptDataC _source=source.getDataC();     escriptDataC _source=source.getDataC();
# Line 774  void MeshAdapter::addPDEToTransportProbl Line 805  void MeshAdapter::addPDEToTransportProbl
805     escriptDataC _y_contact=y_contact.getDataC();     escriptDataC _y_contact=y_contact.getDataC();
806    
807     Dudley_Mesh* mesh=m_dudleyMesh.get();     Dudley_Mesh* mesh=m_dudleyMesh.get();
808     Paso_TransportProblem* _tp = tp.getPaso_TransportProblem();     Paso_TransportProblem* _tp = tpa->getPaso_TransportProblem();
809    
810     Dudley_Assemble_PDE(mesh->Nodes,mesh->Elements,_tp->mass_matrix, &_source, 0, 0, 0, &_M, 0, 0 );     Dudley_Assemble_PDE(mesh->Nodes,mesh->Elements,_tp->mass_matrix, &_source, 0, 0, 0, &_M, 0, 0 );
811     checkDudleyError();     checkDudleyError();

Legend:
Removed from v.3268  
changed lines
  Added in v.3269

  ViewVC Help
Powered by ViewVC 1.1.26