1 arpack-ng
The configure script of arpack-ng is not that smart. You need define several settings by hand like
export MPIF77=gfortran
export FFLAGS=-I/c/mpich2/include
./configure --with-blas=/c/libs/libblas.a --with-lapack=/c/libs/liblapack.a --enable-mpi
where absolute location of blas and lapack is needed. Besides, the MPICH2 library libfmpich2g.a is not considered in the configure script, you need add something like
LIBS="-lfmpich2g $LIBS"
cat > conftest.$ac_ext <<_ACEOF
program main
call MPI_Init
end
_ACEOF
if ac_fn_f77_try_link "$LINENO"; then :
ac_cv_lib_fmpich_MPI_Init=yes
else
ac_cv_lib_fmpich_MPI_Init=no
fi
to check the existence of MPILIBS
2. Pararpack
The "mpif.h" file in the pararpack pakage is too outdated to be used. You must delete this files and modify ARmake.inc to indicate MPI settings. Like
MPIDIR = /c/MPICH2
MPILIBDIR = $(MPIDIR)/lib
MPILIBS = -L$(MPILIBDIR) -lfmpich2g -lmpi
FFLAGS = -O -I/c/MPICH2/include
内存误用的检查方法
检查是否有内存遗漏的简单方法
i = system( "wmic os get FreePhysicalMemory /value" )
该命令显示当前可用物理内存。
Linux下可以用valgrind去特定内存遗漏
valgrind --error-limit=no --leak-check=full --show-reachable=no myprog arg1 arg2 2>&1 | tee valgrind.log
详细可参见http://valgrind.org/docs/manual/mc-manual.html
Windows下可用DrMemory : http://www.drmemory.org/
其他
Wine and Valgrind http://wiki.winehq.org/Wine_and_Valgrind
Visual Leak Detector for Visual C http://vld.codeplex.com/
Very sleepy http://www.codersnotes.com/sleepy
VMMap http://technet.microsoft.com/en-us/sysinternals/dd535533
D.U.M.A. http://duma.sourceforge.net/
i = system( "wmic os get FreePhysicalMemory /value" )
该命令显示当前可用物理内存。
Linux下可以用valgrind去特定内存遗漏
valgrind --error-limit=no --leak-check=full --show-reachable=no myprog arg1 arg2 2>&1 | tee valgrind.log
详细可参见http://valgrind.org/docs/manual/mc-manual.html
Windows下可用DrMemory : http://www.drmemory.org/
其他
Wine and Valgrind http://wiki.winehq.org/Wine_and_Valgrind
Visual Leak Detector for Visual C http://vld.codeplex.com/
Very sleepy http://www.codersnotes.com/sleepy
VMMap http://technet.microsoft.com/en-us/sysinternals/dd535533
D.U.M.A. http://duma.sourceforge.net/
梯度是向量还是1形式?
一直以为梯度是向量,可最近看Schutz的A first course in general relativity, 该书的3.3节下有一小节的标题是Gradient of a function is a one-form称梯度是1形式。
$df=\frac{\partial f}{\partial x} dx+\frac{\partial f}{\partial y} dy+\frac{\partial f}{\partial z} dz$
Schutz直接定义由成份$\partial f/\partial x,\partial f/\partial y, \partial f/\partial z$构成的量为梯度,这是1形式。
但是,一般情况下,梯度定义为
$\nabla f=g^{ik} \frac{\partial f}{\partial x^k} \frac{\partial}{ \partial x^i}$
其成分为$g^{ik}\frac{\partial f}{\partial x^k}$,这是向量.
参考文献
1. B. Schutz: A first course in general relativity, Cambridge Univ, 2009
2. http://en.wikipedia.org/wiki/Gradient
$df=\frac{\partial f}{\partial x} dx+\frac{\partial f}{\partial y} dy+\frac{\partial f}{\partial z} dz$
Schutz直接定义由成份$\partial f/\partial x,\partial f/\partial y, \partial f/\partial z$构成的量为梯度,这是1形式。
但是,一般情况下,梯度定义为
$\nabla f=g^{ik} \frac{\partial f}{\partial x^k} \frac{\partial}{ \partial x^i}$
其成分为$g^{ik}\frac{\partial f}{\partial x^k}$,这是向量.
参考文献
1. B. Schutz: A first course in general relativity, Cambridge Univ, 2009
2. http://en.wikipedia.org/wiki/Gradient
Lagrangian to Hamiltonian = TQ to T*Q = Riemann to Sympletic
假设系统有Lagrangian
$L=L(q^1,...,q^n,\dot{q}^1,...\dot{q}^n,t)$
并满足 Euler-Lagrange 方程
(1) $d/dt \partial L/\partial\dot{q}^i-\partial L/\partial q^i=0$
可以看出,上述微分方程处于2n维空间TQ,其坐标为
$q^1,...,q^n,\dot{q}^1,...\dot{q}^n$
可以解释为构形空间Q的切丛。
通常设势能V为$q^i$的函数,动能$T=1/2g_{ij}\dot{q}^i\dot{q}^j$。这里$g_{ij}$为Riemann测度张量。因此方程(1)为Riemann空间中的极值问题,特别是V=0时得到的就是Riemann空间中的测地线。
现在使用Legendre变换从切丛TQ转换至余切丛 T*Q
$\omega$: TQ --> T*Q
(q,$\dot{q}$)--> (q,p)
这里 $p_i=\partial L/\partial\dot{q}^i, i=1,...,n.$. 这时由Lagrangian函数描述的处于切丛 TQ的系统将转换为由下述 Hamiltonian函数 H描述的处于相空间 T*Q 的系统
$H(p,q,t):=p_i\dot{q}^i-L(q,\dot{q},t) \; with\; p_i=\partial L/\partial\dot{q}^i,$
Lagrange方程 (1)也转换为 Hamilton方程
(2) $\dot{q}^i=\partial H/\partial p_i, \dot{p}_i=-\partial H/\partial q^i$
写成 Poisson 括号形式则为
(3) $\dot{q}^i=\{q^i,H\}, \dot{p}_i=\{p_i,H\}$
积分方程(2),我们可以得到p,q在相空间的流动。进一步,我们研究相空间的Sympletic结构。
考虑Q上的可微函数H,其微分为一1形式$dH=\partial H/\partial q^idq^i+\partial H/\partial p_idp_i$.将其拉回到TQ则得到Hamiltonian矢量$V_H=\omega^{-1}(dH)$,写成内积(interior product)则为
$\omega(V_H,*)=i_{V_H}\omega=dH$
由于我们要求 变换$\omega: TQ-->T^*Q$一一对应,变换$\omega$必须非退化。另外我们要求Hamiltonian守恒,即
$dH(V_H)=\omega(V_H,V_H)=0$
则$\omega$须为2-形式,即$\omega$具有Sympletic结构(非退化的封闭的2-形式)
$\omega=dp_i\wedge dq^i$
References:
1. R. Berndt: An Introduction to Sympletic Geometry, American Mathematical Society, 2001
2. Topics in Representation Theory:Hamiltonian Mechanics and Symplectic Geometry
http://www.math.columbia.edu/~woit/notes22.pdf
3. SYMPLECTIC VECTOR FIELDS http://www-personal.umich.edu/~wangzuoq/437W13/Notes/Lec%2034.pdf
$L=L(q^1,...,q^n,\dot{q}^1,...\dot{q}^n,t)$
并满足 Euler-Lagrange 方程
(1) $d/dt \partial L/\partial\dot{q}^i-\partial L/\partial q^i=0$
可以看出,上述微分方程处于2n维空间TQ,其坐标为
$q^1,...,q^n,\dot{q}^1,...\dot{q}^n$
可以解释为构形空间Q的切丛。
通常设势能V为$q^i$的函数,动能$T=1/2g_{ij}\dot{q}^i\dot{q}^j$。这里$g_{ij}$为Riemann测度张量。因此方程(1)为Riemann空间中的极值问题,特别是V=0时得到的就是Riemann空间中的测地线。
现在使用Legendre变换从切丛TQ转换至余切丛 T*Q
$\omega$: TQ --> T*Q
(q,$\dot{q}$)--> (q,p)
这里 $p_i=\partial L/\partial\dot{q}^i, i=1,...,n.$. 这时由Lagrangian函数描述的处于切丛 TQ的系统将转换为由下述 Hamiltonian函数 H描述的处于相空间 T*Q 的系统
$H(p,q,t):=p_i\dot{q}^i-L(q,\dot{q},t) \; with\; p_i=\partial L/\partial\dot{q}^i,$
Lagrange方程 (1)也转换为 Hamilton方程
(2) $\dot{q}^i=\partial H/\partial p_i, \dot{p}_i=-\partial H/\partial q^i$
写成 Poisson 括号形式则为
(3) $\dot{q}^i=\{q^i,H\}, \dot{p}_i=\{p_i,H\}$
积分方程(2),我们可以得到p,q在相空间的流动。进一步,我们研究相空间的Sympletic结构。
考虑Q上的可微函数H,其微分为一1形式$dH=\partial H/\partial q^idq^i+\partial H/\partial p_idp_i$.将其拉回到TQ则得到Hamiltonian矢量$V_H=\omega^{-1}(dH)$,写成内积(interior product)则为
$\omega(V_H,*)=i_{V_H}\omega=dH$
由于我们要求 变换$\omega: TQ-->T^*Q$一一对应,变换$\omega$必须非退化。另外我们要求Hamiltonian守恒,即
$dH(V_H)=\omega(V_H,V_H)=0$
则$\omega$须为2-形式,即$\omega$具有Sympletic结构(非退化的封闭的2-形式)
$\omega=dp_i\wedge dq^i$
References:
1. R. Berndt: An Introduction to Sympletic Geometry, American Mathematical Society, 2001
2. Topics in Representation Theory:Hamiltonian Mechanics and Symplectic Geometry
http://www.math.columbia.edu/~woit/notes22.pdf
3. SYMPLECTIC VECTOR FIELDS http://www-personal.umich.edu/~wangzuoq/437W13/Notes/Lec%2034.pdf
QWidget: Must construct a QApplication before a QWidget
There are instances that you download official examples from http://www.vtk.org/Wiki/VTK/Examples/Cxx/Qt. but got error like "QWidget: Must construct a QApplication before a QWidget" during runtime. It is most probably due to the debug and release conflict between Qt libaray and your exe file. Just rebuild your exe file by set CMAKE_BUILD_TYPE to Debug or Release correspondingly. It can be done by modifying CMakefile.txt as
--------------------------------------------
set(CMAKE_BUILD_TYPE Debug) or set(CMAKE_BUILD_TYPE Release)
-------------------------------------------
or running cmake like
-------------------------------------------
cmake -DCMAKE_BUILD_TYPE=Release
-------------------------------------------
--------------------------------------------
set(CMAKE_BUILD_TYPE Debug) or set(CMAKE_BUILD_TYPE Release)
-------------------------------------------
or running cmake like
-------------------------------------------
cmake -DCMAKE_BUILD_TYPE=Release
-------------------------------------------
应力张量为什么是对称的? 为什么是不对称的?(其二)
4 什么应力张量是不对称的
如前文所指出, Cauchy应力张量的对称性得至于角动量平衡方程(2). 如果方程(2)不成立, 如将其改写为
$\int_\Omega x\times\rho \dot{u}dv=\int_\Omega x\times b dv+\int_{\partial\Omega} x\times t ds + \int_\Omega m dv$ (10)
则Cauchy应力张量就会变得不对称性。这里增加的一项m的物理意义为外部体力矩。这是一种假设,至于如何在尺寸为零的点上施加力矩这样的问题比较难于回答,在这里我们先放过了。
上述在古典连续体力学导入新的变量的想法其实并不新鲜,它 最早出现在1909年([17])。Cosserat理论可以说是现在渐渐变得时髦的nonlocal continuum或 generalize continuum mechanics的鼻祖。在上世纪60年代对类似理论有详细的研究。这样构筑的力学体系于古典连续体力学大不相同,它们有自己的平衡方程,本构方程,Lagrangian或Hamilton. 在这些理论体系中,Cauchy应力有些是对称的(如couple stress theory, strain graident theory),有些是不对称得(如micropolar theory)。本文无意讨论这些问题,下述文献[18]-[20]叙述的理论中的Cauchy应力都是不对称的。
5 结言:模型与现实
在本文中,我们提到了至少两类连续体模型:一类的Cauchy应力是对称的,另一类则是不对称的。我们在构筑模型时,第一要求模型体系是自洽的,即不是自相矛盾的。 经典连续体力学就是一个这样的严格的数学体系,在该体系下不能也不可能得到不对称的Cauchy应力。第二我们要求模型可以解释已知并且可以预测物理现象。进一步,如果模型的结果与现实不相符,该模型就需要修正或者放弃重构。由于经典连续体力学在某些方面的预测结果的精度不够,nonlocal continuum或 generalize continuum mechanics正是对经典连续体力学的修正。
6 题外的话:为什么应变张量是对称的?
在(8)式中,我们看到应变能为Cauchy应力和应变速率$\varepsilon=gradu$的积。这里定义的应变速率不是对称的,它可以分解为对称部分和反对称部分的和。考虑到Cauchy应力的对称性, 应力张量与反对称张量的乘积为零,应变能实际上只和$gradu$的对称部分有关,即$\sigma:gradu=\sigma:sym(gradu)$。这样应变速率可以定义为$\varepsilon=sym(gradu)$. 这是常见的应变张量定义方法。
参考文献
17 Cosserat; E. & F., Théorie de Corps déformables, Paris, 1909
18 Eringen, A.C; Theory of micropolar elasticity, Defense Technical Information Center, 1967
19 Nowacki, W; The linear theory of micropolar elasticity, 1972
http://bcpw.bg.pw.edu.pl/Content/970/Micropolar_Elasticity_str1_43.pdf
20 Nowacki, W; Theory of Asymmetric Elasticity, Elsevier Science & Technology, 1986
如前文所指出, Cauchy应力张量的对称性得至于角动量平衡方程(2). 如果方程(2)不成立, 如将其改写为
$\int_\Omega x\times\rho \dot{u}dv=\int_\Omega x\times b dv+\int_{\partial\Omega} x\times t ds + \int_\Omega m dv$ (10)
则Cauchy应力张量就会变得不对称性。这里增加的一项m的物理意义为外部体力矩。这是一种假设,至于如何在尺寸为零的点上施加力矩这样的问题比较难于回答,在这里我们先放过了。
上述在古典连续体力学导入新的变量的想法其实并不新鲜,它 最早出现在1909年([17])。Cosserat理论可以说是现在渐渐变得时髦的nonlocal continuum或 generalize continuum mechanics的鼻祖。在上世纪60年代对类似理论有详细的研究。这样构筑的力学体系于古典连续体力学大不相同,它们有自己的平衡方程,本构方程,Lagrangian或Hamilton. 在这些理论体系中,Cauchy应力有些是对称的(如couple stress theory, strain graident theory),有些是不对称得(如micropolar theory)。本文无意讨论这些问题,下述文献[18]-[20]叙述的理论中的Cauchy应力都是不对称的。
5 结言:模型与现实
在本文中,我们提到了至少两类连续体模型:一类的Cauchy应力是对称的,另一类则是不对称的。我们在构筑模型时,第一要求模型体系是自洽的,即不是自相矛盾的。 经典连续体力学就是一个这样的严格的数学体系,在该体系下不能也不可能得到不对称的Cauchy应力。第二我们要求模型可以解释已知并且可以预测物理现象。进一步,如果模型的结果与现实不相符,该模型就需要修正或者放弃重构。由于经典连续体力学在某些方面的预测结果的精度不够,nonlocal continuum或 generalize continuum mechanics正是对经典连续体力学的修正。
6 题外的话:为什么应变张量是对称的?
在(8)式中,我们看到应变能为Cauchy应力和应变速率$\varepsilon=gradu$的积。这里定义的应变速率不是对称的,它可以分解为对称部分和反对称部分的和。考虑到Cauchy应力的对称性, 应力张量与反对称张量的乘积为零,应变能实际上只和$gradu$的对称部分有关,即$\sigma:gradu=\sigma:sym(gradu)$。这样应变速率可以定义为$\varepsilon=sym(gradu)$. 这是常见的应变张量定义方法。
参考文献
17 Cosserat; E. & F., Théorie de Corps déformables, Paris, 1909
18 Eringen, A.C; Theory of micropolar elasticity, Defense Technical Information Center, 1967
19 Nowacki, W; The linear theory of micropolar elasticity, 1972
http://bcpw.bg.pw.edu.pl/Content/970/Micropolar_Elasticity_str1_43.pdf
20 Nowacki, W; Theory of Asymmetric Elasticity, Elsevier Science & Technology, 1986
Build scotch6.0 in mingw64
1. Prerequisite
Following tools and libraries install in mingw64: flex, yacc, zlib, pthread, mpi
2. Modify the Makefile.inc
Based upon file Makfile.inc.i686_pc_mingw32, modify in follows
1) Add -Drestrict=__restrict into CFLAGS_DEF
2) Modify -lmpich2mt in LDFLAGS into -lmpicxx
3) Modify pthread library into what you have installed
3. Add following into common.h
#ifndef HAVE_STDINT_H
#define HAVE_STDINT_H 1
#endif /* HAVE_STDINT_H */
#ifndef HAVE_UINT_T
#define HAVE_UINT_T 1
#endif /* HAVE_UINT_T */
Then, everything ok!
Following tools and libraries install in mingw64: flex, yacc, zlib, pthread, mpi
2. Modify the Makefile.inc
Based upon file Makfile.inc.i686_pc_mingw32, modify in follows
1) Add -Drestrict=__restrict into CFLAGS_DEF
2) Modify -lmpich2mt in LDFLAGS into -lmpicxx
3) Modify pthread library into what you have installed
3. Add following into common.h
#ifndef HAVE_STDINT_H
#define HAVE_STDINT_H 1
#endif /* HAVE_STDINT_H */
#ifndef HAVE_UINT_T
#define HAVE_UINT_T 1
#endif /* HAVE_UINT_T */
Then, everything ok!
订阅:
博文 (Atom)
VS Code下cmake, c++编译,调试环境的构成步骤
1 下载必须extension 按[Ctrl+Shift+X]打开extension窗口,选择安装"C/C++", "CMake", "CMake Tools" 2 在VSCode下打开作业目录 ...
-
学过连续体力学(包括固体力学,流体力学等)都知道应力张量是对称的(下面将说明它是有条件的)。 对于初学者, 这似乎有些难于理解, 如 http://forum.simwe.com/forum.php?mod=viewthread&tid=503234&hig...
-
1. 什么是体积锁死现象 图1 平面应变模型 在图1所示的又两个三角形单元组成的平面应变问题中,如果变形体材料是不可压缩的,那么我们不管在加载点施加多大的力,从有限元法计算得到的所有节点的所有位移都为零。因为任意位移都会导致 两个三角形中的一个的体积...
-
假设时间步i中的所有物理量X i 已知, 如果时间步i+1中的所有物理量X i+1 可以表为X i 的显函数 (1) X i+1 = F(X i ) (注;本文以下标i,i+1等表示时间步) 则该物理量X可以显式计算。而如果 (2) ...