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", p.get< Teuchos::RCP<PHX::DataLayout> >("Data Layout")),
00037 density("Density", p.get< Teuchos::RCP<PHX::DataLayout> >("Data Layout")),
00038 dc("Heat Capacity", p.get< Teuchos::RCP<PHX::DataLayout> >("Data Layout") ),
00039 grad_temp("Temperature Gradient",
00040 p.get< Teuchos::RCP<PHX::DataLayout> >("Data Layout") )
00041 {
00042 this->addEvaluatedField(flux);
00043 this->addDependentField(density);
00044 this->addDependentField(dc);
00045 this->addDependentField(grad_temp);
00046
00047 this->setName("Fourier");
00048 }
00049
00050
00051 template<typename EvalT, typename Traits>
00052 void Fourier<EvalT, Traits>::
00053 postRegistrationSetup(PHX::FieldManager<Traits>& fm)
00054 {
00055 this->utils.setFieldData(flux,fm);
00056 this->utils.setFieldData(density,fm);
00057 this->utils.setFieldData(dc,fm);
00058 this->utils.setFieldData(grad_temp,fm);
00059
00060 data_layout_size = flux.fieldTag().dataLayout().size();
00061 }
00062
00063
00064 template<typename EvalT, typename Traits>
00065 void Fourier<EvalT, Traits>::evaluateFields(typename Traits::EvalData d)
00066 {
00067 std::size_t size = d.num_cells * data_layout_size;
00068
00069 for (std::size_t i = 0; i < size; ++i)
00070 flux[i] = - density[i] * dc[i] * grad_temp[i];
00071 }
00072
00073