Setting up OpenGL with Visual Studio 2017

1. Using NuGet
1.1  Install Nuget package manager
     Run visual studio installer to see if NuGet package manager n\be checked. It not, check up and install it. By the way, You must also have Windows SDK be installed.


1.2  Open your project and pull down the program setting menu to find NuGet package manager.

  Searching "freeglut", you would find following three package 
where package nupengl ncludes freeglut, glew and glfw. Install it.

2. Just copying nupengl to relevent directories.
2.1 Download nupengl at https://github.com/jcdickinson/NupenGL
2.2 Copy all include files downloaded to C:\Program Files (x86)\Windows Kits\10\Include\10.0.16299.0\um\gl
      Copy all libraries files to C:\Program Files (x86)\Windows Kits\10\Lib\10xxxxxxx\um\x86(32bit) or \x64(64bit)
      Copy all 64bit dll files to C:\Windows\SysWOW64, copy all 32bit dll files to C:\Windows\system32

That's all


日本的仿真软件开发和国家项目(2)

下面介绍两个参考价值不是很大的国家项目,至此应该可以网罗日本的仿真软件国家项目了。

4. 高精度地球変動予測软件软件開発 (高精度の地球変動予測のための並列ソフトウェア開発 ): 1998-2002
     这是一个目标很明确的项目,着眼的是大规模,大时间跨度的计算,也就是大型并行计算。解析功能当然少不了断层,土壤的力学描述等。牵头的是东京大学的矢川元基教授,开发者以日本高度情報科学技術研究機構(RIST)为主体。开发出的软件叫GeoFEM,原来也是开源软件,但是现在已在网上消失了。现在日本的沿岸计算研究中心有一个经过开发扩展的版本,作为商品出售[1]。

5. VCAD系统[2]: 2001-2010
   Volume CAD的简称。这里将所有物体都来用正六面体来表述,称为VCAD。其优点很明显: 没有网格划分问题;其缺点也很明确: 是否存在针对这种格式的有效计算方法,或者说能否得到精度足够的计算结果。这是一个走偏门的项目,在一个技术没有确立的领域内能拿到国家开发预算真是有些不可思议。牵头的是当时日本理化学研究所的主任研究员牧野内昭武,开发者的主体是理化学研究所和其它院所的研究人员。开发的软件在此公开: http://vcad-hpsv.riken.jp/en/release_software/。这个项目开发的流体软件出现在前述FrontFlow/Violet中。
   与此相关的公司: 理研VCAD[3] . 刚才查看了一下公司网页,2015年后其更新为零。不知它是否还活着。



参考文献
[1] http://www.cdit.or.jp/program/geo.html
[2] http://vcad-hpsv.riken.jp/en/research/outline/
[3] http://trialpark.co.jp/riken-vcad/
 

日本的仿真软件开发和国家项目

  说的极端一点,除了极个别的例外,如[1],在仿真软件市场不存在有竞争力的日本制软件,ABAQUS, STARCD,ANSYS等横行日本,这一点和中国类似,与十几,二十年前如日中天的日本制造业相比也是对比鲜明。奇怪的是日本的游戏软件非常发达,我想也许与其发达的动漫文化有关吧。
   话说回来,日本政府对仿真软件的开发还是很重视的,从1997年开始就不断有大型国家项目不间断地往里投钱。本文下面想罗列一下这些日本仿真软件开发的国家项目,一是供有心人参考,另外这些项目开发的软件基本都是开源的,可供参考利用。

1. 1997-2002: Adventure Project[2]
1.1  首先这个项目的成果。在下图中可以看出,这个开发的软件包括从CAD到网格生成到解析结果的输出的整个过程。嗯,除去使用GUI的前后处理功能外基本上齐整了。 
 
图1

