找回密码
 注册
Simdroid-非首页
查看: 866|回复: 14

【讨论】初学子程序:coords(3)的问题!

[复制链接]
发表于 2003-11-21 10:12:50 | 显示全部楼层 |阅读模式 来自 江苏南京
在standard中,许多子程序中的参数都设计到从inp中提供的参数,比方说time参数是分析步的total time和current step time,这些还能看懂,不太清楚的就是coords这个参数,它在help中指的是An array containing the coordinates of this point. These are the current coordinates if geometric nonlinearity is accounted for during the step (see “Procedures: overview,” Section 6.1.1); otherwise, the array contains the original coordinates of the point.
其中的this point是指的哪个点?
比方说,我在dflux加载时,可以这样定义不均匀分布热载
*dflux,
set,s3nu,
这样由于nu的存在,它需要调用我提供的子程序,那么它传递的coords是指的什么点的坐标呢?set是指的一组受热载的单元。
搞不太清楚,子程序是新手,哪位大侠做过,帮忙解释一下!
发表于 2003-11-21 10:55:46 | 显示全部楼层 来自 台湾

回复: 【讨论】初学子程序:coords(3)的问题!

Simdroid开发平台
關於this point指的就是你定義的節點,
每個節點都有座標定義,若是三維的幾何模型,那麼節點就會有x,y,z三個座標,
所以相對應於副程式中的Coords Array,那麼它就是1x3的Array。
  
至於它其中說的geometry nonlinear需注意的事項,
是說一般若我們不考慮幾何非線性,那麼整個分析是屬於小變形,因為小變形所以忽略其位移量,
所以,在整個分析中導入副程式中的節點座標為原始定義座標,自始至終都是一樣。
  
但是,若整個分析為幾何非線性,那麼它會是大變形,所以其節點位移量就不可忽略。
如此一來,在分析時導入副程式中的節點座標,會隨分析過程中的變化將位移量考慮進去,不斷更新。
  
對於你的問題,它傳遞的就是set這單元組的所有節點座標。
  
BTW,chen兄上次提到的問題,我最近太忙還無法深入研究,請見諒!
 楼主| 发表于 2003-11-21 11:03:38 | 显示全部楼层 来自 江苏南京

回复: 回复: 【讨论】初学子程序:coords(3)的问题!

seansheu wrote:
關於this point指的就是你定義的節點,
每個節點都有座標定義,若是三維的幾何模型,那麼節點就會有x,y,z三個座標,
所以相對應於副程式中的Coords Array,那麼它就是1x3的Array。
  
至於它其中說的geometry nonlinear需注意的事項,
是說一般若我們不考慮幾何非線性,那麼整個分析是屬於小變形,因為小變形所以忽略其位移量,
所以,在整個分析中導入副程式中的節點座標為原始定義座標,自始至終都是一樣。
  
但是,若整個分析為幾何非線性,那麼它會是大變形,所以其節點位移量就不可忽略。
如此一來,在分析時導入副程式中的節點座標,會隨分析過程中的變化將位移量考慮進去,不斷更新。
  
對於你的問題,它傳遞的就是set這單元組的所有節點座標。
  
BTW,chen兄上次提到的問題,我最近太忙還無法深入研究,請見諒!

感谢seansheu老大,没关系,我说过, 以你们的工作为重,小弟的问题现已解决了一部分,就是计算速度还需要提高,也就是要改默认的收敛准则,可对这方面还不太清楚!
  
对于这个问题,我有点不太清楚的,那么你说是结点的坐标,那么三维单元有8个结点是不是全放进coords里了,那么在子程序调用的时候,我怎么知道是调用的哪个单元哪个结点的坐标呢?
  
我这有个高斯热源的DFLUX子程序,你看看,通过这个,实现了热源的移动,其中的a,b为特征半径,v为焊接速度你可以看看!
  SUBROUTINE DFLUX(FLUX,SOL,KSTEP,KINC,TIME,NOEL,NPT,COORDS,
     1 JLTYP,TEMP,PRESS,SNAME)
C
      INCLUDE 'ABA_PARAM.INC'
C
      DIMENSION FLUX(2),COORDS(3),time(2)
      CHARACTER*80 SNAME
     &nbspI=3.1415
  a=0.001
  b=0.001
  t=0.85
  U=21
      I=90  
  k=t*U*I/(PI*a*b)
  F=1.2
  v=0.0026
  hx=v*time(2)
  x=coords(1)-hx
  xx=x**2
  yy=(coords(2))**2
  flux(1)=k*f*exp(-f*((xx/a**2)+(yy/b**2)))
  RETURN
      END
 楼主| 发表于 2003-11-22 10:52:29 | 显示全部楼层 来自 江苏南京

回复: 【讨论】初学子程序:coords(3)的问题!

子程序功能就是实现在已定义的单元集里从first point开始(?),实现载荷移动,这里有一段原文,是讲这个程序的实现的,烦请老大再帮忙看看,这阵子就为这个犯愁了!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发表于 2003-11-22 14:14:51 | 显示全部楼层 来自 江苏南京

回复: 【讨论】初学子程序:coords(3)的问题!

上面的那个例子是个很好的讲的移动载荷实现的过程,大家可以研究一下,有什么心得可以讨论一下!
  
我等着大家的见解!
发表于 2003-12-27 21:26:57 | 显示全部楼层 来自 上海

回复: 【讨论】初学子程序:coords(3)的问题!

