用户登录

你在这里

如何在vumat中获得元素号

嗨,,

我正在写一个vumat代码。我想知道如何得到vumat中当前材质点的元素号。如你所知,我们可以从诺埃尔那里知道。但是在虚拟世界中,如何获得它呢?

谢谢

评论

你好,小王,

我有一些关于如何在VUMAT中获得元素号的信息:很酷的

从VUMAT中获取元素号和材料积分号
--------------------------------------------------------------------------------

从v6.4开始,以下信息被传递给(并且可以
访问自)VUMAT:
元素数量,
综合站号;
层(或段)号;
积分点数。

为了保持向后兼容性,VUMAT的接口没有被修改
修改。但是,VUMAT现在使用指向数组的指针调用
整数作为第一个参数,在nblock的通常位置。第一个
组件的数组包含nblock,它确保所有元素都存在
vumat将继续工作。数组的其余部分包含所有其他
相关的信息。为了提取额外的信息
数组,我们建议遵循下面的示例,它是
自解释的。

--------------------------------------------------------------------------------

c
c用户子程序VUMAT
子程序vumat (
c只读-
* jblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal,
* stepTime, totalTime, dt, cmname, coordMp, charLength,
* props, density, strain, relspin,
* tempOld, stretchOld, defgradOld, fieldOld,
* stressOld, statold, enerInternOld, enerInelasOld,
* tempNew, stretchNew, defgradNew, fieldNew,
c只写—
*压力新,statennew, enerInternNew, enerInelasNew
c
包括“vabua_param.inc”
c
尺寸jblock(*), props(nprops),density(*), coordMp(*),
1 charLength(*), strain (*),
2 relSpinInc(*), tempOld(*),
3 stretchOld (*),
4 defgradOld (*),
5 . fieldOld(*), stressOld(*),
6 statold (*), enerinterold (*),
7 . enerInelasOld(*), tempNew(*),
8 stretchNew (*),
9 defgradNew (*),
1 fieldNew (*),
2 . stressNew(*), statennew (*),
3 enerinternew (*), enerInelasNew(*)
c
字符* 80 cmname

参数(

* i_umt_nblock = 1,


* i_umt_npt = 2;


* i_umt_layer = 3,


* i_umt_kspt = 4,


* i_umt_noel = 5)

调用vumatXtrArg (jblock(i_umt_nblock),
* ndir, nshr, nstatev, nfieldv, nprops, lanneal,
* stepTime, totalTime, dt, cmname, coordMp, charLength,
* props, density, strain, relspin,
* tempOld, stretchOld, defgradOld, fieldOld,
* stressOld, statold, enerInternOld, enerInelasOld,
* tempNew, stretchNew, defgradNew, fieldNew,
* * stressNew, statennew, enerInternNew, enerInelasNew,
* jblock(i_umt_noel), jblock(i_umt_npt),
* jblock(i_umt_layer), jblock(i_umt_kspt)

返回
结束

c
子程序vumatxtrg (
c只读-
* nblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal,
* stepTime, totalTime, dt, cmname, coordMp, charLength,
* props, density, strain, relspin,
* tempOld, stretchOld, defgradOld, fieldOld,
* stressOld, statold, enerInternOld, enerInelasOld,
* tempNew, stretchNew, defgradNew, fieldNew,
c只写—
* * stressNew, statennew, enerInternNew, enerInelasNew,
c只读额外参数-
* nElement, nMatPoint, nLayer, nSecPoint)
包括“vaba_param.inc”
c
尺寸props(nprops),密度(nblock),坐标mp (nblock,*),
1 charLength(nblock), strain (nblock,ndir+nshr),
2 . relSpinInc(nblock,nshr), tempOld(nblock),
3 stretchOld (nblock ndir + nshr)
4 defgradOld (nblock ndir + nshr + nshr),
5 . fieldOld(nblock,nfieldv), stressOld(nblock,ndir+nshr),
6 statold (nblock,nstatev), enerinterold (nblock),
7 . enerInelasOld(nblock), tempNew(nblock),
8 stretchNew (nblock ndir + nshr)
9 defgradNew (nblock, ndir + nshr + nshr),
1 fieldNew (nblock nfieldv),
2 . statennew (nblock,ndir+nshr), statennew (nblock,nstatev),
3 enerinternew (nblock), enerInelasNew(nblock)
c
c额外参数的文档:
nElement:内部元素编号的数组
维nElement (nblock)
c nMatPoint:积分点编号
c nLayer:复合壳和层状固体的层数
c nSecPoint:当前层内的Section点数
c
字符* 80 cmname
c
km = 1, nblock吗
c
c用户编码…
c
最后做

返回
结束

问候,

马丁·j·格罗斯

马丁·j·格罗斯

谢谢。你给我的代码可以正常工作,谢谢

最好的问候,

王医生

你好,

有人能多告诉我一些吗?我试图在塑性应变非局部平均的背景下使用它。但是在子程序vumatXtrarg中访问元素和积分点数字似乎并不那么容易……

谢谢

乔纳森

亲爱的毛,

我采用了你建议的结构;然而,我在日志文件中得到一个错误,像这样:

vumat-edit.for(5):错误#5082:语法错误,当期望:*)时发现end - statement

子程序vumat (

------------------------------------------------------------------^

vumat-edit.for(7): error #5082:语法错误,当期望

* jblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal,

- ^

vumat-edit.for(7): error #5082:语法错误,发现end - statement时期望:(

* jblock, ndir, nshr, nstatev, nfieldv, nprops, lanneal,

----------------------------------------------------------------------^

vumat-edit.for(8): error #5082:语法错误,当期望

* stepTime, totalTime, dt, cmname, coordMp, charLength,

- ^

vumat-edit.for(8):错误#5082:语法错误,当期望:%FILL 时发现end - statement

* stepTime, totalTime, dt, cmname, coordMp, charLength,

---------------------------------------------------------------------^

vumat-edit.for(9): error #5082:语法错误,当期望

* props, density, strain, relspin,

- ^

vumat-edit.for(9):错误#5082:语法错误,当期望:%FILL 时发现end - statement

* props, density, strain, relspin,

------------------------------------------------------^

vumat-edit.for(10): error #5082:语法错误,当期望

* tempOld, stretchOld, defgradOld, fieldOld,

- ^

vumat-edit.for(10):错误#5082:语法错误,当期望:%FILL 时发现end - statement

* tempOld, stretchOld, defgradOld, fieldOld,

----------------------------------------------------------^

vumat-edit.for(11): error #5082:语法错误,当期望

* stressOld, statold, enerInternOld, enerInelasOld,

- ^

vumat-edit.for(11):错误#5082:语法错误,当期望:%FILL 时发现end - statement

* stressOld, statold, enerInternOld, enerInelasOld,

------------------------------------------------------------------^

vumat-edit.for(12): error #5082:语法错误,当期望

* tempNew, stretchNew, defgradNew, fieldNew,

- ^

vumat-edit.for(12):错误#5082:语法错误,当期望:%FILL 时发现end - statement

* tempNew, stretchNew, defgradNew, fieldNew,

----------------------------------------------------------^

vumat-edit.for(14):错误#5276:圆括号不平衡

*压力新,statennew, enerInternNew, enerInelasNew

-------------------------------------------------------------------^

vumat-edit.for(14): error #5082:语法错误,当期望

*压力新,statennew, enerInternNew, enerInelasNew

- ^

vumat-edit.for(14): error #5082:语法错误,当期望:(*,< end - statement >;[/ = =>]

*压力新,statennew, enerInternNew, enerInelasNew

-------------------------------------------------------------------^

vumat-edit.for(38):错误#5082:语法错误,当期望之一时发现end - statement

参数(

-----------------------------------------------------------^

vumat-edit.for(39): error #5082:语法错误,当期望

*i_umt_nblock = 1,

- ^

vumat-edit.for(39):错误#5082:语法错误,发现end - statement时期望:(

*i_umt_nblock = 1,

---------------------------------^

vumat-edit.for(40): error #5082:语法错误,当期望

*i_umt_npt = 2;

- ^

vumat-edit.for(40):错误#5082:语法错误,发现end - statement时期望:(

*i_umt_npt = 2;

------------------------------^

vumat-edit.for(41): error #5082:语法错误,当期望

* i_umt_layer = 3,

似乎所有行首带有“*”的行都会产生错误。你知道我怎样才能克服这个问题吗?

谢谢,

Ozan

订阅评论查看“如何在vumat中获取元素号”。

最近的评论

更多的评论

辛迪加

认购辛迪加