Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations IDS on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

making a hexagonal network of connectors consisting of 1500 connectors 1

Status
Not open for further replies.

kev66

Electrical
Apr 27, 2010
14
Hi,
I am planning to simulate a hexagonal network of 1500 nodes with a connector element connecting between each adjacent node pairs. The connectors are used to simulate a variable-stiffness spring as it's being stretched. I am currently using ABAQUS/CAE as the preprocessor and the only way I've found to create a connector is this:
1) create a wire in "part"
2) instance the part to "assembly"
3) in the interaction module, create a "wire" in assembly connecting the points of the wire instanced from "part" (essentially, overlapping an assembly-level wire with a part-level wire)
4) assign connector section to the assembly-level wire made in 3).

This is very inefficient if I want to create a large network of connectors because in step 3), I have to pick point pairs one by one. Is there a faster way to do this?

I can generate a list of the coordinates of the hexagonal network nodes and I am pretty sure that it can be done easily by editing the .inp file itself and I tried to look at a .inp file created by ABAQUS/CAE with one connector element assigned; however, in the file, instead of seeing the coordinates being used to assigned the connector, it uses a name to identify the position for connector (e.g. "wireset-1"); so, I am not sure if I can simply copy the list of coordinates of the hexagonal network here.

Could someone please give some pointers on how to solve this?

Thanks.
 
Replies continue below

Recommended for you

The best way to do this is via the .inp file but you will have to read the manual to understand the input format. The manual is very good so no problem.

 
Hi,

I believe you can use python script to do this. Could you deliver example of file with coordinates. 10 points is enough for example file. What connectors (what type, what behavior) do you want to use? Do you want to use the same connector section to all connectors?

Regards,
akaBarten
 
Hi Barten,
I've attached an input file I created using CAE. The coordinates of a smallest hexagon is in the beginning of the file.
I'd like to use axial connector with elastic behavior with a tabulated list of force vs. displacement. This is also included in the .inp file. And I actually will need to assign about 15 different connectors to various parts of the hexagon network (the only difference between them will be the displacement range in which the force is 1).
In the input file, I have beam elements and meshes because if I don't, then the CAE gives some warning. I do not need any additional elements other than the behavior described by the connector element.
As you can see, under the connector definition, it doesn't use actual coord. points but instead, it uses names which represents the wires I drew manually by connecting point pairs.

Thanks.
 
 http://files.engineering.com/getfile.aspx?folder=49b8cadb-ea6f-4f64-9bed-11f9f4effff5&file=Job-1.inp
Hi,

Please find attached file with simple python script. The script reads hexagon points coordinates from a ASCII file and create part and assembly in Abaqus/CAE.
You have to only crate connector sections and create connector elements based on wires created by the script.
Please read comments inside python file accordingly to user parameters. I don't know is this solve your issue, but I think it is a good start point.

>>> I have beam elements and meshes because if I don't, then the CAE gives some warning.
I have the same, I do not know how to write inputdeck only with connector elements. I have no experience with Abaqus/CAE since I am using HyperMesh.
The easiest way is to just open inputdeck file with any text editor and remove beam definitions.

>>> it doesn't use actual coord. points but instead, it uses names which represents the wires
It is because a model is safe with part and assembly structure. But you can change this behavior:
Model -> Model Attributes -> model name -> Do not use parts and assemblies in input files
In this case each connector definition will be build with node ids not with instances names.

If you have any questions respect the script do not hesitate to ask.

Regards,
akaBarten
 
 http://files.engineering.com/getfile.aspx?folder=75117717-1be3-421d-a5f1-15b9ac8f7a7e&file=hexagon.zip
