24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1755  |  回复: 1

xiaobu931224

新虫 (初入文坛)

[求助] oommf软件,Fe基纳米晶软磁合金磁化曲线磁滞回线仿真,微观模型建立求助

Fe基纳米晶软磁合金磁化曲线磁滞回线仿真遇到了困难,磁滞回线的矩形比超过了80%?不知道怎么调整了? 初始磁化状态是设置成了random,纳米晶粒设置的是立方各向异性,方向为(1 0 0),(0 1 0),但文献中的是晶粒取向随机分布。非晶相认为不存在磁晶各向异性,这样设置,反磁化过程剩磁很大,磁滞回线接近磁矩材料。附上程序
# MIF 2.1
# MIF Example File: jingtaitexing.mif
# Description: Simulation of an array of spherical particles.
#
set pi [expr {4*atan(1.0)}]
set mu0 [expr {4*$pi*1e-7}]


RandomSeed 1


Parameter ball_radius 5e-9 ;# meters


Parameter ball_x_offset 5e-9 ;# meters
Parameter ball_y_offset 5e-9
Parameter ball_z_offset 5e-9


Parameter ball_x_spacing 10e-9 ;# meters
Parameter ball_y_spacing 10e-9
Parameter ball_z_spacing 10e-9


Parameter cellsize 5e-9 ;# meters


Parameter P1 0
Parameter P2 1


proc SphereGrid { x y z } {
global ball_radius
global ball_x_offset ball_y_offset ball_z_offset
global ball_x_spacing ball_y_spacing ball_z_spacing
global P1 P2
# Determine position relative to grid
set x [expr {fmod(abs($x-$ball_x_offset),$ball_x_spacing)}]
if {2*$x>$ball_x_spacing} {set x [expr {$ball_x_spacing-$x}]}
set y [expr {fmod(abs($y-$ball_y_offset),$ball_y_spacing)}]
if {2*$y>$ball_y_spacing} {set y [expr {$ball_y_spacing-$y}]}
set z [expr {fmod(abs($z-$ball_z_offset),$ball_z_spacing)}]
if {2*$z>$ball_z_spacing} {set z [expr {$ball_z_spacing-$z}]}


set radsq [expr {$x*$x+$y*$y+$z*$z}]
set index1 [expr {$P1+1}]
set index2 [expr {$P2+1}]
if {$radsq>$ball_radius*$ball_radius} {
return $index2
}
return $index1
}


# Atlas
Specify Oxs_ScriptAtlas:atlas [subst {
xrange {0 250e-9}
yrange {0 250e-9}
zrange {0 250e-9}
regions { bccFe Amor}
script SphereGrid
script_args rawpt
}]


Specify Oxs_RectangularMesh:mesh [subst {
cellsize {$cellsize $cellsize $cellsize}
atlas :atlas
}]


Specify Oxs_Exchange6Ngbr {
atlas :atlas
A {
bccFe bccFe 10e-11
bccFe Amor 7.75e-12
Amor Amor 6e-12
}
}


Specify Oxs_UniaxialAnisotropy:Amor [subst {
K1 { Oxs_AtlasScalarField {
atlas :atlas
values {
bccFe 0
Amor 1e5
}
}}
axis { Oxs_RandomVectorField {
min_norm 1.0
max_norm 1.0
}}
}]


Specify Oxs_PlaneRandomVectorField:axis1 [subst {
min_norm 1.0
max_norm 1.0
plane_normal {0 0 1}
cache_grid :mesh
}]


Specify Oxs_CubicAnisotropy:bccFe [subst {
K1 { Oxs_AtlasScalarField {
atlas :atlas
values {
bccFe 8e3
Amor 0
}
}}
axis1 :axis1
axis2 { Oxs_PlaneRandomVectorField {
min_norm 1.0
max_norm 1.0
plane_normal :axis1
cache_grid :mesh
}}
}]


Specify Oxs_UZeeman [subst {
multiplier [expr {0.001/$mu0}]
Hrange {
{ 0 0 0 4000 0 0 400 }
{ 4000 0 0 -4000 0 0 800 }
{-4000 0 0 4000 0 0 800 }
}
}]


Specify Oxs_Demag {}


Specify Oxs_CGEvolve {
gradient_reset_angle 80
gradient_reset_count 50
energy_precision 1e-3
}


Specify Oxs_MinDriver [subst {
evolver Oxs_CGEvolve
stopping_mxHxm 0.1
mesh :mesh
normalize_aveM_output 0
Ms { Oxs_AtlasScalarField {
atlas :atlas
values {
bccFe 10.3e5
Amor 9.2e5
}
}}
m0 { Oxs_RandomVectorField {
min_norm 1.0
max_norm 1.0
}}
}]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

feng7118

新虫 (初入文坛)

程序中的proc表示什么意思?
2楼2020-09-26 15:22:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xiaobu931224 的主题更新
信息提示
请填处理意见