1.2 下面再看看开发者。这里强调一下这里的非大学教职的民间开发者。在本以及以后的日本国家项目中,都有不少民间开发者,其目的是便于在国家项目结束后所开发软件能得到迅速推广和持续开发。这里列出的两个公司,一个主攻仿真计算[3],一个主攻前后处理[4],仍然存在,但[3]已被收购。
图2


 1.3这些 软件有什么特点,换句话说日本人想靠什么弯道超车。看看[2]中的申明
图3
  个人评论如下

   1)  大规模计算。🆗!一般性而言,通用仿真软件的大规模并行计算功能不是其强项。

   2) 并行效率高。这个要打个引号,在某些情况下并行效率还是不错的。
   3,4)  这些都是应该地,谈不上是优点
   5) 软件可扩张性好。😥 其实相当地不好
  另外有一点,吉村教授在各种发表会上必讲的优点是其联立方程式求解器极好。基本上什么问题都收敛。但据我所知这种技术目前仍不存在。

1.4 现状
1)开源版的Adventure
      除个别软件(ADVENTURE Magnetic)外,其更新已经停止。但是零星的用户是存在的,这些人比较熟悉其内核,可以自己修改程序。
2)商业版ADVC
   其开发公司[3]一,二年前被收购。现在仍有少数机构在使用该商用版软件。

1.5 个人评价
1)开源版软件不好用。如图1所示,完成一个计算你要运行至少4个程序。同理,编译这一程序要弄清各个程序的依存关系一个个来,运行时的边界条件设定,输出输入文件还要经过专门程序的变换处理。当然,这样的设计便于分大饼,也可用来鼓励用户去购买商业版。
2)基本设计很糟糕。该软件的大部分用c语言开发。这样的结构化语言的设计中,需要设计时需要导出不少相互关联尽量少的基本模块。对有限元软件来说,单独的联立方程式求解器模块是常识,该软件居然把联立方程式求解部分直接嵌入有限元计算。这样的软件读起来一团粥,想换个求解器几乎不可能。也不知道开发者是不是相信自己的求解器能一劳永逸地解决所有问题而禁止用户做二次开发。

1.6 下载网址 http://adventure.sys.t.u-tokyo.ac.jp/download/

2.  2002-2005: 战略的基础软件的开发(戦略的基盤ソフトウェアの開発)
    2005-2007:革新的模拟软件开发 (革新的なシミュレーションソフトウェアの開発)
 2008-2012:创新的基础模拟软件的开发 (イノベーション基盤シミュレーションソフトウェアの開発)
   虽然国家预算的关系分开了,这三个项目的内容基本上是连续的。项目的牵头人一直是东京大学的加藤千幸教授,具体的开发者虽然有变化,但基本上也是同一批人。

2.1  成果

  从2002-2005开发了量子化学计算软件Protein-DF,蛋白质-化学计算软件BioStation,CFD软件FrontFlow,固体变形计算软件NEXST(2005后大改后更新为FrontSTR,2008年后更新为FrontISTR),Middleware软件HPC-MW(后并入FrontISTR

  到2012年结束时留下的软件有FrontFlow(流体),FrontISTR(固体),FrontCOMP(增加了碳素纤维复合材料的解析功能的FrontISTR),REVOCAP(GUI,流固耦合机能等辅助工具),ProteinDF(量子化学),BioStation(蛋白质-化学)和Phase(纳米结构计算)。

2.2 ·开发者
  这时创建了一个有60个人的新公司AdvanceSoft[8]专注于该项目的开发。不过其后续项目有其他公司参与。这里列出的东京大学的教授们的位置更像工程承包商。有些教授还招聘研究员在自己手下做开发,有的就干脆全部外包。

2.3 项目的目的和特点
   
   这是一个有者远大目标的项目,其目标包括一流软件的生产,软件开发人才的养成,相应高科技风险公司的促成等。至于什么是计划中的一流软件,说实话这个我也不知道!

2.4  ·现状
1) 开源版诸软件
    这些软件都预装在日本国内的各巨型机(如[9,10])中。从这一点来看,该项目的成果效果是很明显的。因为即使有成熟的商业软件可用,这些软件在这些新型巨型机安装是个问题。另外这些商业软件的并行计算效率一般不高。最后,即使这些商业软件可用,其大多是按CPU个数来计价的,如果要进行成千上万的CPU的并行计算,那么使用这样的商业软件就相当于招呼强盗到你家里抢钱。
   存在一些数目不详的个人用户。相应地,前述Adventure Project开发的软件使用者在减少。
   除去FrontISTR[11]外,其他软件的更新已经停止。