Hi Barten,
Thanks a lot; this is a very helpful starting point for me. A few questions:
1) it seems that the variable user_length is only used to form connectivity between nodes that are close enough together, correct? I am asking because I might have 6 segments that are a little bit longer than the rest and if they are within 10% of user_length, then it should be fine? (I can connect them manually since it's only 6 of them, but just want to double-check)

2) How long does the code take to run for large node sized? i got the code to work for the small_hexagon and big_hexagon data file you provided but once I try my real node layout (which is about 3265 nodes), it takes a long time (I've let it run for 20min. once and the program is just busy with no results showing up). I did make minor modification to your program (i.e. user_length=100, user_splitSize=0, and I generated my coord. file accordingly (1 node every 100 units)). I just want to know when should I terminate the process to check if there is anything wrong with the coord. file I generated? The machine I use is dual-cor, 2GHz processer with 4GB of RAM.

Thanks.

 
Barten,
Could you verify something for me? I was able to create the hexagonal wires with your script. But it seems that I cannot edit the part without creating errors. That is, if I go to the sketch to delete a line, the wire feature will fail to regenerate and as a result, all of the wire features are gone (the geometry of the hexagonal layout is still there). Is there any way to make modifications to the part created?

Thanks.

 
Barten,
One follow-up question please:
I can create a sketch of the structure I want easily; so, is it possible to skip the "sketch" part of the "hexagon" definition code and replace the following line
myPart.BaseWire(sketch=mySketch)
in "part" with
myPart.BaseWire(sketch="?? reading from a sketch file on the computer")??

Thanks.
 
Hi,
A lot of questions :).

>>> it seems that the variable user_length is only used to form connectivity between nodes that are close enough together, correct?
Yes, You are right, It doesn't have to be 10%, you can play a little bit with the parameter
if your distance between points is not a constant value.

>>> How long does the code take to run for large node sized?
I believe that the much time takes split operation. So if you don't have to have more than one connector element between points please set user_splitSize parameter to 0.
Unfortunately python and Abaqus/CAE are not really fast and you have to be patient.
You can always add some increment information inside loop to know how many increments script need to do before finish it.

>>>But it seems that I cannot edit the part without creating errors.
It seems that the geometry dependencies (parent-child) are become a little bit complicated for CAE. I make same test and the biggest problem is to regenerate split operations.
I split the script into two sections, first create only part based on a sketch. I had no problems to modified (add, delete new points) that part.
After modification you can run the second script to split all edges (if necessary) and build wires based on all vertices in the part. It works fine for me.
Please see attached files.

>>> is it possible to skip the "sketch" part of the "hexagon" definition code and replace
What type of sketch is it? Is it sketch made in Abaqus/CAE and saved in a model database or maybe it is some kind of native geometry format (igs, stp, ...).
I am thinking that if you can open/import the sketch into Abaqus/CAE then we can also change the script.

Regards,
akaBarten
 
 http://files.engineering.com/getfile.aspx?folder=ef819dc2-5727-4efa-ac10-9e6411503850&file=hexagon_split.zip
Hi,
yeah, a lot of questions and thanks for your patience. I originally made the hexagonal layout in AutoCAD and export it to .sat to be imported into ABAQUS/CAE's sketch. If it's too much trouble to change to code, I am thinking your two-part script will work fine, as I will make minor modifications in the part module of CAE.
Is it possible to create the wire feature at the assembly-level rather than at the part level? I am asking because another problem is that CAE can't seem to write input files (i.e. when I ask the job to write an input file, the program would just terminate and shutdown without giving any useful error message in the log files). This only happens when I have assigned connector elements to the wires (if I suppress the assignment, it'll run). I am not sure if it's related to the following:
I see that the wires the script created has "meshable=off" but when I mesh the part by drag-selecting the whole thing, it seems both the geometry and the wires got meshed (e.g., if I suppress the wires, I would get 5000 mesh elements but if I leave them there, I get 10,000 mesh elements. As a result, the wires would get two assignments (one as beam, one as connector)? So, I was thinking that if the wire can be created in the assembly level instead, I can mesh the part geometry only and the wires only only get assigned as connectors?

Thanks.
 
Hi,

I modified the script. Right now the script imports sat geometry and create wire based on it.
Wire is created in assembly level now.
I also have problem with duplicated elements. But i suspect that Abaqus/CAE does not allow create model only with connector elements since it does not treat connector as "element" but as interaction.
For me the easiest way is to save inputdeck with duplicated elements and next open the file with text editor and remove all beam elements definitions.

>>> the wires the script created has "meshable=off"
from abaqus documentation: If meshable=OFF, the wire can be used for connector section assignment.


Regards,
akaBarten
 
 http://files.engineering.com/getfile.aspx?folder=6d99b1b7-d3a6-4e8b-bcf4-bbb4927055ce&file=hexagon-sat.zip
Hi,
Thanks for the script. Now I can start the actual simulation process. I did some copy and paste of your code to make another .py file for the case where I do everything in CAE up to the point where assembly-level wire needs to be formed, then run the script to:
1) Partition edge in "part" if necessary
2) Create assembly-level wire
Then, assign connector to assembly-level wires in CAE.

