Finding the right tools and process to create user defined seam weld realizations.

zoltaaaan
zoltaaaan Altair Community Member
edited October 2020 in Community Q&A

Hello everybody.

 

To set up models efficiently and to investigate different seam weld representations, I try to put together some scripts or custom weld realizations. In the end, I want to create multiple short seam welds in a structure.

Currently I am strugling to find the right tools, commands and hypermesh functions to effectively realize those seam welds with little to no user input. Manually, I am able to create the realizations, but even though I can read out the comand.tcl, there is a lot of manual selection necessary and I do not know how to automate the process with the tools I have.

I quickly describe my ideas and I hope to get new ideas and suggestions, how to achive a good process of creating those welds.

 

Current situation:

A very good function of course is the connector browser. A simple seam weld with solid hexa elements is quick and easy and I use this as a starting point to connect two sheets (shell meshes). Speaking in terms of the four-stage-process, mentioned in the user guide, I want to establish a seam weld using the 'Mesh dependent – adjust mesh – quad transition - imprint' process. Here I do not really know, how to create a seam weld using hexa elements and adjust the mesh accordingly, using quad transitions. But there are more aspects necessary:

- solid hexa elements, connecting two shell meshes

- shell meshes adjusted to hexa elements (hole in shell mesh, where the hexa elements are located)

- fill hole in shell meshes with shell element row, which are in a separate component

- nodes of shell meshes and shell element rows should be at the same coordinates, but do not be identical. Shell meshes and shell element rows should use separate sets of nodes.

- between shell meshes and shell element rows, I want to create cohesive shell elements (here: quad shell element with zero length in one direction; node 1&3 and 2&4 have the same coordinates at the beginning of the analysis)

- solid hexa elements and shell meshes should also not share any nodes, but have nodes at the same coordinates

 

Has anyone good ideas on how to achive this kind of representation?

At the moment I am strugling with very fundamental stuff. For example I try to create shell elements from the solid elements to get those two rows of shell elements, that eventually fill the holes in the two shell meshes. Those rows of shell meshes, I could use to imprint in the shell meshes and to get my set of nodes, to create the cohesive shells.

 

 

Update 1:

I played a bit with custom fe_configs for realization types. It looks promising, but there are two main problems:

1. When I create a custom realization type, which is totally equal to hexa adhesive (see below), I have no possibility to enter the width of the weld.

2. When I use 'Mesh dependent – adjust mesh – quad transition-skip imprint', only two rows of quad elements are created (see picture, quads in red). This leads to the weird problem, where some nodes are shared between solid and (red) shell elements (orange crosses) and some nodes are douplicated and not shared (yellow crosses)

 

 CFG dyna 106 hexa (adhesive - shell gap)  *filter seam  *style continuous 2  *head  *body 0  hex8 1 1  *post prop_dyna_matnum_seamarea.tcl

image.png.0652a0121f5b4dd2c5ed6ae53dd31481.png

Answers

  • zoltaaaan
    zoltaaaan Altair Community Member
    edited May 2019

    Maybe this is a bit more straightforward:

     

    image.png.59da7f8c50864215645a536ed71725f1.png

     

    Does anyone know, how I can identify the set of nodes from the red hex elements, that lie on the blue shell mesh?

    If I can get this set of nodes, I think I can find a way to make this work.

  • llyle_20499
    llyle_20499 New Altair Community Member
    edited May 2019

    Hi Zoltaaaan,

     

    To get the nodes of hex elements near the blue shell mesh, you will have to implement a algorithim as follows:

    1. Get all Hex Weld Nodes

    2. Get All Blue Shell mesh nodes

    3. Foreach hex node find closest node in the blue shell mesh node. 

     

    you can use hwat APIs such as: 

    ::hwat::utils::GetClosestElement

    ::hwat::utils::GetClosestNode

    ::hwat::core::GetClosestNodeByDistance

     

    These are available in Help Document or you can get it form altair connect:

    https://connect.altair.com/CP/kb-view.html?kb=183491

     

     

  • zoltaaaan
    zoltaaaan Altair Community Member
    edited May 2019

    Hey, thank you, I will try that.

    What would you suggest to do with the closest nodes in the blue mesh? Measure distance, compare with a certain tolerance and decide, which nodes are on top and which are on bottom of the red hexas?

     

    Regarding the HWAT: I am mildly confused by the different coding styles suggested for HWAT and Hyperworks Scripting in general.

  • llyle_20499
    llyle_20499 New Altair Community Member
    edited May 2019

    Hi Zoltaaaan,

     

    You can read about implementing HWAT in below link, Basically these functions simplifies the task than conventional scripting which require all the procedure to be written. 

    https://altairhyperworks.com/hwhelp/Altair/2017/help/hwtools/hwtools.htm?hyperworks_automation_toolkit_introduction.htm

     

    If done right, the closest top node in red hex will point to the correct node in blue comp, 

     

    Maybe if you can share two hm files, with initial components in one and final components welded together in another I can give it a try. 

     

     

  • zoltaaaan
    zoltaaaan Altair Community Member
    edited May 2019

    Yes, I have read the documentation about HWAT and scripting in hypermesh in general.

    I think it is not really clear, which coding style should be used. Also I do not think, I can get my script working, by using HWAT functions only. Therefore I use the style, described in the second link of my last post. I use a lot of those tcl modify commands (*createxyz...) and tcl query commands (hm_getmethatwhatiwant) with the occasional HWAT command (::hwat::topic::function).

     

    At the moment I do not work with real parts. I use two rectangular quad meshes of 1mm element size, which are 1,6 mm apart and I try to connect them by my weld configuration automatically.

     

    To be honest, I did not use the closest node or closest element functions because I felt, it was not specific enough.

    I rather used PLOTEL elements as header in the seam weld realization, to be able to extract those nodes from the hexa elements, since they are connected to one sheet by PLOTEL elements. I managed to to that, but it's quite a hassle.

    image.png.790c3b559c3d4424f296888fdae83f9a.png

    Figure: 1D PLOTEL elements connecting nodes of HEXA elements with nodes of QUAD shell meshes

     

    Therefor the next question:

    Is it possible to query elements by their type? For example in one component there are HEXA elements and PLOTEL elements, can I query then directly? What would be an efficient way, to get a list of all PLOTEL elements of one component or to get a list of all HEXA elements of one component?

     

    Okay, nevermind. I found what I needed. Data names in reference guide is a useful resource to create efficient queries.
    image.png.a7401d08bc4d58c3b03eb40c86cb55dc.png

     

    I leave this here, for others as reference.