iT邦幫忙

2022 iThome 鐵人賽

DAY 25
0

今天跟[Day26],我們來學學如何建立segment

咦?可能有先進會問segment誰不會建呀,是不是沒東西可以寫,想騙文章數呀?

請先不要著急,我們想做到的是當目標為1st order solid element時,產生如往常一般的segment;但是當目標為2nd order element時,我們會產生細化的segment,如此才能真正展現2nd order solid element的效力呀。

細化的情況,可以點選下圖後,觀看影片:

Yes

今天我們先講解核心概念,[Day26]再細部討論code。

核心概念

首先,假想我們手上有一個solidfacet Entity,我們透過Entity.get_entity_values看看裡面有些什麼資訊。

{'EID': 1, 
 'PID': <Entity: 0x7fcd67c80928: type: 1302(1302,N_PSOLID) id:1>,
 'Name': '',
 'FROZEN_ID': 'NO', 
 'FROZEN_DELETE': 'NO', 
 'FROZEN': 'NO', 
 'Comment': ''}

經過觀察,發現裡面並沒有Node Entity的順序,這樣無法建立segment
所幸,天無絕人之路,正當我們束手無策時,想到了dir,如果我們直接觀察Entity本身,也就是dir(Entity)會不會有更多資訊呢?

['__class__', 
'__delattr__', 
'__dir__', 
'__doc__', 
'__eq__', 
'__format__', 
'__ge__', 
'__getattribute__', 
'__gt__', 
'__hash__', 
'__init__', 
'__init_subclass__', 
'__le__', 
'__lt__', 
'__ne__', 
'__new__', 
'__reduce__',
'__reduce_ex__',
'__repr__', 
'__setattr__', 
'__sizeof__', 
'__str__', 
'__subclasshook__', 
'_ansaType',
'_bcomment', 
'_bname', 
'_cardFields',
'_comment', 
'_edge_index', 
'_id', 
'_isDefunct', 
'_name', 
'_type', # Yes!
'active', 
'ansa_type',
'card_fields',
'get_entity_values',
'is_usable', 
'module',
'position', 
'set_entity_values']

其中_type是我們的曙光。

_type

  • 如果是TETRA element,那麼_type會是3715~3718的整數。
  • 如果是HEXA element,那麼_type會是3715~3720的整數。

原來_type就是ANSA用來儲存這個solidfacetsolid哪一個面的資訊。
這麼一來從_type我們就可以取得該面的node id及其順序。

From node to shell

  • 透過Entity.get_entity_values得到EID,再進而得到Solid Entity,再透過base.CreateShellsFromSolidFacets得到此solid Entityshell Entity
  • 接著比對那一個shell Entity同時含有從_type中萃取的node id。這麼一來,如果是1st order solid element,我們取到的就是一般的shell element;但如果是2nd order solid element,我們取到的就會是含有中點的2nd order shell element

From shell to refined segment

我們觀察2nd order shell elementnode順序可以發現,中點的產生也是有所規律,逆時針所產生的。這麼一來,我們就可以看著node的順序,人工寫出想要的細化segment順序。

小結

覺得過程有點曲折嗎?Maybe...我們也不是一拿到題目,就想到可以這麼做的,也是邊想邊試才找出方法。二次開發的過程裡,大部分時間都是折磨的,但是在磨練中我們茁壯,做出了許多大家認為無法自動化的工具,解決使用者的痛點。享受折磨的過程,痛飲找出解法的成就,或許這就是CAE二次開發工程師的浪漫吧!

Code

本日程式碼傳送門


上一篇
[Day24] - Batch Mesh介紹
下一篇
[Day26] - 建立Solid Element的Segment(2)
系列文
或躍在淵的CAE: 讓咱們用Python會一會ANSA + LS-DYNA30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言