- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
牛顿-拉弗逊法求解非线性问题迭代过程的简单程序例子.doc
牛顿-拉弗逊法求解非线性问题迭代过程的简单程序例子C 一个牛顿-拉弗逊法求解非线性问题迭代过程的简单程序例子 可以进行荷载步长自动调整 读者可参考该模块加入相应的子程序编制自己的非线性计算程序module Main_Iteration
use TypeDef ! 数据结构定义模块
use Data_Input ! 数据输入模块
use Data_Output ! 数据输出模块
use Elem_Prop ! 单元属性模块
use MatSolve ! 矩阵求解模块
implicit none
contains
subroutine RC2D_Main()
type(typ_GValue) :: GValue !总体控制变量数据结构数组
type(typ_Node),pointer :: Node(:) !节点数据结构数组
type(typ_Elem),pointer :: Elem(:) !混凝土单元数据结构数组
type(typ_Rebar),pointer :: Rebar(:) !钢筋单元数据结构数组
type(typ_Load),pointer :: Load(:) !荷载数据结构数组
type(typ_Load),pointer :: Initial_Load(:) !初始荷载
type(typ_Material),pointer :: Material(:) !材料数据结构数组
type(typ_Support),pointer :: Support(:) !支座数据结构数组
call DataInput(GValue,Node,Elem,Rebar,Material,Load,Support,
Initial_Load) !读入数据
call Iteration(GValue,Node,Elem,Rebar,Load,Support,Initial_Load) !迭代核心程序
call DataOutput(GValue,Node,Elem,Rebar,Material,Load,Support) !输出数据
write(*,*) 计算成功结束
read(*,*)
deallocate(node)
deallocate(Elem)
deallocate(Rebar)
deallocate(Load)
deallocate(Support)
return
end subroutine
subroutine Iteration(GValue0,Node0,Elem0,Rebar0,Load0,Support0,Initial_Load0)
type(typ_GValue) :: GValue0
type(typ_Node) :: Node0(:)
type(typ_Elem) :: Elem0(:)
type(typ_Rebar) :: Rebar0(:)
type(typ_Load):: Load0(:)
type(typ_Load):: Initial_Load0(:)
type(typ_Support) :: Support0(:)
type(typ_GValue) :: GValue
type(typ_Node) :: Node(GValue0%NNode)
type(typ_Elem) :: Elem(GValue0%NElem)
type(typ_Rebar) :: Rebar(GValue0%NRebar)
type(typ_Load):: Load(GValue0%NLoad)
type(typ_Load):: Initial_Load(GValue0%NInitial_Load)
type(typ_Support) :: Support(GValue0%NSupport)
Integer(ikind) :: I,J,II,III
GValue=GValue0
GValue%FinishedStep=0
II=1 !开始计算加载步数
LOOP_A: do
write(*,*) =======================================================
write(*,*) Step,II,总加载步数,GValue%NStep
write(*,*) 完成,(GValue%FinishedStep)/real(GValue%NStep)*100.0,%
!对数据进行备份,在荷载步调整操作时恢复上一步的参数
do I=1,GValue%NNode; Node(I)=Node0(I); end do
do I=1,GValue%NElem; Elem(I)=Elem0(I); end do
do I=1,GValue%NRebar; Rebar(I)=Rebar
文档评论(0)