2)商用版诸软件
     上述开源版诸软件全部有对应的商用版,如Adavance/PHASE,Advance/FrontFlow[8]等。其中FrontFlow的商用版最多,有数家公司在做继续开发。但是其市场占有率很低,大约在FLUENT,PHOENICS这些软件眼里其威胁可以忽略不计。

2.5  个人印象(仅含FrontISTR,FrontFlow)
 1) FrontFlow: 包含三个互不相关的软件:FrontFlow/blue(FEM), FrontFlow/red(FVM),和FrontFlow/violet(正交网格)。其中violet出自另外一个国家项目VCAD(后述)。大体上是一款充满70年代气息的怀旧软件。很难相信在2010年代还会出现Fortran· 77格式的新规软件出现。文档很少(只有用户使用说明书)。功能还说的过去。
2) FrontISTR: 程序的基本设计原来只考虑了线弹性计算。虽然经过大规模的修改,仍然问题多多。功能还说的过去。基本文档也有。

2.5 ·下载地址
   http://www.ciss.iis.u-tokyo.ac.jp/riss/dl/download/index.php
  FrontISTR下载地址:
  官方:https://github.com/FrontISTR/FrontISTR.git
  本人:https://github.com/hillyuan/FrontISTR.git

3. HPCI战略PROGRAM: 2009-2015[12,13]

   该项目转向为应用和运营。

  同行的朋友间有个说法,在日本只有一个成功的Made in Japan的软件[1]。 虽然是个情绪化的说法,但是应该有个七,八分的可信度。注意到这个软件与上述国家项目没有任何联系。这一事实至少可以证明"国家投资=成功,国家不投资=失败"这一公式并不成立。其中原因,值得思考。

参考文献
[1]  http://www.cradle.co.jp/
[2]  http://adventure.sys.t.u-tokyo.ac.jp/
[3]  http://www.alde.co.jp/
[4]  http://www.meshman.jp/
[5] http://www.ciss.iis.u-tokyo.ac.jp/fsis/en/index.html
[6] http://www.ciss.iis.u-tokyo.ac.jp/rss21/en/index.html
[7] http://www.ciss.iis.u-tokyo.ac.jp/riss/english/
[8] http://www.advancesoft.jp/
[9] https://www.j-focus.or.jp/focus/
[10] http://www.hpci-office.jp/folders/english
[11] http://www.multi.k.u-tokyo.ac.jp/FrontISTR/
[12] http://www.mext.go.jp/a_menu/kaihatu/jouhou/hpci/1307375.htm
[13] http://www.aics.riken.jp/jp/

有限元计算中的体积锁死现象和F-bar单元

1.  什么是体积锁死现象

图1 平面应变模型

   在图1所示的又两个三角形单元组成的平面应变问题中,如果变形体材料是不可压缩的,那么我们不管在加载点施加多大的力,从有限元法计算得到的所有节点的所有位移都为零。因为任意位移都会导致两个三角形中的一个的体积变化。这种有限元单元精度不足以表现所需体积应变的问题就是体积锁死现象。


图2   受内压的线弹性厚壁圆筒;理论解(点线)和有限元计算结果的比较(1)

    图2给出了另外一个例子。这里显示了受内压的厚壁圆筒在弹性圆筒的泊松比为0.3时,有限元计算结果逼近理论解;而当泊松比逼近0.5时,有限元计算结果与理论解相差极大(实际上当泊松比逼近0.5时,有限元计算位移逼近于零)。

1.1  为什么会发生锁死现象

    这里给出一个非常粗糙的解释: 我们通常可以把变形体的变形功W分解为几个部分,比如说体积变形部分和非体积变形部分
          W = W1 + W2
由于数值计算的误差,当不同部分变形功的差相差很大时,将会带来很大的舍入误差,使计算结果变得很不可靠。具体来说,由于
    1) 单元尺寸带来的误差: 壳,梁单元是其典型。由于壳单元面内的尺寸和壳厚相差很大,使得面外应变与面内应变的计算精度相差很大,带来剪切锁死现象。由于细分后网格的单元边长和壳厚将会减小, 剪切锁死现象可以通过细分网格来减轻。
   2)由于材质带来的误差: 不可或近似不可压缩材料如泊松比趋于0.5的弹性材料,塑性材料,这时的体积应变对应于巨大的变形能,因而带来体积锁死。体积锁死现象不能靠细分网格来回避。
   3)由于物理现象不同带来的误差。比如说在做热-变形耦合分析时,温度(在三角形单元中线性分布)和应变(在三角形单元中均匀分布)计算精度带来的误差。
   对于该问题的进一步解释建议参看文献2),在哪里给出了通俗和准确的解释。

1.2  如何减轻锁死
   可以通过单元技术来减轻锁死的影响。如Selective reduce integeration, ·Incompatible,Assumed strain,Mixed formulation,MITC等等。对于近似不可压缩材料的体积锁死,最常见的对应方法是采用B-bar单元,这种单元的新式变种是F-bar单元,这是本文下面要讲的内容。

2. B-bar单元3,4)
   一般的,单元内任意一点的应变$\varepsilon$表为单元节点i的位移·ui·的函数$\varepsilon=\Sigma_iB_iu_i$. 在B-bar单元中将应变分解$\varepsilon=\varepsilon_s+\bar{\varepsilon}_v$。其中$\bar{\varepsilon}_v$为单元的平均体积应变$\bar{\varepsilon}_v=\sum_i\varepsilon_{vi}$或单元中心的体积应变值$\bar{\varepsilon}_v=\varepsilon_{vo}$. $\varepsilon_s$为偏差应变值。相应地,单元内任意一点的应变用下式计算
    $\varepsilon=\sum_i{(B_{si}+\bar{B}_{vi})u_i}$
   这里将体积应变做平均计算的方法缓和了体积锁死。这种方法实现起来非常简单,计算费用不高,效果也不错,因此得到非常广泛的应用。但是这种方法视乎不能满足LBB条件5)。

3. F-bar单元6,7)
   相应于B-bar单元对应变的加法分解,单元中的任意一点的变形梯度(deformation gradient)可以分解为体积变形梯度和偏差变形梯度两个部分: $F=F_sF_v$。 理论上来说这种分解方式是严密的,而B-bar单元中的应变加法分解是一种近似,只是在应变很小时与变形梯度的乘法分解相近。因此把B-bar单元推广到 F-bar单元是非常自然的,在变形较大时采用F-bar单元精度更好。
   在F-bar单元中,单元中的任意一点的变形梯度表述为$\bar{F}=(\bar{J}/J)^{1/3}F, J=detF$. 其中$\bar{J}$可以是单元中Jocobian J的平均值$\bar{J}=\frac{1}{V}\int_{V}JdV$,也可以指单元中心的Jocobian值。

3.1  Total Lagrange算式展开
   在Total Lagrange计算中,单元中变形能由Green应变E和第2Piola-Kirchhoff应力S的乘积在初始构型V中的积分计算得出$W=\int_{V}ESdV$, 其中$E=\frac{1}{2}(\bar{F}^T\bar{F}-I)$中的$\bar{F}$采用上述变形梯度表达式。如此,变形能变分为$\int_{V}\delta ESdV$, 单元的consistency stiff matrix可以由变形能变分的微分$d(\int_{V}\delta ES)dV$展开得出。

3.2 Updated Lagrange算式展开
   在Updated Lagrange计算中,单元中变形能由Almansi应变A和Cauchy应力T的乘积在现在构型v中的积分计算得出。$W=\int_{v}ATdv$, 其中$\bar{F}^TA\bar{F}=E$, $T=\frac{1}{J}\bar{F}S\bar{F}$。把这些变换带入3.1的相应算式即可得出Updated Lagrange法的内力,单元的consistency stiff matrix计算公式。

3.3 微小变形计算的算式展开
   如前所述,F-bar单元用于大变形计算。在微小变形计算中应用B-bar单元就可以了。不过由于应变的加法分解可以理解为变形梯度乘法分解的近似。那么可以从F-bar单元公式推出B-bar公式来。虽然从实用的角度来看这样做似乎意义不大。参见文献(9)

3.4 Fbar-patch 单元(8)
  Fbar单元不能应用于三角形一次和四面体一次单元,因为这些单元内的应变本身就是均匀分布的。为了将这一方法扩展到三角形一次和四面体一次单元,文献8)提出了将单元分解为相邻的patch的方法,称为Fbar-patch单元。

4. 算例: Cook's membrane (10,11)
  Cook's membrane benchmark见上图,锲形版材质设定为近似不可压缩的Mooney Rivlin超弹性材: 其·弹性能函数$W=C_{10}(\bar{I}_1-3)+C_{01}(\bar{I}_2+3)+\frac{1}{D_1}(J-1)^2$, with $C_{10}=1.0, C_{01}=0.925, {D_1}=0.000245$. 采用单元为六面体F-bar单元,B-bar单元 和一般的等参六面体单元。计算结果如下



(a)等参单元:受力方向最大位移值=0.2706


b)B-bar单元:受力方向最大位移值=3.898
b)F-bar单元:受力方向最大位移值=4.918

  



参考文献
1)Allan F. Bower: Applied Mechanics of Solids, CRC, 2010, p535
2) Gangan Prathap: FINITE ELEMENT ANALYSIS AS COMPUTATION, http://www.cmmacs.ernet.in/cmmacs/pdf/ch08.pdf
3)TJR Hughes: Ceneralization of selective integration procedure to anisotropic and nonlinear media, Intl. J. Numer. Methiods Engng., 15(1980), 1413-1418
4) JC Simo, KS Pister, RA Taylor: Variational and projection methods for the volume constraint in finite deformation elatoplasticity, Comp. Mthods Appl. Mech. Eng., 51(1985), 177-208
5) F Brezzi, M Fortin: Mixed and Hybrid Finite Element Method, Springer, 1991
6)  B Moran, M Oritz, CF Shin: Formulation of implicit finite-element methods for multiplicative finite deformation platicity, Intl. J. Numer. Methiods Engng., 29(1990), 483-514
7)  EA de Souza Neto, D Peric, M Dutko, DRJ Owen: F-bar based linear triangles and tetraheral for finite element strain analysis of nearly incompressible solids. Part I: Formulation and benchmarking Intl. J. Numer. Methiods Engng., 33(1996), 3277-3296
8)  EA de Souza Neto, D Peric, M Dutko, DRJ Owen: Design of simple low order finite element for large strain analysis of nearly incompressible solids, Intl. J. Numer. Methiods Engng., 62(2005), 353-383
9)CD Foster, T Mohammad Nejad,; Trilinear Hexahedra with integral-averaged volumes for nearly incompressible nonlinear deformation, Engineering, 7(2015), 765-788
10)  Cook, R. D.; Improved two-dimensional finite element; ASCE J. Struct. Div., ST9, 1851-1863 (1974).
11) Brink,  U., and E. Stein, On some Mixed Finite Element Methods for Incompressible and Nearly Incompressible Finite Elasticity,Computational Mechanics, vol. 19, pp. 105–119, 1996.

Build libmesh in windows under msys2/ mingw64

Indication about the libmesh building in windows in msys2 shell is provided in the libmesh official site. But it doesn't work well in my case: Windows 10 + msys2 with gcc 6.3.0 + mingw64 with gcc 7.2.0. Some additional points should be take into acoount.

For both msys2 and mingw64

1. Symbolic links are not available in both msys2 or mingw64. Those include:
    contrib/eigen/eigen;  contrib/exodusii/v5.09, v5.22; contrib/nemesis/v3.09, v5.22
    contrib/netcdf/v3,v4;  contrib/qhull/qhull
you should build symbolic link by 'ln' (just a hard copy) or by 'mklink' yourself.

Libmesh should be compiled successful under msys2 then. But under mingw64, futher modification should be added.

2. Some optional dependencies are available
   metis: see solution here.
   fparse: operation system dependent 'mkdir' and POSIX 'link' function
   netcdf: some problem in depdents upon hdf5
Disable them by using --disable-netcdf  --disable-metis --disable-fparser

3. Dependent upon netcdf still exists even '--disable-netcdf' is indicated. Comment out line 40558 (subdirs="$subdirs contrib/netcdf/v4") of file 'configure'

4. Inconsistence between 'exodusII_io.h' and 'exodussII_io.C'
    In 'exodusII_io.h' some varaibales are defined under the condition
----------------------------------
    #ifdef LIBMESH_HAVE_EXODUS_API
      UniquePtr<ExodusII_IO_Helper> exio_helper;
      int _timestep;
  #endif
--------------------------------
but are used unconditionedly in 'exodussII_io.C' at 
--------------------------------------------
function ExodusII_IO::write_timestep_discontinuous
--------------------------------------------
"#ifdef LIBMESH_HAVE_EXODUS_API" is also needed here.

Everthing then should be allright!

Build PETSc in windows under mingw64

Installation of PETSc on windows is suggested in the official site of PETSc under cygwin and by specific script 'win32fe' provided. It could be, however, compiled in native windows under mingw64 with a few points should follows,

1. Don't use Windows style git such as TortoiseGit. Use git of msys2.

2. Specify your MPI environment by --with-mpi-include=<your mpi include folder> and --with-mpi-lib=<your mpi library>

3. Don't use ar in /mingw64/bin/ar by specify --with-ar=/usr/bin/ar

4. Set the gfortran compiler option by 'FOPTFLAGS=-fno-range-check'

The python script would something like:

#!/usr/bin/env python2

configure_options = [
  '--with-mpi-include=/mingw64/include',
  '--with-mpi-lib=/mingw64/lib/libmsmpi.a',
  '--with-ar=/usr/bin/ar' ,
  '--with-shared-libraries=0',
  '--with-debugging=0',
  '--with-visibility=0',
  '--prefix=/usr/local/petsc',
  'FOPTFLAGS=-O3 -fno-range-check',
  ]

if __name__ == '__main__':
  import sys,os
  sys.path.insert(0,os.path.abspath('config'))
  import configure
  configure.petsc_configure(configure_options)

5. Don't use python in /usr/bin/python other than /mingw/bin/python
   e.g. runing the above script by type in > /usr/bin/python <your python script name>

Compilation of PETSc3.8.2 tests successfully!

秋意

日本的俳句,川柳,短歌都不长。像俳句只有17个音节,光从容量上来讲也表现不了太多的内容。大约这也是与日本人的性格有关吧。看看中国的诗歌

     看万山红遍, 层林尽染, 漫江碧透
     明月松间照,清泉石上流

这个画面多美,想用俳句来表现大约是不可能的。俳句视乎是用来表现一点,一刻。其他就要靠读者的想象来补充了




看看俳句中表现秋色的代表作

1。 「秋深き 隣は何を する人ぞ松尾芭蕉
 译文:秋深寂,邻人窸窣,在干啥

