3 Star 0 Fork 1

ela/Ela

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
Res.jl 2.51 KB
一键复制 编辑 原始数据 按行查看 历史
ela 提交于 2015-01-03 22:41 . 增加Ele文件夹用于存放单元文件
module Res
importall Mat, Geo, Sec, Ele, Bc, Ela
export Result,
FieldResult, HistResult,
NodeResult, EigenResult,
setDomain, printResult, saveResult
abstract Result
abstract FieldResult <: Result
abstract HistResult <: Result
type EigenResult <: FieldResult
domain::Domain
order::Int64
omega::Float64
freq::Float64
modalShape::Vector{Float64}
function EigenResult(domain::Domain,order::Int64)
omega = 1.0
freq = 1.0
modalShape = zeros(domain.nActiveDof)
return new(domain,order,omega,freq,modalShape)
end
end
function setDomain(res::EigenResult)
res.domain.linalgsys.dU = res.modalShape
getSolution(res.domain)
end
function printResult(res::EigenResult)
v1,v2,v3 = res.order,res.omega,res.freq
@printf("%8d %12.6f %12.6f\n",v1,v2,v3)
end
function saveResult(res::FieldResult,fmt::String="gmsh")
if fmt == "gmsh"
writeGmsh(res)
else
nothing
end
end
function writeGmsh(res::EigenResult)
filename = "$(res.domain.name)_modal_$(res.order).msh"
file = open(filename,"w")
setDomain(res)
gmshHead = "\$MeshFormat\r\n2.8 0 8\r\n\$EndMeshFormat\r\n"
write(file,gmshHead)
write(file,"\$NodeData\r\n")
write(file,"1\r\n\"Mode $(res.order), freq = $(res.freq) Hz\"\r\n")
write(file,"1\r\n$(res.order)\r\n")
write(file,"3\r\n0\r\n3\r\n$(res.domain.nNode)\r\n")
for node in values(res.domain.Nodes)
u1 = node.disp[1]
u2 = node.disp[2]
if res.domain.dim == 3
u3 = node.disp[3]
else
u3 = 0.0
end
write(file,"$(node.tag) $u1 $u2 $u3\r\n")
end
write(file,"\$EndNodeData\r\n")
close(file)
end
type NodeResult <: HistResult
domain::Domain
node::Node
fieldTag::Int64
dofTag::Int64
value::Vector{Float64}
NodeResult(domain::Domain,nodeTag::Int64,fieldTag::Int64,dofTag::Int64) = new(domain,domain.node[nodeTag],fieldTag,dofTag,Float64[])
end
function appendResult(res::NodeResult)
if res.fieldTag == 1
push!(res.value,res.node.disp[res.dofTag])
elseif res.fieldTag == 2
push!(res.value,res.node.react[res.dofTag])
end
end
function +(res1::HistResult,res2::HistResult)
res = deepcopy(res1)
res.value = res1.value.+res2.value
return res
end
function -(res1::HistResult,res2::HistResult)
res = deepcopy(res1)
res.value = res1.value.-res2.value
return res
end
function len(res::HistResult)
return length(res.value)
end
end
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Julia
1
https://gitee.com/ela/Ela.git
git@gitee.com:ela/Ela.git
ela
Ela
Ela
master

搜索帮助

23e8dbc6 1850385 7e0993f3 1850385