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

📄 ellipticequation.h

📁 利用AFEPack包求解变二次系数的椭圆型方程.在求解这个问题的过程中
💻 H
字号:
/**
 * @file   EllipticEquation.h
 * @author 
 * @date   Wed Feb 21 11:45:03 2007
 *
 * @brief  类 EllipticEquation 的声明,附带的我们还声明了刚度矩阵的类
 *         型 Matrix。
 *
 */

#ifndef __EllipticEquation_h__
#define __EllipticEquation_h__

#include <AFEPack/AMGSolver.h>        /// 代数多重网格求解器
#include <AFEPack/TemplateElement.h>  /// 参考单元
#include <AFEPack/FEMSpace.h>         /// 有限元空间
#include <AFEPack/Operator.h>         /// 算子
#include <AFEPack/BilinearOperator.h> /// 双线性算子
#include <AFEPack/Functional.h>       /// 泛函
#include <AFEPack/EasyMesh.h>         /// EasyMesh 接口

#define DIM 2

/**
 * 类 EllipticEquation 的声明,可以看到,在这个类的声明中,我们基本上
 * 只是把前一节的程序中的很多变量,搬到了这里作为这个类的成员变量。注
 * 意我们使得本类是从 EasyMesh 上派生出来的,从而本类的对象本身可以作
 * 为一个网格来使用,同时这是为了下面扩展到移动网格方法的方便。
 */
class EllipticEquation : public EasyMesh
{
 private:
  /**
   * 下面的几个变量用来构造参考单元,已经在上一节进行过详细解释。
   */
  TemplateGeometry<DIM> triangle_template_geometry;
  CoordTransform<DIM,DIM> triangle_coord_transform;
  TemplateDOF<DIM> triangle_template_dof;
  BasisFunctionAdmin<double,DIM,DIM> triangle_basis_function;

  std::vector<TemplateElement<double,DIM,DIM> > template_element;

  FEMSpace<double,DIM> fem_space; /// 有限元空间
  FEMFunction<double,DIM> u_h;    /// 有限元函数

 public:
  /**
   * 这个函数进行初始化的工作,包括读入网格数据文件,以及构造参考单元,
   * 为建立有限元空间做准备。
   */
  void initialize();
  /**
   * 这个函数将构造有限元空间。
   */
  void buildSpace();
  /**
   * 在构造的有限元空间上计算刚度矩阵并求解获得的线性系统,最终完成求
   * 解近似解。
   */
  void solve();
};

/**
 * 这个类是用来计算现在的变系数二次算子的刚度矩阵用的。它从库中的刚度
 * 矩阵类 StiffMatrix 派生出来,唯一需要进行重载的函数就是计算单元刚度
 * 矩阵的函数 getElementMatrix。
 */
class Matrix : public StiffMatrix<DIM,double>
{
 public:
  Matrix(FEMSpace<double,DIM>& sp) :
    StiffMatrix<DIM,double>(sp) {};
  virtual ~Matrix() {};
 public:
  virtual void
    getElementMatrix(const Element<double,2>& ele0,
                     const Element<double,2>& ele1,
                     const ActiveElementPairIterator<DIM>::State state);
};

#endif // __EllipticEquation_h__

/**
 * end of file
 *
 */

⌨️ 快捷键说明

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