呵呵:
[iframe]http://www.aoxue.org/cgi-bin/bbs/topic_show.cgi?id=40743&h=1&bpg=4&age=0[/iframe]
发表于 2003-12-28 16:26:57 | 显示全部楼层 来自 安徽合肥

回复: 【讨论】初学子程序:coords(3)的问题!

dflux定义的热源是定义在单元积分点上的,this point指的是高斯积分点.你可以再用一个子程序,定义一个解相关变量,来输出定义的热源大小,这样再后处理中你就可以很清楚的看到.coords(3)是指的积分点的坐标吧,其实你要想看子程序是怎么调用的,你可以多定义些解相关的变量,用它们来判断某一时刻你调用的是哪个单元的,哪个积分点等等,而且这些都可以输出到后处理文件里面.你所说的载荷移动,实际上是定义的同一区域不同时刻的载荷分布来实现的.载荷的移动实现,也可以用noel,npt来判断的,比如,当到了某时刻的时候,你可以判断不同的单元定义不同的载荷.
 楼主| 发表于 2003-12-28 21:32:11 | 显示全部楼层 来自 江苏南京

回复: 回复: 【讨论】初学子程序:coords(3)的问题!

smarthere wrote:
dflux定义的热源是定义在单元积分点上的,this point指的是高斯积分点.你可以再用一个子程序,定义一个解相关变量,来输出定义的热源大小,这样再后处理中你就可以很清楚的看到.coords(3)是指的积分点的坐标吧,其实你要想看子程序是怎么调用的,你可以多定义些解相关的变量,用它们来判断某一时刻你调用的是哪个单元的,哪个积分点等等,而且这些都可以输出到后处理文件里面.你所说的载荷移动,实际上是定义的同一区域不同时刻的载荷分布来实现的.载荷的移动实现,也可以用noel,npt来判断的,比如,当到了某时刻的时候,你可以判断不同的单元定义不同的载荷.

  
哇,遇到大牛了!smarthere兄,有没有更详细一点的说明呢?例子也行!就重在看其他子程序变量调用的子程序,如何做呢?谢谢!另,你说用noel、npt来判断移动载荷,这句话如何解呢?恕小弟愚笨!
发表于 2003-12-30 11:23:20 | 显示全部楼层 来自 山东聊城

回复: 【讨论】初学子程序:coords(3)的问题!

To use more than one user-defined mechanical material model, the variable CMNAME can be tested for different material names inside user subroutine UMAT as illustrated below:
IF (CMNAME(1:4) .EQ. 'MAT1') THEN
   CALL UMAT_MAT1(argument_list)
ELSE IF(CMNAME(1:4) .EQ. 'MAT2') THEN
   CALL UMAT_MAT2(argument_list)
END IF
  UMAT_MAT1 and UMAT_MAT2 are the actual user material subroutines containing the constitutive material models for each material MAT1 and MAT2, respectively. Subroutine UMAT merely acts as a directory here. The argument list may be the same as that used in subroutine UMAT.
不知道这段对你有没有用,如果你需要用noel,npt来判断,我想这个也是可以实现的.当然还有其他的办法.
比如,你可以在你的子程序里面直接判断noel等,因为含有noel变量的子程序都是按照单元,积分点的序号来运行的,直到所有的执行完.就好比你定义了一个单元集,但是你只是需要里面某几个,或者有一定规律的几个单元在子程序里面有作用(这个在inp文件里面把单元选成相应集合也可做到),那么你在子程序里面就可以用noel来判断找出所需要的有规律的单元.
不知道我说的有没有道理,大家共同进步吧.有些时候你自己定义几个简单的子程序,运行简单的分析过程,你就会发现很多问题都明白了.
元旦快乐!
 楼主| 发表于 2003-12-30 13:44:37 | 显示全部楼层 来自 江苏南京

回复: 【讨论】初学子程序:coords(3)的问题!

谢谢smarthere兄(姐),你的意思小弟明白了!这就回去看看noel/npt方面的说明去!,它们的解释偶明白,noel是指的调用此子程序时的单元号、npt则是此单元的积分点号,现在不太清楚的是怎么能够在子程序里去调用它们,以及如何就你前面所说的将我这个当前子程序调用时单元号及积分点号能输出来?
还需要你来指点!
多谢!
元旦快乐!
发表于 2003-12-30 16:22:25 | 显示全部楼层 来自 安徽合肥

回复: 【讨论】初学子程序:coords(3)的问题!

仿照上面的提示:
sub aaa(***)  
if (noel.eq.'needed'.and.npt.eq.'needed') then
call aaa1(***)
write(6/7,*),noel,npt,
endif
end
sub aaa1(***)
****
***
end
其中write语句中6表示输入到dat文件.7表示输入到显示屏.
 楼主| 发表于 2003-12-30 16:41:26 | 显示全部楼层 来自 江苏南京

回复: 【讨论】初学子程序:coords(3)的问题!

非常感谢smarthere,这个问题明白了!细节问题小弟回去好好看看!
发表于 2006-7-4 21:43:00 | 显示全部楼层 来自 湖北武汉
请问chenchu等大侠,上面的子程序dflux实现载荷的移动,在inp中怎么调用呢?我的意思是,加载单元集与初始加载点的区分。以及载荷步的时间设置也会有讲究的吧?盼望指点,万分感谢!!!
发表于 2015-3-27 16:34:42 | 显示全部楼层 来自 河北秦皇岛
非常不错,受教了。。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-1 23:44 , Processed in 0.055214 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表