2. 「柿くえば 鐘が鳴るなり 法隆寺正岡子規
 译文:新柿一口,钟声悠悠法隆寺

3.「白露や 茨の刺に ひとつづつ与謝蕪村
 译文:白雾朦朦,棘尖露珠晶莹








谈一谈有限元分析中的显式和隐式解法

   假设时间步i中的所有物理量Xi已知, 如果时间步i+1中的所有物理量Xi+1可以表为Xi的显函数
(1)           Xi+1 = F(Xi)  (注;本文以下标i,i+1等表示时间步)
则该物理量X可以显式计算。而如果
(2)          Xi+1 = F(Xi+1)
则需要隐式解法来计算X。
    上述定义应该没什么歧义,但其应用于有限元时模样大变,似乎不那么好辨认(参考下述文献1,2).本文试图理清一下这一概念。

1.  静力学计算
    以K表示刚度矩阵,U表示位移,F表示外力。时间步i+1的外力已知。则
        KiUi+1=Fi+1     =>   Ui+1 = Ki^-1  Fi+1
为静力学显式方程。由于采用了时间步i的刚度矩阵,在用于计算非线性问题时该方程并不能满足时间步i+1的平衡条件,其使用条件是步长要足够小。而方程
        Ki+1Ui+1=Fi+1
中时间步i+1的刚度矩阵Ki+1为Ui+1的函数(非线性问题),为静力学隐式方程。一般情况下我们用Newton-Raphson法求解此方程。

2.  动力学计算
     在动力学计算中,除了需要考虑刚度矩阵K的线性,非线性,还需要考虑时间的差分格式,时间的差分可以是显式的,也可以是隐式的。
     显式格式; 如Euler前进差分  Ui+1 = Ui + Vi* h + 0.5Ai* h^2+ ... (在这里,我们用h表示时间增分,V,A表示速度和加速度)。在有限元动力学计算中我们常用的是中心差分
         Ai= (Ui-1-2Ui+Ui+1)/h^2
         Vi= (-Ui-1+Ui+1)/(2h)
把i+1时间步的位移Ui+1表为时间步i的速度和加速度的函数。
     隐式格式; 隐式差分格式很多,Euler后退差分属于隐式格式差分。有限元计算中常用Newmark法
         Vi+1= Vi + [(1-a)*Ai +a*Ai+1]h
         Ui+1= Ui + Vi* h + [ (0.5-b)*Ai+ b*Ai+1]*h^2   (a,b为常数)
在这里Ui+1, Vi+1和Ai+1互相相关,不是既知时间步i的物理量的显式函数。
     如果只用时间差分格式来区分,那么我们可以定义采用显式时间差分格式的方法为动力学显式计算,而采用隐式时间差分格式的方法为动力学隐式计算。但是如果我们考虑非线性,情况就有些复杂!比如说下面这个问题:

3.  如何用显式时间差分格式来计算非线性问题?
     如果我们仍用Newton-Raphson法来处理非线性,也就是说时间步i+1中的物理量Xi+1不是Xi的显函数,此时如果将其称为显式动力学计算不是与上面的显式计算的定义(1)相矛盾吗?对这个问题的回答是:
     在显式动力学计算中,我们无视每一计算步长中由于各种非线性带来的非平衡残差,也就是说我们视每一特定计算步中的变形为线性。当然,这种处理的基本前提是,在显式动力学中每一计算步的时间增分足够小。
     也就是说我们在显式动力学计算中不会使用Newton-Raphson法. 至少在作者的认知范围内情况如此。如果存在反例还请告知。
     显式动力学计算的平衡方程为
       Mi Ai + Ci Vi + Ki Ui  = Fi
将时间的中心差分带入可得到
        [ Mi /h^2 + Ci /(2h) ] Ui+1 = Fi -(Ki -2Mi /h^2)Ui - [ Mi /h^2 -Ci /(2h)] Ui-1
可以看到刚度矩阵K出现在方程右端,这一现象带来了该方程的最迷人之处: 如果矩阵M,C为对角阵(比如通过对采用对角化的lumped mass matrix并取衰减阵C比例于M),我们可以不用线性方程组求解器就可以求解这一方程。我们甚至不需要计算刚度矩阵K(因为方程右端的KU代表变形产生的内力,我们只需计算变形产生的内力即可)。所以其计算量,所需内存及并行计算的通信量都大大减少。
     隐式动力学计算,考虑的是时间i+1的平衡方程
         Mi+1 Ai+1 + Ci+1 Vi+1 + Ki+1 Ui+1  = Fi+1
因此采用这种方法计算非线性问题时仍需使用Newton-Raphson法。但是

4.  采用隐式动力学计算格式计算线性问题时,其计算方法属于上面的显式计算(1)还是隐式计算(2)?
     回答是属于显式计算(1). 如此,力学算中的式指的是时间差分格式。也有人(·如参考文献(3))认为考虑时间i的平衡条件的是显, 考虑时间i+1的平衡条件的是隐计算。相对于本文给出的基于显,隐的判别法,这也是不失为一个有效的分类方法。

5.  静力学显式计算和动力学显式计算的比较
      采用动力学显式计算时我们可以不用求解线性方程组,但是静力学显式计算是需要的。因此使用静力学显式计算并没有什么优势。实际上很少见到采用这种方法的报道,有极少的例外如参考文献(4,5),算得上是珍稀品种了。
      有效的静力学显式计算方法应该是采用所谓准静力学显式(动态松弛法)计算,导入假想的质量矩阵M, 使用显式动力学计算公式来进行静力学计算。

结论: 由于存在对于非线性处理和对时间差分的显式和隐式计算方法,给对有限元分析中的显式和隐式解法的理解带来了一些困难。希望本文能澄清这一问题。
   有限元分析中实际存在下述算法:
* 静力学隐式计算: 标配;  所谓静力学显式算法属于珍稀品种。
* 动力学显式计算: 标配;  显式时间差分格式。在计算时间步内不考虑非线性。
* 动力学隐式计算: 标配;  隐式时间差分格式。在计算时间步内考虑非线性,作迭代运算。

1. What is difference between implicit and explicit FEM in non-linear quasi-static problems?
https://www.researchgate.net/post/What_is_difference_between_implicit_and_explicit_FEM_in_non-linear_quasi-static_problems
2.  Implicit and Explicti finite element (http://imechanica.org/node/5396)
3. K.J.Bathe,E.L. Wilson: Numerical Methods in Finite Element Analysis, Prentice-Hall·, 1977
4.Staic-explicit finite element method and its application to drawbead process with spring-back
http://www.sciencedirect.com/science/article/pii/S0924013602004685
5.  http://trialpark.co.jp/en/

Continuum mechanics in manifolds: Kinematics

Motion ft is diffeomorphic mapping, which preserve the topology of the initial and final state, from manifold B to S=f(B)
                                                 (1)
The tangent bundle homeomorphism

                                                          (2)
where two point tensor F, which involving points in two distinct configurations, is called the deformation gradient, tangent map or the differential of f. Or push forward
From (2)
The metric tensor G can be written as $dS^2=G_{AB}(X)dX^A⊗dX^B$  . We may also write this tensor g, at the point x as $ds^2=g_{ab}(x)dx^a⊗dx^b$ . For the pull-back under f we have

which is right Cauchy-Green tensor C
One measure of the deformation taking place is given by the Green-Lagrange deformation tensor
The small strain tensor defines as the Lie derivative of metric tensor with repsect to the displacement vector field u
$\varepsilon:=L_ug$






VS Code下cmake, c++编译,调试环境的构成步骤

1   下载必须extension      按[Ctrl+Shift+X]打开extension窗口,选择安装"C/C++", "CMake", "CMake Tools" 2   在VSCode下打开作业目录 ...