⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 constantfunction.cpp

📁 利用C
💻 CPP
字号:
// Copyright (C) 2006-2008 Anders Logg.// Licensed under the GNU LGPL Version 2.1.//// First added:  2006-02-09// Last changed: 2008-03-11#include <dolfin/log/dolfin_log.h>#include <dolfin/mesh/Mesh.h>#include "ConstantFunction.h"using namespace dolfin;//-----------------------------------------------------------------------------ConstantFunction::ConstantFunction(Mesh& mesh, real value)  : GenericFunction(mesh), ufc::function(), value(value), size(0){  // Do nothing}//-----------------------------------------------------------------------------ConstantFunction::~ConstantFunction(){  // Do nothing}//-----------------------------------------------------------------------------dolfin::uint ConstantFunction::rank() const{  // Just return 0 for now (might extend to vectors later)  return 0;}//-----------------------------------------------------------------------------dolfin::uint ConstantFunction::dim(uint i) const{  // Just return 1 for now (might extend to vectors later)  return 1;}//-----------------------------------------------------------------------------void ConstantFunction::interpolate(real* values) const{  dolfin_assert(values);  // Check size  if (size == 0)    error("Size (number of components) of constant function unknown, unable to interpolate.");  // Set all vertex values to the constant value  const uint num_values = size*mesh.numVertices();  for (uint i = 0; i < num_values; i++)    values[i] = value;}//-----------------------------------------------------------------------------void ConstantFunction::interpolate(real* coefficients,                                   const ufc::cell& cell,                                   const ufc::finite_element& finite_element) const{  dolfin_assert(coefficients);  // Compute size of value (number of entries in tensor value)  size = 1;  for (uint i = 0; i < finite_element.value_rank(); i++)    size *= finite_element.value_dimension(i);  // Evaluate each dof to get coefficients for nodal basis expansion  for (uint i = 0; i < finite_element.space_dimension(); i++)    coefficients[i] = finite_element.evaluate_dof(i, *this, cell);}//-----------------------------------------------------------------------------void ConstantFunction::eval(real* values, const real* x) const{  dolfin_assert(values);  dolfin_assert(x);  // Check size  if (size == 0)    error("Size (number of components) of constant function unknown, unable to evaluate.");  // Set all values to the constant value  for (uint i = 0; i < size; i++)    values[i] = value;}//-----------------------------------------------------------------------------void ConstantFunction::evaluate(real* values,                                const real* coordinates,                                const ufc::cell& cell) const{  // Call eval(), cell ignored  eval(values, coordinates);}//-----------------------------------------------------------------------------

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -