PETSc工具箱(简介、安装、程序设计)_第1页
PETSc工具箱(简介、安装、程序设计)_第2页
PETSc工具箱(简介、安装、程序设计)_第3页
PETSc工具箱(简介、安装、程序设计)_第4页
PETSc工具箱(简介、安装、程序设计)_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于PETSc的有限元并行程序设计可移植可扩展科学计算工具箱PETSc(Portable,ExtensibleToolkitforScientificComputation)并行有限元求解程序背景:1、计算规模日益增大而计算资源不足!2、编写并行的有限元程序难度很大!1、PETSc工具箱简介3、基于PETSc的有限元求解程序设计2、PETSc程序示例主要内容1、PETSc工具箱简介:工具箱结构MatVecBlasLapackMPIKSPSNESTS求解器组件底层用户开发平台数据结构组件1、PETSc是系列数据结构和功能子程序的集合。2、PETSc提供了高层的程序开发平台!分布式的数据结构高效的并行求解器矩阵Mat向量Vec非线性求解器SNES时间步进求解器TS线性求解器KSP1、PETSc工具箱简介1、PETSc工具箱简介:工具箱结构1、PETSc工具箱简介:下载与编译主页:/petsc/petsc-as/Download:源码(petsc-3.4.4.tar.gz)可调用的库文件(包括头文件)编译cygwin,winfe,cl...用户编程PETSc功能

调用将库文件(.lib文件)和头文件添加到用户的配置中,主要有以下内容:1、MPI的头文件和库文件MPICH2_DIR/includeMPICH2_DIR/lib(mpi.lib)2、线性代数运算库(Blas&Lapack)(libf2cblas.lib、libf2clapack.lib)3、PETSc的库文件和头文件petsc-3.2-p7\includepetsc-3.2-p7\arch-mswin-c-debug\includepetsc-3.2-p7\arch-mswin-c-debug\lib(libpetsc.lib)注:

由于链接库冲突,通常需要禁用LIBCMT.lib。1、PETSc工具箱简介:一种Windows下PETSc静态库调用2、PETSc程序示例:运行1、SolveLinearSystem.cpp程序PetscInitialize(&argc,&args,(char*)0,help);功能类似于MPI_Init(&argc,&argv)形成PETSc的数据结构(Mat&Vec)调用PETSc解法器求解(KSP/SNES/TS)PetscFinalize(void);功能类似于MPI_Finalize()并行的数据结构(Mat&Vec)1、省去的存储的细节,尤其是在分布式计算中。2、提供了运算函数,如MatMult(A,x,y)。大量的成熟的方程组并行解法,包括直接法,迭代法和预条件子!2、PETSc程序示例:程序结构1、声明。2、创建。3、设置(赋值)。4、使用。5、释放。矩阵Mat声明:MatA;创建:MatCreate(A…);设置(赋值):MatSet…(A…);聚集:VecAssembly…(A…);使用:如KSP调用;释放:MatDestroy(&A);向量Vec声明:Vecx;创建:VecCreate(x…);设置(赋值):VecSet…(x…);聚集:VecAssembly…(x…);使用:如KSP调用;释放:VecDestroy(&x);线性解法器KSP声明:KSPksp;创建:KSPCreate(ksp…);设置:KSPSet…(ksp…);使用:KSPSolve(ksp…);释放:KSPDestroy(&ksp);2、PETSc程序示例:组件的使用程序1、”ierr=“和CHKERRQ(ierr)函数;

petsc的错误跟踪,记录下可能出错的函数和错误原因。2、MatSetValue&VecSetValue(MatSetValues&VecSetValues)MatSetValue(A,i,j,v,ADD_VALUES);VecSetValue(x,i,v,ADD_VALUES);

为矩阵(向量)赋值。赋值模式:INSERT_VALUE替换

ADD_VALUDE叠加

并行程序中,只要处理器指定其整体行列号即可完成操作,而不必关心该元素是否在本处理器上。2、PETSc程序示例:几个PETSc函数在编译成可执行文件后(**.exe)后,仍能改变程序中的设置。(程序中的预置)如:-mat_view将矩阵打印于屏幕(aij格式)

-mat_view_info将矩阵信息打印于屏幕

-ksp_view

