/[escript]/branches/diaplayground/finley/src/CPPAdapter/MeshAdapter.cpp
ViewVC logotype

Diff of /branches/diaplayground/finley/src/CPPAdapter/MeshAdapter.cpp

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

revision 3259 by jfenwick, Mon Oct 11 01:48:14 2010 UTC revision 3269 by jfenwick, Wed Oct 13 03:21:50 2010 UTC
# Line 770  pair<int,int> MeshAdapter::getDataShape( Line 770  pair<int,int> MeshAdapter::getDataShape(
770  // 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:
771  //  //
772  void MeshAdapter::addPDEToSystem(  void MeshAdapter::addPDEToSystem(
773                                   SystemMatrixAdapter& mat, escript::Data& rhs,                                   AbstractSystemMatrix& mat, escript::Data& rhs,
774                                   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,
775                                   const escript::Data& d, const escript::Data& y,                                   const escript::Data& d, const escript::Data& y,
776                                   const escript::Data& d_contact,const escript::Data& y_contact) const                                   const escript::Data& d_contact,const escript::Data& y_contact) const
777  {  {
778       SystemMatrixAdapter* smat=dynamic_cast<SystemMatrixAdapter*>(&mat);
779       if (smat==0)
780       {
781        throw FinleyAdapterException("finley only supports its own system matrices.");
782       }
783     escriptDataC _rhs=rhs.getDataC();     escriptDataC _rhs=rhs.getDataC();
784     escriptDataC _A  =A.getDataC();     escriptDataC _A  =A.getDataC();
785     escriptDataC _B=B.getDataC();     escriptDataC _B=B.getDataC();
# Line 789  void MeshAdapter::addPDEToSystem( Line 794  void MeshAdapter::addPDEToSystem(
794    
795     Finley_Mesh* mesh=m_finleyMesh.get();     Finley_Mesh* mesh=m_finleyMesh.get();
796    
797     Finley_Assemble_PDE(mesh->Nodes,mesh->Elements,mat.getPaso_SystemMatrix(), &_rhs, &_A, &_B, &_C, &_D, &_X, &_Y );     Finley_Assemble_PDE(mesh->Nodes,mesh->Elements,smat->getPaso_SystemMatrix(), &_rhs, &_A, &_B, &_C, &_D, &_X, &_Y );
798     checkFinleyError();     checkFinleyError();
799    
800     Finley_Assemble_PDE(mesh->Nodes,mesh->FaceElements, mat.getPaso_SystemMatrix(), &_rhs, 0, 0, 0, &_d, 0, &_y );     Finley_Assemble_PDE(mesh->Nodes,mesh->FaceElements, smat->getPaso_SystemMatrix(), &_rhs, 0, 0, 0, &_d, 0, &_y );
801     checkFinleyError();     checkFinleyError();
802    
803     Finley_Assemble_PDE(mesh->Nodes,mesh->ContactElements, mat.getPaso_SystemMatrix(), &_rhs , 0, 0, 0, &_d_contact, 0, &_y_contact );     Finley_Assemble_PDE(mesh->Nodes,mesh->ContactElements, smat->getPaso_SystemMatrix(), &_rhs , 0, 0, 0, &_d_contact, 0, &_y_contact );
804     checkFinleyError();     checkFinleyError();
805  }  }
806    
# Line 845  void MeshAdapter::addPDEToRHS( escript:: Line 850  void MeshAdapter::addPDEToRHS( escript::
850  // adds PDE of second order into a transport problem  // adds PDE of second order into a transport problem
851  //  //
852  void MeshAdapter::addPDEToTransportProblem(  void MeshAdapter::addPDEToTransportProblem(
853                                             TransportProblemAdapter& tp, escript::Data& source, const escript::Data& M,                                             AbstractTransportProblem& tp, escript::Data& source, const escript::Data& M,
854                                             const escript::Data& A, const escript::Data& B, const escript::Data& C,                                             const escript::Data& A, const escript::Data& B, const escript::Data& C,
855                                             const  escript::Data& D,const  escript::Data& X,const  escript::Data& Y,                                             const  escript::Data& D,const  escript::Data& X,const  escript::Data& Y,
856                                             const escript::Data& d, const escript::Data& y,                                             const escript::Data& d, const escript::Data& y,
857                                             const escript::Data& d_contact,const escript::Data& y_contact) const                                             const escript::Data& d_contact,const escript::Data& y_contact) const
858  {  {
859       TransportProblemAdapter* tpa=dynamic_cast<TransportProblemAdapter*>(&tp);
860       if (tpa==0)
861       {
862        throw FinleyAdapterException("finley only supports its own transport problems.");
863       }
864    
865    
866     DataTypes::ShapeType shape;     DataTypes::ShapeType shape;
867     source.expand();     source.expand();
868     escriptDataC _source=source.getDataC();     escriptDataC _source=source.getDataC();
# Line 867  void MeshAdapter::addPDEToTransportProbl Line 879  void MeshAdapter::addPDEToTransportProbl
879     escriptDataC _y_contact=y_contact.getDataC();     escriptDataC _y_contact=y_contact.getDataC();
880    
881     Finley_Mesh* mesh=m_finleyMesh.get();     Finley_Mesh* mesh=m_finleyMesh.get();
882     Paso_TransportProblem* _tp = tp.getPaso_TransportProblem();     Paso_TransportProblem* _tp = tpa->getPaso_TransportProblem();
883    
884     Finley_Assemble_PDE(mesh->Nodes,mesh->Elements,_tp->mass_matrix, &_source, 0, 0, 0, &_M, 0, 0 );     Finley_Assemble_PDE(mesh->Nodes,mesh->Elements,_tp->mass_matrix, &_source, 0, 0, 0, &_M, 0, 0 );
885     checkFinleyError();     checkFinleyError();

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

  ViewVC Help
Powered by ViewVC 1.1.26