00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 template<typename EvalT, typename Traits>
00034 Fourier<EvalT, Traits>::
00035 Fourier(const Teuchos::ParameterList& p) :
00036 flux("Energy_Flux",
00037 p.get< Teuchos::RCP<PHX::DataLayout> >("Vector Data Layout")),
00038 density("Density",
00039 p.get< Teuchos::RCP<PHX::DataLayout> >("Scalar Data Layout")),
00040 dc("Heat Capacity",
00041 p.get< Teuchos::RCP<PHX::DataLayout> >("Scalar Data Layout") ),
00042 grad_temp("Temperature Gradient",
00043 p.get< Teuchos::RCP<PHX::DataLayout> >("Vector Data Layout") )
00044 {
00045 this->addEvaluatedField(flux);
00046 this->addDependentField(density);
00047 this->addDependentField(dc);
00048 this->addDependentField(grad_temp);
00049
00050 this->setName("Fourier");
00051 }
00052
00053
00054 template<typename EvalT, typename Traits>
00055 void Fourier<EvalT, Traits>::
00056 postRegistrationSetup(PHX::FieldManager<Traits>& fm)
00057 {
00058 this->utils.setFieldData(flux,fm);
00059 this->utils.setFieldData(density,fm);
00060 this->utils.setFieldData(dc,fm);
00061 this->utils.setFieldData(grad_temp,fm);
00062
00063 num_qp = flux.dimension(1);
00064 num_dim = flux.dimension(2);
00065 }
00066
00067
00068 template<typename EvalT, typename Traits>
00069 void Fourier<EvalT, Traits>::evaluateFields(typename Traits::EvalData d)
00070 {
00071 std::size_t num_cells = d.num_cells;
00072
00073 for (std::size_t cell = 0; cell < num_cells; ++cell)
00074 for (std::size_t qp = 0; qp < num_qp; ++qp)
00075 for (std::size_t dim = 0; dim < num_dim; ++dim)
00076 flux(cell,qp,dim) =
00077 - density(cell,qp) * dc(cell,qp) * grad_temp(cell,qp,dim);
00078 }
00079
00080