330 likes | 488 Views
FEPG 中级培训 之 算法描述. 讲师:. 本讲内容. 有限元语言回顾 描述算法的语言 NFE 库介绍 GIO GCN 文件. 有限元语言简述. 描述偏微分方程表达式 用一个文件描述 微分方程的虚功方程 描述有限元算法 如何把一个非线性的偏微分线性化 把依赖时间问题对时间离散 多物理场耦合的描述 计算流程和迭代的控制. 偏微分方程分类. 椭圆型方程 描述已经达到稳定状态或平衡状态的物理过程,即定常的物理过程 抛物型方程 像热的扩散这样的非定常物理过程,这种过程会朝着一个稳定的状态发展 双曲型方程
E N D
FEPG中级培训 之 算法描述 讲师:
本讲内容 • 有限元语言回顾 • 描述算法的语言 • NFE库介绍 • GIO GCN文件
有限元语言简述 • 描述偏微分方程表达式 • 用一个文件描述微分方程的虚功方程 • 描述有限元算法 • 如何把一个非线性的偏微分线性化 • 把依赖时间问题对时间离散 • 多物理场耦合的描述 • 计算流程和迭代的控制
偏微分方程分类 • 椭圆型方程 • 描述已经达到稳定状态或平衡状态的物理过程,即定常的物理过程 • 抛物型方程 • 像热的扩散这样的非定常物理过程,这种过程会朝着一个稳定的状态发展 • 双曲型方程 • 描述了非定常的物理过程,如波的运动,但这种物理过程不会朝着稳定的状态发展
各种问题的形式 • 椭圆方程 • 抛物方程 • 波动方程
什么是算法? • 有限元离散 • 弱形式的推导 • 单元划分 • 形函数、数值积分 • 其它算法 • 非定常问题的时间离散 • 非线性问题处理 • 数据耦合关系 • 计算流程等
非线性问题的种类 • 材料非线性 • 非线性本构关系 • 某些材料参数的非线性 • 几何非线性 • 大变形 • 边界非线性 • 接触和碰撞
新建FEPG项目需要的文件 • 方程表达式文件 • PDE/VDE文件 • FBC 文件(可选) • 算法文件 • NFE 文件 • GIO 文件 • GCN 文件
算法文件 — NFE文件 • 有限元方法最终求解的是离散后的线性代数方程组,用户必须给出代数方程组的左端矩阵和右端向量的表达式,然后得到要求解的线性代数方程组,这些表达式的结构通过算法文件 NFE文件来 给出 • 一般说来,代数方程组左边的矩阵是刚度矩阵、质量矩阵、阻尼矩阵的线性组合。右端向量则是这些矩阵和向量的乘积或与其他向量的线性组合
NFE库文件简介 ELL.NFE求解线性椭圆型方程的算法程序。 PAR.NFE 求解线性抛物型方程的算法程序,时间离散采用Crank-Nicolson格式。 PARB.NFE求解线性抛物型方程的算法程序,时间离散采用向后差分格式。 WAVE.NFE求解线性波动方程的算法程序,时间离散采用Wave速度法格式。 NEWMARK.NFE求解线性波动方程的算法程序,时间离散采用Newmark格式。 NELL.NFE求解非线性椭圆型方程的算法程序。 NPAR.NFE求解非线性抛物型方程的算法程序,时间离散采用Crank-Nicolson格式。 NPARB.NFE求解非线性抛物型方程的算法程序,时间离散采用向后差分格式。 NWAVE.NFE求解非线性波动方程的算法程序,时间离散采用Wave速度法格式。 NNW.NFE求解非线性波动方程的算法程序,时间离散采用Newmark格式。 STR.NFE已知位移场求应力场的算法程序,采用最小二乘法。 ell——椭圆,elliptic par——抛物, parabolic wave——波动(采用只求位移和速度的一种算法) newmark——波动(采用newmark算法,同时求解位移、速度和加速度) 以上算法前面加符号n表示非线性。
新建FEPG项目需要的文件 • 方程表达式文件 • PDE/VDE文件 • FBC 文件(可选) • 算法文件 • NFE 文件 • GIO 文件 • GCN 文件
GIO文件 • GIO文件给出计算场与PDE(VDE)文件之间的对应关系,以及采用的单元类型、单元积分方式和总体坐标系统。由两段内容组成(PDE对应段、总体信息段)。每一段以空行表示结束。
GIO文件-方程输入段 给出各场对应的PDE(或VDE)文件名,以及与PDE(VDE)有关的附加的fortran文件。 PDE(VDE)文件名[#OBJ fortran文件名[ … fortran文件名]] PDE(VDE)文件名[ #OBJ fortran文件名[… fortran文件名]] PDE(VDE)文件名[#OBJ fortran文件名[ … fortran文件名]] … … 1.PDE(VDE)文件名不带后缀名,FBC与之同名不需填写,系统自动进行同名查找。 2.#OBJ为关键字,在其后给出PDE(VDE)文件中使用的fortran子程序文件名(在PDE或VDE中调用且不在PDE、VDE中),各fortran文件名之间以空格隔开,如果一行写不下,可以在行末采用续行符“\”,然后在下一行接着写。 (此#OBJ功能与PDE中附加fortran源程序的方法中的第二种方法对应)
GIO文件-有限元信息段 给出采用的单元类型、单元积分方式和总体坐标系统。 #ELEMTYPE单元类型以及积分方式 坐标系 单元类型和积分方式必须为以下其一 一维: l2, l3, l2g2, l3g2, l3g3 二维: t3, t6, q4, q8, q9, q4g2, q8g3, q9g3 三维: w4, w10, c8, c20, c27, c8g2, c20g3, c27g3 第一个英文字母为单元几何形状类型符,其后的整数为单元的节点数,第二个字母“g”表示采用单元高斯点积分,其后整数为高斯积分阶次。如果没有字母“g”及其后整数,则表示采用单元顶点积分。
GIO文件-有限元信息段 PDE(VDE)中的参数对应关系 %1取单元类型积分方式的第一个英文字母,%2取单元的节点数,%3取高斯积分阶次,如果没有高斯积分阶次(没有字母“g”),%3取第一个英文字母(表示顶点积分)。 例如: 对于c27对应: 对于c27g3对应: shap %1 %2 shap c 27 shap c 27 gaus %3 gaus c gaus 3
FEPG提供的单元类型 • l :线单元,l2, 线性; l3, 二次 • t: 三角单元, t3, 线性; t6, 二次 • q: 四边形单元, q4, q8,q9 • w: 四面体单元 w4,w10 三棱柱单元 w6, w18 • c: 六面体单元 c8,c20,c27
GIO文件 — 有限元信息段 系统提供的坐标系有: 一维: 1dx(直角坐标系), 1dr(极坐标系), 1ds(球坐标系) 二维: 2dxy(直角坐标系), 2dro(极坐标系), 2drz(柱坐标系), 2drs(球坐标系),2dso(球面坐标), 2doz(柱面坐标) 三维: 3dxyz(直角坐标系), 3droz(柱坐标系), 3drso(球坐标系) 根据这里给定的坐标系确定PDE(VDE)中COOR行对应坐标分量的具体含义,因此在PDE(VDE)中写成: coor x y x和y不应该狭义地理解为直角坐标系下的坐标分量,它们只是符号,有可能是柱坐标系下的坐标分量,也可能是球坐标下的坐标分量,具体意义由GIO文件决定。
物理场别名 • FEPG中对GIO文件中规定的PDE文件,都会赋予一个别名,也称物理场名,场名 • 命名方法是,按照顺序分别是A,B,C……
新建FEPG项目需要的文件 • 方程表达式文件 • PDE/VDE文件 • FBC 文件(可选) • 算法文件 • NFE 文件 • GIO 文件 • GCN 文件
GCN文件 A NELL STARTC A IF EXIST END DEL END :1 SOLVC A IF NOT EXIST END GOTO 1
GCN文件-算法段 • GCN文件给出计算场与算法NFE文件之间的对应关系,以及场与场之间的耦合关系,和计算的求解流程。由两段内容组成(DEFI、求解命令流)。每一段以空行表示结束。 • 给出各场对应的算法文件名,以及场与场之间的耦合关系。 defi a a场NFE文件名 场标识符 … 场标识符 b b场NFE文件名 场标识符 … 场标识符 c c场NFE文件名 场标识符 … 场标识符 … …
GCN文件-算法段 • 从第二行起,每一行的第一个字符串为场标识符,场标识符按英文字母的顺序a、b、c、… 表示。即第一个场场标识符为a、第二个场场标识符为b、…、顺序对应,a、b、c、… 的顺序不能打乱,是固定不变的。 • 场的概念:在FEPG中一个待解方程就是一个场,或者由已知量求梯度等也作为一个场。求解场得到节点分布的结果。 • NFE文件名不加后缀。 • 每个场后面所跟场标识符表明本场与其它场之间的耦合方式,也就是求解本场要用到其它哪些场的结果。如果没有耦合关系则不填。
GCN文件-算法段 • 各场不能和自身场耦合。 • FEPG系统算法库中提供的算法文件都是单场算法,用户如果采用算法库中的算法,系统会根据GCN书写的耦合方式自动产生对应耦合场的耦合算法文件,如果用户自己书写NFE文件,那么就有两种情况实现耦合关系:一是在NFE文件中通过COEF信息段表明耦合关系,这时在GCN中就不必书写耦合关系;其二是NFE写成单场算法,那么在GCN中就需要给出耦合关系,二者均可实现。 • 系统编译时,根据GCN中书写的NFE文件名,首先在工作目录下寻找该NFE文件,如果当前目录下没有然后到系统算法库中找,如果算法库中也找不到则翻译中断、提示出错,所以用户定义的NFE文件名可以和算法库中的NFE文件同名,但以工作目录下的NFE文件优先。
GCN文件-命令流段 • 给出问题求解的计算流程。由DOS命令和FEPG系统命令组成。 STARTc if exist stop del stop :1 BFT if exist end del end :2 SOLVc if not exist end goto 2 POST if not exist stop goto 1
GCN文件-命令流段 例如在一个热固耦合的算例中,要求解瞬态温度场、位移场.位移场与温度场耦合。a场为温度场,b场为位移场。 求解流程设计为:按时间参数循环计算,在某一时间下,先求温度场,再求位移场。相应命令流段为: startsin a 初始化a场 startc b 初始化b场 if exist stop del stop 控制时间循环 :1 行号 bft更新时间参数 solvsin a 求解a场,用直接法求解器 solvc b 求解b场,用迭代法求解器 post a 按时间步输出结果 if not exist stop goto 1 判断时间是否结束,实现对时间循环
GCN文件-命令流段 较常用于命令流段的FEPG系统命令有: startc用存单刚的方式初始化 startnin用不存单刚的方式初始化,求解器采用非对称的直接法 startsin用不存单刚的方式初始化,求解器采用对称的直接法 startsor用不存单刚的方式初始化,求解器采用SOR迭代法 startilu用不存单刚的方式初始化,求解器采用ILU做预条件子的共轭梯度法 bft计算随时间变化的场的边值 solvc用存单刚的方式求解,求解器采用非对称的直接法。初始化要用startc solvnin用不存单刚的方式求解,求解器采用非对称的直接法。初始化要用startnin solvsin用不存单刚的方式求解,求解器采用对称的直接法。初始化要用startsin solvsor用不存单刚的方式求解,求解器采用SOR迭代法。初始化要用startsor solvilu用不存单刚的方式求解,求解器采用ILU做预条件子的共轭梯度法。初始化要用startilu stress用最小二乘法解某个场 order对节点重新排序,在用直接法求解器时,在初始化之前使用它,可减少存储量 post 按时间存储不同时刻下的计算结果
GCN文件-命令流段 2.系统默认用stop(文件名)作为时间控制计算是否结束的标识,用end(文件名)作为非线性迭代是否结束的标识。 3.对FEPG系统命令,除bft和post命令外,每个命令后空一格要填上相应的场名以表示对该场使用该命令。 4.bft命令计算随时间变化的边值,命令后空一格填写边值随时间变化的所有场标识符,各场标识符之间用空格隔开。如果所有场的边值都不随时间变化,则bft后不加任何场标识符。 5.典型计算流程及相应命令流段 非线性稳态问题 STARTc if exist end del end :2 SOLVc if not exist end goto 2 线性稳态问题 STARTc SOLVc
GCN文件-命令流段 非线性瞬态问题 STARTc if exist stop del stop :1 BFT if exist end del end :2 SOLVc if not exist end goto 2 POST if not exist stop goto 1 线性瞬态问题 STARTc if exist stop del stop :1 BFT SOLVc POST if not exist stop goto 1
新建FEPG项目需要的文件 • 方程表达式文件 • PDE/VDE文件 • FBC 文件(可选) • 算法文件 • NFE 文件 • GIO 文件 • GCN 文件