显示迭代法求解器的信息-ksp_typefgmres将迭代方法改为fgmres2、PETSc程序示例:运行时选项(Runningoption)基本所有函数的解释目录:petsc-3.3-p5\docs\manualpagesPETSc组件的使用示例目录:petsc-3.3-p5\src如KSP组件:petsc-3.3-p5\src\ksp\ksp\examples\testsPETSc用户文档目录:petsc-3.3-p5\src\docs\manual.pdf2、PETSc程序示例:帮助文档线弹性有限元的求解部分归结为解线性方程组:[K]{δ}={P}3、基于PETSc的有限元求解程序设计:一种思路矩阵[A]和向量{p}与{δ}求解方程组Ax=bPETSc的数据结构:Mat———矩阵Vec———向量PETSc的求解器组件KSP———解线性方程组1、线弹性有限元程序的一般步骤:前处理建模,形成网格信息包括:单元信息节点信息材料信息约束信息荷载信息单元分析整体分析组装总刚矩阵[K]for(ie=0;ie<NE;ie++){单刚计算;将单刚叠加至总刚}边界条件修改方程“置大数法”“划行划列”求解支配方程组:[K]{δ}={p}大型线性方程组后处理输出:位移云图应力云图...3、基于PETSc的有限元求解程序设计:有限元流程前处理单元分析整体分析组装总刚矩阵[K]边界条件修改方程求解支配方程组:[K]{δ}={p}后处理进程1进程0进程0求解支配方程组:[K]{δ}={p}求解支配方程组:[K]{δ}={p}单元分析整体分析组装总刚矩阵[K]单元分析整体分析组装总刚矩阵[K]3、基于PETSc的有限元求解程序设计:一种并行方法1、一种线弹性有限元程序并行化方法前处理单元分析整体分析组装总刚矩阵[K]边界处理求解支配方程组:[K]{u}={p}后处理1、提供成熟高效的方程组求解程序2、存储总刚的矩阵结构Mat和存储列阵的向量结构Vec分布式计算环境下!3、基于PETSc的有限元求解程序设计:一种并行方法网格信息PETSc求解器求解(KSP)输出位移形成方程组的系数矩阵[K]和右端项{P}(PETSc)边界处理修改方程3、基于PETSc的有限元求解程序设计:流程类似于数组空间动态分配程序一、输入网格信息(代替前处理)节点信息NLIST.DAT单元信息ELIST.DAT材料信息NLIST.DAT受约束信息NLIST.DAT节点力信息NLIST.DAT3、基于PETSc的有限元求解程序设计:输入ZFSolver:3、基于PETSc的有限元求解程序设计:分析主要过程分析:网格信息PETSc求解器求解(KSP)输出位移形成方程组的系数矩阵[K]和右端项{P}(PETSc)边界处理修改方程1、总刚矩阵[K]存储预分配2、单刚计算及组集总刚(并行环境下)3、总刚方程求解(迭代方法)4、边界修改(置“大数”法)1、矩阵的种类(Dense&Sparse)2、稀疏矩阵的预分配空间(类似于数组存储空间的动态分配)。对于大型稀疏矩阵的聚集效率至关重要。3、提供预分配参数MatMPIAIJSetPreallocation(MatB,PetscIntd_nz,constPetscIntd_nnz[],PetscInto_nz,constPetscInto_nnz[])4、做法:对角矩阵和非矩阵对角的划分存储预分配参数:若每行非零元素个数基本一样,给出两个常数(d_nz,o_nz)若精确存储预分配,给出两个整形数组(d_nnz[],o_nnz[])一、预分配矩阵存储3、基于PETSc的有限元求解程序设计:过程分析

STLVector容器每个处理器均遍历网格,按照节点号的划分统计出对应部分的共单元的节点,并相应的作自由度扩展。并行矩阵的预分配:计算出每行对应部分非零元素数目。在有限元中总刚矩阵中,只有共单元的才会对其有刚度贡献。一、预分配矩阵存储有限元总刚矩阵:高度稀疏、对称,需要预分配找出节点的共单元关系3、基于PETSc的有限元求解程序设计:过程分析1、找出所有节点的共单元关系

for(intie=0;ie<NE;ie++)//所以单元循环

{

for(intid=0;id<4;id++)//处理与节点id共单元ie的节点

{

for(intjd=0;jd<4;jd++)

{………}

}

}

2、去重,排序、统计

3、自由度扩展

4、得到预分配需要数组

以平面三个四边形单元为例。二、单刚计算及组集总刚:每个单元循环{Ele3D8N(EleCoor,iE,iMu,iDense,EK,RE);

//计算单刚Ke;MatSetValues(K,8,id,8,jd,EK,ADD_VALUES);

//Ke叠加至总刚;

}25/共33页三、总刚方程的求解对于已经赋值完毕的矩阵[K]和向量[p]就可以调用PETSc方程求解器进行求解。26/共33页置“大数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论