1、Marc使用心得 1 换名另存 File-——Save as下“SELEXTION”下输入新名,例如“12233”: 2 单位使用 长度:m 质量:kg 荷载:kN 3 Exit number Exit number 在Volume A: Theory and User Information 查 4 Initial Loads 注意。 为什么? 5 纤维单元设置 几何尺寸设置,选择“solid section beam”,注意方向,在“Vector”中设置。 6 Marc中快速生成曲线和拷贝曲线数据 利用table中copy to 将Ma
2、rc生成的曲线拷贝到剪贴板,到excel中粘贴;利用table中“clipboard”中copy from可以将剪贴板数据拷贝到Mrac中。 7 分层壳中关于钢筋的实现 采用“弥散钢筋模型”,对于纵横向配筋率相同的墙体,可设为各向同性钢筋层;对于纵横向配筋率相同的墙体,可分别设置不同材料主轴方向的正交各向异性的钢筋层来模拟。 对于连梁、暗柱等特殊构件,可采用“离散钢筋模型”,采用 “Inserts”功能直接嵌入。 8 关于纤维截面生成 通过陆老师提供的“THUFIBER_PRE.exe”软件输入一次截面,生成一个截面信息文件“matcode0.txt”,将生成参数拷贝到“
3、matcode.txt”中对应位置。 注意:(1)截面的局部坐标方向不能搞错; (2)matcode中的截面顺序必须与Marc输入的截面顺序保持一致。 Element 52 9 Marc中选择显示 见:Select—→Visible Sets 10 弹塑性时程分析中阻尼的设置 《陆》:结构的阻尼既与质量也与刚度有关(例如瑞雷阻尼),这里仅介绍一种最为简单的阻尼取法:假设结构的阻尼为质量比例型,结构各阶振型阻尼比相同,例如钢筋混凝土结构。可取阻尼比ξ=0.05,则结构的质量阻尼系数可按:2ξ·f1·2π来计算得到。f1为结构的第一周期对应的频率值。 11
4、关于纤维梁单元(Element 52)的局部坐标设置 单元库原文:Local x and y are the principal axes of the cross section. Local z is along the beam axis (Figure 3-72). The local x-axis is normal to the beam axis. The local z-axis goes from node 1 to node 2, and the local y-axis forms a right-handed set with local x and z. 翻
5、译:局部坐标x、y轴为横截面主轴方向,z轴为梁的轴线方向。局部坐标x轴是垂直于梁轴线(即z轴),z轴为节点1到节点2方向,局部坐标y轴由x、z轴根据右手准则确定。 实质是对局部坐标系y轴进行设置,即根据右手准则对x、z确定。 《陆》P156:取梁单元的局部坐标系x轴为垂直向上,与整体坐标系的z轴平行,所以局部坐标系x轴的矢量方向为(0 0 1);取柱单元的局部坐标系x轴为与整体坐标系的x轴平行,所以局部坐标系x轴的矢量方向为(1 0 0)。根据局部坐标系x轴方向,故有如下设置: 梁250*500,整体坐标下x轴向尺寸为0.5;整体坐标下y轴向尺寸为0.25; 柱300*40
6、0,整体坐标下x轴向尺寸为0.4;整体坐标下y轴向尺寸为0.30。 12 关于sweep 对nodes,elements等均进行扫描,同时要删除unused nodes。 14 Excel中关于绝对引用 Z$10为绝对引用,就是在你拉公式时,不论直拉或横拉,都把第10行给固定住,就像你不固定$10时,你向下拉时会变成Z11、Z12、Z13....固定住以后,就都是Z10了,同理也可以设置成$Z$10,这样的话,不论你怎么拉都会是Z10这个单元格。 15 收敛准则 单选残余应力residuals的收敛效果不好时,可选用残余应力+位移,即“residuals and disp
7、lacement”双重标准来控制。 参数指标选0.01即可满足精度要求。 16 加载PROC文件 UTILS_PROCEDURES_LOAD_START/CONT 注意“CREATE”为创建 17 生成“matcode.txt”文件 UTILS_MRAC INPUT FILE_WRITE 18 纤维梁轴线偏移 19 关于框架梁建模的讨论 纤维梁模型:优点非线性能力强,缺点自己不能开发。 分层壳模型:优点建模简单,缺点非线性能力差。 20关于分层壳中竖向、水平向配筋率不同的建模 若配筋率相同,则按一层钢板,各向同性建模考虑‘ 若配筋率不同,则按二层钢板,
8、一竖向,一横向,各向异性建模考虑,同时材料属性仅输入材料受力向,而对于其它2个方向简单的输入很小的数值即可。 21 Mrac无法连接计算原因 因为文件名和文件夹中存在Mrac无法识别的字符,例如:中文、空格。 名字太长也不行。 22 分层壳的划分数量 按奇数划分,这样数值计算的积分点将落在每一层上,有利于计算结果精度。 23 Marc批处理程序应用 可一次性对不同工况下的JOB文件进行批量计算,例如:IDA分析。具体步骤如下: (1)Marc程序中建立某计算工况,在Run中选择“ADVANCED JOB SUBMISSION→WRITE INPUT FILE”生成例如:“wal
9、l_4_200_grortcore_push.dat”文件。 (2)在批处理程序中编辑下列语句: 例1: F:\marc\Marwan-wall **注释:需进行批处理运算文件所在的文件夹 call run_marc -job wall_4_200_push.dat -b no **注释:调用各工况名称 call run_marc -job wall_4_200_grortcore_push.dat -b no 例2: run_marc -prog TECS_02_Z15_KOBE_N_3.0 -job z15_half_brace_0103_Collapse -np 12 -b
10、 no np 12 表示利用12核的并行计算,一般家用电脑不考虑。 注意:批处理文件除确定执行外,千万不要双击打开,否则将导致大量计算运行。编辑时一定是右键选择“编辑”。 24 影响Marc分层壳计算收敛性影响因素 (1)越接近截面中心的材料影响越大,特别是下降段。 (2)单元大小,不宜太小。 25 有限元分析结果与试验结果误差分析及解决方案 (1)初始刚度偏大 调整:材料的弹性模量 (2)初始屈服点偏高 调整:钢筋及灌芯混凝土峰值强度。 26 骨架曲线数值模拟误差分析 钢筋混凝土剪力墙骨架曲线的上升段(屈服点之前)取决于混凝土的本构
11、下降段则取决于钢筋的本构;滞回曲线的饱满及滑移程度取决于钢筋本构。 27 往复试验数值模拟的收敛问题 这个没有固定的方法,一般都是自己慢慢调整。比如收敛准则用成力和位移两个控制;修改材料本构,然后把那个压碎应变设置成很大。或者把那个强制收敛打开。 28 Marc程序计算收敛性讨论 (1)Any material model in which the tangent stiffness is zero or negative will often cause convergence problems。 翻译:材料模型切线刚度为0或小于0,将经常导致程序不收敛。 所以,实际操作中
12、往往将材料模型切线刚度为0的模型近似处理为向上一点,使得K为一个较小的正数。 29 Marc程序划分单元大小对计算结果的影响 以下图为例,大单元(200)收敛性好,但计算结果明显低于小单元(100);小单元(100)与之相反。 30 TECS 程序使用注意 (1)改程序仅适用于Beam52号单元,对98号单元不适用。 (2)运行marc时,应对其生成的debug.txt进行检查,检查内容包括:a. 纤维梁单元设置是否正确;b. 单元生死判别,此处可自行编辑,即增加输出行“write ”。 31 TECS 子程序错误 错误1: tecs_01_m.exe 0
13、105DDCD Unknown Unknown Unknown tecs_01_m.exe 0046ED6D Unknown Unknown Unknown tecs_01_m.exe 00420967 Unknown Unknown Unknown tecs_01_m.exe 004145EB Unknown Unknown Unknown tecs_01_m.exe 00401030 Unknown
14、 Unknown Unknown tecs_01_m.exe 013405E3 Unknown Unknown Unknown tecs_01_m.exe 0131980F Unknown Unknown Unknown kernel32.dll 7C81776F Unknown Unknown Unknown 以上错误表示为纤维梁数值数量不够造成,需要修改程序中20000: type(Typ_RC_Rect01 ):: Column_Mat(
15、200) ! 存放代表性单元截面信息 type(Typ_RC_Rect01 ):: Column0(2 0000,3) ! 数组。存放所有的单元 type(Typ_RC_Rect01 ):: Column1(size(Column0,1),size(Column0,2)) integer :: inf(2 0000) , flag0 错误2: Image PC Routine Line Source marc_fiber_exampl 01605C6A
16、Unknown Unknown Unknown marc_fiber_exampl 01602E58 Unknown Unknown Unknown marc_fiber_exampl 015B3130 Unknown Unknown Unknown marc_fiber_exampl 015B2304 Unknown Unknown Unknown marc_fiber_exampl 015843F4 Unknown Un
17、known Unknown marc_fiber_exampl 0040685F Unknown Unknown Unknown marc_fiber_exampl 0040661D Unknown Unknown Unknown marc_fiber_exampl 0040AE7D Unknown Unknown Unknown marc_fiber_exampl 00401032 Unknown Unknown Unknown marc_fib
18、er_exampl 0185E193 Unknown Unknown Unknown marc_fiber_exampl 015E0FA2 Unknown Unknown Unknown kernel32.dll 7C81776F Unknown Unknown Unknown matcode文件格式不对,和matcode不对应,一般这个问题都是由于matcode中那个注释行引起的。 错误3: memory request of 15
19、1614064 words failed warning - memory allocation failed for element group 7 elsto option is turned on 内存问题,单元数组开太大了,电脑的内存不够。 修改子程序: type(Typ_RC_Rect01 ):: Column_Mat(200) ! 存放代表性单元截面信息 type(Typ_RC_Rect01 ):: Column0(2 0000,3) ! 数组。存放所有的单元 type(
20、Typ_RC_Rect01 ):: Column1(size(Column0,1),size(Column0,2)) integer :: inf(2 0000) , flag0 心得:对于使用纤维单元的模型,应根据模型情况适当选择单元数组数量,因为少了,程序无法运行,多了则占用过多的内存。 32 纤维梁模型中,几何属性与材料属性是否一定要一一对应? 比如:同为同尺寸的框架柱。几何属性由于存在偏心,分成3种柱;而材料属性则按一种柱子即可。这样可以吗?还是材料属性也按几何属性来,同样划分为3种柱子。 卢啸 19:36:40 不用对应,不过在定义材料属性时,里面的纤维梁要放在
21、最前面,不能被其它材料隔开。 33阻尼对时程分析收敛性的影响 基本没有影响。不过动力分析时候的收敛性要好于静力分析 34关于单元划分 清华蒋庆 16:17:18 你的网格划分的太大了,你楼板可以用一个大的膜单元,不考虑楼板对梁的贡献 清华蒋庆 16:17:36 网格太密了 阿荣 16:17:51 那节点耦合不考虑了 清华蒋庆 16:18:20 膜单元就是传力的,没有平面外刚度 清华蒋庆 16:18:42 但你都建成这样了,买个好一点的台机吧 阿荣 16:19:48 你之前说墙就是1~2个单元 可是我在建模的时候,考
22、虑节点耦合 墙片划分不少单元 阿荣 16:20:06 你看看怎么改进 改少一点 清华蒋庆 16:20:22 墙1-2个不行,有点少 清华蒋庆 16:20:44 我都画成4-5个 清华蒋庆 16:20:51 在Z方向上 阿荣 16:20:59 那你看看我的模型中单元划分可以吗 清华蒋庆 16:21:01 就是因为那连梁 阿荣 16:21:35 对 还有洞口问题 清华蒋庆 16:21:52 你楼板用的是分层壳还是桥? 阿荣 16:22:08 壳 阿荣 16:22:17 普通的壳
23、清华蒋庆 16:22:15 [自动回复]您好,我现在有事不在,一会再和您联系。 阿荣 16:22:43 回到前面你说的 楼板 用的膜单元 就一个吗? 清华蒋庆 16:22:41 [自动回复]您好,我现在有事不在,一会再和您联系。 清华蒋庆 16:23:00 一跨一个 清华蒋庆 16:23:42 这样确实能省一点,你的楼板数量最多 阿荣 16:23:58 一个单元 4个节点 不去考虑和周边墙 梁的耦合啦 清华蒋庆 16:24:33 剪力墙Z方法向7个也很多 阿荣 16:25:28 一个单元 4个节点
24、 不去考虑和周边墙 梁的耦合啦 如果是这样的话 省了不少 清华蒋庆 16:25:26 [自动回复]您好,我现在有事不在,一会再和您联系。 清华蒋庆 16:26:13 膜单元不能耦合,只要有一个节点没和其他连,就自由了 清华蒋庆 16:26:26 还有你的单元是很多啊 阿荣 16:27:25 我也不想的 可但是划分的时候 以考虑到各节点要相互耦合 就划分成这样了 清华蒋庆 16:27:25 要是我Z方向一般5个就搞定,X、Y方向也不会搞那么多,因为超高层要是划成你这样实在算不起 阿荣 16:28:34 你的高层模型能不能截
25、取一个中间层的给我看看 清华蒋庆 16:28:38 你可以把墙一开始一分为2,然后把节点移到与连梁重合处,再把地下的划成3个,上面的分成2个,我说的是、都是Z方向 清华蒋庆 16:30:12 清华蒋庆 16:30:23 我这个是特意考虑楼板的 阿荣 16:32:53 楼板局部节点没有耦合 没问题的 阿荣 16:33:18 只是这个区域力不发生传递 对楼板影响不大 清华蒋庆 16:33:21 都是乔,没啥问题 阿荣 16:34:09 我就是被耦合给害了 这样建模就简单多了 清华蒋庆 16:35:
26、22 呵呵,但不能太多不耦合,要隔几个就要耦合在一起,要是truss、膜就都得耦合 阿荣 16:36:00 收到 清华蒋庆 16:36:36 你算得结果咋样?是不是也是对的了? 阿荣 16:36:42 你那一下就搞定了 我现在还没算出来个模态 阿荣 16:48:10 和你算得一样 清华蒋庆 16:48:25 呵呵,那就ok了 阿荣 16:48:43 那模型应该没有问题吧? 清华蒋庆 16:49:10 你还要比一下自重 阿荣 16:49:31 ? 阿荣 16:49:54 是不是相
27、似比 配重 清华蒋庆 16:50:06 基地重力是不是和试验相同 阿荣 17:23:57 你说的mpi就是marc安装文件中的mpich吧? 我安装了可还是无法启动多核并行计算 是不是要进行配置什么的? 卢啸 17:53:43 是那个文件。好像还要安装一个Microsoft computer cluster pack的东西 阿荣 17:53:47 高层模型检查步骤: (1)结构模型质量是否和原型相等; (2)单推检查结构弹性刚度是否和试验一致; 清华蒋庆 17:54:28 单推看刚度退化是否合理 阿荣 17:55:22
28、 刚度退化是否合理? 清华蒋庆 17:55:40 就像你看一片墙一样 阿荣 17:55:50 就是我们常规的理解 明白 34关于高层建模原则 单元划分不宜过细,长宽比不宜大于3;平面楼板可按弹性考虑,不考虑平面刚度(按膜单元),可不考虑全耦合。 35高层模型检查 (1)质量:确认全部质量施加到位,特别是楼板质量不能缺。注意,在时程分析中,质量不正确,将直接导致严重影响计算结果的正确性。 (2)振型:特别是前三阶振型的计算结果。 (3)刚度:单推检查结构刚度是否有异常,结合振型结果,可快速的实现对模型是否正确进行初步判断。 38单元奇异值过大 (1)进行
29、sweep和renumber操作 (2)检查模型的节点坐标是否准确,小数点位数过多也是原因 (3)节点不重合,且靠的很近。 39 python程序正常运行设置 将C:\MSC.Software\Marc\2007r1\mentat2007r1\shlib下的py_mentat.pyd和py_post.pyd拷贝到C:\Python25\Lib目录下。 40 Exit number 13 错误原因:复合材料各层相加不等于100%。 查找办法:搜索*.out文件中的error就能看到。 40 镜像操作 在DUPLICATE中以坐标控制,例如下图输入: 28为镜像单元宽度
30、的2倍 41 清华子程序中壳单元生死判定 TECS_01_M.for中 if(EPSmin<-0.005 ) CompressionFailure=1 if(EPSmax> 0.15 ) TensionFailure=1 if(CompressionFailure>0 .or. TensionFailure>0) then !Kill the element MODE=-1; end if 42 关于ARC LENGTH加载方式 该方法无论收敛速度和计算效果明显优于CONSTANT TIME STEP,可是该方法不能很好的适用于循环荷载。 42 Exit number 2011 提示为子程序格式不对 43 TECS_01_M.for子程序调用壳单元生死流程 subroutine plotv下通过jpltcd==1(即输出结果存在User define 1#) call Get_Active_Status(m(1)) subroutine Get_Active_Status(ElemNo) call shell_uactive(ElemNo, MODE,EPSMax) SUBROUTINE shell_UACTIVE(ElemNo,MODE,EPSMax) MODE=-1 确定生死。






