• Main Page
  • Related Pages
  • Namespaces
  • Classes
  • Files
  • File List
  • File Members

PHAL_GatherAuxData_Def.hpp

Go to the documentation of this file.
00001 //*****************************************************************//
00002 //    Albany 2.0:  Copyright 2012 Sandia Corporation               //
00003 //    This Software is released under the BSD license detailed     //
00004 //    in the file "license.txt" in the top-level Albany directory  //
00005 //*****************************************************************//
00006 
00007 #include <vector>
00008 #include <string>
00009 
00010 #include "Teuchos_TestForException.hpp"
00011 #include "Phalanx_DataLayout.hpp"
00012 
00013 namespace PHAL {
00014 
00015 
00016 template<typename EvalT, typename Traits>
00017 GatherAuxData<EvalT,Traits>::
00018 GatherAuxData(const Teuchos::ParameterList& p,
00019                    const Teuchos::RCP<Albany::Layouts>& dl)
00020 { 
00021   
00022   
00023   std::string field_name = p.get<std::string>("Field Name"); 
00024   auxDataIndex = p.get<int>("Aux Data Vector Index");
00025 
00026   PHX::MDField<ScalarT,Cell,Node> f(field_name ,dl->node_scalar);
00027   vector_data = f;
00028   this->addEvaluatedField(vector_data);
00029 
00030   char buf[200];
00031   sprintf(buf, "Gather Aux Data %d to %s", (int)auxDataIndex, field_name.c_str());
00032   this->setName(buf + PHX::TypeString<EvalT>::value);
00033 }
00034 
00035 // **********************************************************************
00036 template<typename EvalT, typename Traits>
00037 void GatherAuxData<EvalT,Traits>::
00038 postRegistrationSetup(typename Traits::SetupData d,
00039                       PHX::FieldManager<Traits>& fm)
00040 {
00041   this->utils.setFieldData(vector_data,fm);
00042   numNodes = vector_data.dimension(1);
00043 }
00044 
00045 // **********************************************************************
00046 
00047 template<typename EvalT, typename Traits>
00048 void GatherAuxData<EvalT,Traits>::
00049 evaluateFields(typename Traits::EvalData workset)
00050 { 
00051   const Epetra_Vector& v = *((*(workset.auxDataPtr))(auxDataIndex));
00052 
00053   for (std::size_t cell=0; cell < workset.numCells; ++cell ) {
00054     const Teuchos::ArrayRCP<Teuchos::ArrayRCP<int> >& nodeID = workset.wsElNodeEqID[cell];
00055     
00056     for(std::size_t node =0; node < this->numNodes; ++node) {
00057       int offsetIntoVec = nodeID[node][0]; // neq==1 hardwired
00058       this->vector_data(cell,node) = v[offsetIntoVec];
00059     }
00060   }
00061 
00062 }
00063 
00064 // **********************************************************************
00065 
00066 }

Generated on Wed Mar 26 2014 18:36:41 for Albany: a Trilinos-based PDE code by  doxygen 1.7.1