The file is attached if you have time to take a look to see if I've done it correctly.

One final (I hope) question is for the simulation process. You mentioned that it's possible to delete the beam element definition to the geometry by directly modifying the input file. I tried today by deleting in the "part" portion all the coordinates after *element, type=B21 and the following lines in "part"
** Section: Section-1 Profile: Profile-1
*Beam Section, elset=_PickedSet5, material="Low Modulus", temperature=GRADIENTS, section=RECT
30., 1.5
0.,0.,-1.

However, if I do this, and run the job by typing abaqus Job=inputFileName in the command prompt, it doesn't work (the output will just contain no structure). Am I deleting the wrong thing? By the way, I am simulating using "dynamic, implicit" method.

I was trying to circumvent the problem by assigning a material with very low modulus to the part geometry and mesh it so that the force resulting from the strain is negligible compared to the connector element; but this resulted in excessive distortion errors in the beginning of the simulation. So, I think I'd need to have a connector-only model.

Thanks again.
 
 http://files.engineering.com/getfile.aspx?folder=bc66f36d-3f30-4020-bed0-10a6c9b4c2dd&file=assembly_wire.py
Hello,

Your modifications looks good.

If you remove anything from inputdeck it is easier to do not use part and assembly format. How you can write inputdeck without parts and assembly I have already written.

Check *.dat, and *.sta files for any errors. If you are using dynamic analysis you need also mass in nodes. Connector elements has no mass definition inside sections so there is a chanse that your model is without any mass. You can define point mass in all nodes with enough small value.
Property module -> Special -> Inertia -> Create.

>>> the output will just contain no structure
Abaqus/Viewer does not show connector elements with default options. So if your model contains only connector elements you will see nothing.
You have to turn it on:
View -> ODB display options -> Entity Display -> Show connectors

Regards,
akaBarten
 
Hi Barten,
Thanks a lot for your help. I was able to play around with the simulation during the weekend. As you suggested, after I added inertia to the nodes, I can run it in Dynamic, Explicit mode. However, I find that the mass introduces oscillation to the node movement. I guess I can add damping to the connectors but I think that will introduce artificial force in the results.

Since I don’t want inertial effects, I tried Static, general mode which doesn’t require me to assign mass to nodes. However, I keep getting the following errors:
1) "Too many attempts made for this increment": what I did to remedy this was to increase the max. number of increments but then, I get the 2nd error
2) "Time increment required is less than the minimum specified": what I did to remedy this was to reduce the minimum increment to a small value, like 1e-8.
After this, I again get the “too many attempts made” error and I already set the max. number of increments was already 1e9 or something that’s the maximum allowed by the software. If I just run this with one connector, it’s fine. So, does this mean I have too many elements? By the way, the errors occur right at the beginning of the simulation.
Thanks.
 
Hello,

All information about too many increment mean that implicit solver cannot fine convergence during solution. Number of elements usually is not problem. Usually it happens for complicated models with nonlinear material characteristic, with contact and large displacement in model.
At the beginning I would try change initial increment. It is first value in line under *STEP keyword. Respect to documentation reasonable value is 10% of total time. Try cut it to 1% or less. Also try use STABILIZE option to control analysis.
Check again your boundary conditions. Maybe you can add boundary condition to block movement in direction perpendicular to hexagonal net. Then model will be act only in one plane (or maybe you can run it as 2D model).

Is it possible to deliver the inputdeck of the model?
If you do not want to put it on the forum, you can send it direct to me (barten@go2.pl).

Regards,
akaBarten
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor