Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - Aaron Widera

Pages: 1 [2] 3
16
Hi Sarah,
you can change the size of the weaves in WeaveGeo by heading to the Domain tab and can add periodic cells of the weave in X-/Weft-Direction or Y-/Warp-Direction to the weave by chaning the Unit Cells option here.

17
Forum FAQs / Re: Frequently asked questions:
« on: September 29, 2021, 02:14:38 PM »
How do I use the Latex Editor?
  • You can use the Latex Editor by clicking on the fMath formatting option above the text area.
  • There are two different options:
    • One that creates formulas inline \( A = \pi r^{2} \)
    • And one that creates formulas in a new paragraph \[ A = \pi r^{2} \]
    • For latex code in a new paragraph, enter your latex code between this operators:
Code: [Select]
[latex] A = \pi r^{2}[/latex]
  • For latex code in line, enter your latex code between this two operators:
Code: [Select]
[latex=inline] A = \pi r^{2}[/latex]
  • You can create code blocks as seen above by using the code block tags:
Code: [Select]
[code] Your code here [/code ]

18
Forum FAQs / Re: Frequently asked questions:
« on: September 29, 2021, 02:08:26 PM »
  • How do I start a new board at the front page?
    • It is not intended to change the boards on the forums starting page. The starting page is read only.
  • How do I embedd an image into my posts?
    • You can attach your image to the post and use the [ attachimg=1] to insert the first attachment as inline attachment. To insert the second attachment use [ attachimg=2].
    • You can upload your image to a web hosting service and use the tag:
Code: [Select]
[img]IMAGEPATH[/img]
       

19
Forum FAQs / Re: Frequently asked questions:
« on: September 29, 2021, 02:04:29 PM »

20
Forum FAQs / Re: Frequently asked questions:
« on: September 29, 2021, 01:58:04 PM »
Where can I change my password, username, etc.?
   

22
Hi Marvin,

I prepared you an example, I assume, that youzr python script to create the roving support points is named PolyNomial.py.
It should look like that:
Code: [Select]
def test_func(parameter1, parameter2):
  x = [[2e-05, 2e-05, 2e-05],[4.5e-05, 2e-05, 2e-05],[7e-05, 3e-05, 2e-05],[9.5e-05, 4e-05, 3e-05]]
  y = [[2e-05, 2e-05, 2e-05],[2e-05, 4.5e-05, 2e-05],[3e-05, 7e-05, 2e-05]]
  return [x, y]
So it is just a function "test_func" that gets two parameters. Then it calculates and get two list (x and y) with the support points. In this case the list is set, but you just need to enter you polynomial function.
Then the script returns the two lists combined as [x, y]

Now for the important part, you can copy and paste this code block into a blank python script and use it, I will use comments marked by # to comment in the script what is happening:
Code: [Select]
Header =  {
  'Release'      : '2021',
  }

Description = '''
'''

Variables = {
  'NumberOfVariables' : 0,
  }
# until here it is just header and initialization which is not important

import PolyNomial    #here we import the python script

Roving_list = PolyNomial.test_func(123, 456) # by using .test_func(para1,para2) we are using the function from the script PolyNomial with the parameters para1 and para2. And save the returned values in the Roving_list

diam_1 = 2e-05      #Here you can set the Diameter of the Rovings. Here both Rovings in x and y directio have the same size. You could adapt it like below.
diam_2 = 1e-05

number_of_rovings = len(Roving_list)

#now we define a dictionary that is filled with all information GeoDict needs to create the GAD-Objects
#You might need to adjust the voxellenght and Domainsize (NX, NY, NZ) below by calculating the domainsize
GadAdd_args = {
  'ResultFileName'  : 'GadAdd.gdr',
  'KeepStructure'   : 0,
  'NumberOfObjects' : number_of_rovings,
  'Domain' : {
    'PeriodicX'         : False,
    'PeriodicY'         : False,
    'PeriodicZ'         : False,
    'OriginX'           : (0, 'm'),
    'OriginY'           : (0, 'm'),
    'OriginZ'           : (0, 'm'),
    'VoxelLength'       : (1e-06, 'm'),
    'DomainMode'        : 'VoxelNumber',   # Possible values: VoxelNumber, Length, VoxelNumberAndLength
    'NX'                : 100,
    'NY'                : 100,
    'NZ'                : 100,
    'Material' : {
      'Type'        : 'Fluid',     # Possible values: Fluid, Solid, Porous
      'Name'        : 'Undefined',
      'Information' : '',
      },
    'OverlapMode'       : 'GivenMaterial', # Possible values: OverlapMaterial, NewMaterial, OldMaterial, GivenMaterial
    'OverlapMaterialID' : 3,
    'NumOverlapRules'   : 0,
    'HollowMaterialID'  : 0,
    'PostProcessing' : {
      'ResolveOverlap'    : False,
      'MarkContactVoxels' : False,
      'ContactMaterialID' : 15,
      },
    },
  }
#This is the basic dictionary and now we fill it with the two Rovings. I Have it variable so when the polynomial script later returns more support lists, it should also work.

for i in range(number_of_rovings):
  GadAdd_args[f'Object{i+1}:MaterialID'] = 1
  GadAdd_args[f'Object{i+1}:Type'] = 'CurvedEllipticalFiber'
  GadAdd_args[f'Object{i+1}:NumberOfSegments'] = len(Roving_list[i])-1
  GadAdd_args[f'Object{i+1}:FiberEndType1'] = 'Flat'
  GadAdd_args[f'Object{i+1}:FiberEndType2'] = 'Flat'
  GadAdd_args[f'Object{i+1}:Diameter1'] = diam_1
  GadAdd_args[f'Object{i+1}:Diameter2'] = diam_2
  GadAdd_args[f'Object{i+1}:Perpendicular'] = [-1,0,0]
  #we iterate over the Roving number i and fill the Dictionary with Object1, Object2.
  #The command GadAdd_args[f'Object{i+1}:Diameter1'] = diam_1 takes the dictionary GaddAdd_args at fills it at the entry Object i :Diameter1 with the value diam1
  for j in range(len(Roving_list[i])):
    GadAdd_args[f'Object{i+1}:Point{j+1}'] =  Roving_list[i][j]
    #each support point generates a new entry in the dictionary, here we fill the dictionary with the entry from the Roving_list. Where i means whether it is Roving x or y and j means the current support point.
   
gd.runCmd("GadGeo:GadAdd", GadAdd_args, Header['Release'])

If you copy code block 1 into a scirpt called PolyNomial.py and code block 2 into another python script "Rovingcreation.py" and then exectue the Rovingcreation.py it should generate a small example.
Then you need to replace the test_func by your real polynomial function and it should still work. It is important that PolyNomial.py and Rovingcration.py are placed in the same folder.

Please let me know if you have any questions, because coding can always become a bit tricky.

23
Hi Marvin,

yes it is possible to create elliptical rovings with the support points automated by using the "Add GAD Object" option. You can use a python macro for that, the tricky question would be how to access the data form the excel sheet.

Can you tell me a bit more how the support points in the sheet are formatted?
Then I can explain you how you on that expample how to create a macro for that. So can you show a table here to show me how the data looks like? For example:
RovingsRoving 1 CoordinatesRoving 1 DiametersRoving 2 CoordinatesRoving 2 Diameters
Support Point 1 X, Y, Z Diameter1, Diameter2, Diameter3 X, Y, Z Diameter1, Diameter2, Diameter3
Support Point 2 X, Y, Z Diameter1, Diameter2, Diameter3 X, Y, Z Diameter1, Diameter2, Diameter3
further support points

When I understand the table structure I can explain how to make the macro.

24
Structural Material Modeling and Analysis / Re: Voids in a composite
« on: June 25, 2021, 11:11:33 AM »
This is some wht depending. How did you acquire that model?
Is the model a CT-Scan you imported to GeoDict or is it a digital model you generated inside GeoDict?

25
Hello Tabea,

This is a option where fibers are created such that a structure with non-touching fibers is made. In that option the fibers are placed in the structure and when they violate the given isolation distance to another fiber they are removed and a new fiber is placed and checked for violation. This happens until the stopping criterion is reached (for example a given Solid Volume Percentage or a given numbre of fibers).

But in general this approach can take much time for high solid volume fractions so in general we recommen to use the "Remove Overlap" option, here you can also set an Isolation distance.

26
Hello,
of course we can:
If you calculate the Diffusivity in x-direction, the entry in the main diagonal x_11 gives you the diffusivity in x-direction. The off-diagonal entries x_12, x_13, x_21 and x_31 give you the amount of diffusion going into y- and z-direction although the driving force, the concentration gradient, is only given in x -direction.
The same goes for Diffusivity in y- and z- direction.

Was that understandable?

 

27
CT, µCT and FIB-SEM / Re: Coordinate Transformation after Cropping
« on: June 16, 2021, 05:52:05 PM »
Hi Marvin,

yes such a transformation is possible with python and know how ProcessGeo Crop saves the settings to the gps file.

As an example say you have a 200x300x400 (X x Y x Z) structure with a voxel length of 2 µm. And you are looking at the X-Y Plane for the Coordination investigation.
Now you crop the structure in X direction for 20 voxel from the lower sider and 50 voxel from the higher side. That means the X direction is 70 voxels shorter (so it has 130 voxels in total).
Similar you crop the structure in Y direction for 30 voxel from the lower sider and 60 voxel from the higher side. That means the X direction is 90 voxels shorter (so it has 210 voxels in total).
This would mean that the X-Y Coordinates of your new Origin are at 40 µm x 60 µm of your old Origin.
The corresponding ProcessGeo Crop gps looks like:
Code: [Select]
  <ProcessGeo>
    <Crop>
      XMinus 20
      XPlus  50
      YMinus 30
      YPlus  60
      ZMinus 0
      ZPlus  0
    </Crop>
  </ProcessGeo>
So when you obtain coordiantes from the new system X' and Y' you can transform them back to the old system by:
\( X_{old} = X' - 20 * 2 µm \) and \( Y_{old} = Y' - 30 * 2 µm \)
This you can automate by using GeoPython to access the Crop Seetings, here is a small example code:
Code: [Select]
import stringmap

x_new = 1.04*1e-4
y_new = 1.56*1e-4
voxellength = 2*1e-6
gpsMap = stringmap.parseGDR('PathToGPSFile/File.gps')
x_crop = gpsMap.get('ProcessGeo:Crop:XMinus')
y_crop = gpsMap.get('ProcessGeo:Crop:YMinus')

x_trans = x_new + x_crop*voxellength
y_trans = y_new + y_crop*voxellength
In this example your x and y coordiante values in the new system are 104 µm which is 1.04e-4 m and 156 µm which is 1.56e-4 m.
And this code extracts the cropped value in x and y direction and uses it to transform the coordinates into the original coordiante system. Those coordinates are saved in the variable x_trans and y_trans

I hope that help, otherwise I will answer follow up questions.

28
Thank you for translating your post to englisch.
I will just copy my answer from above again so that we have the answer below the question ;)
Quote
To answer your question. If your Domain length is 500 µm it should be enough to use 550 µm long fibers and define the fiber centers for the generation.
You can find that option in the Fiber Options where you can also set the Diameter, Length and Orientation.
Here you click on the "Edit" beside the "Center" and choose the option "Unfiformly in Box".
Assume your fibers are oriented in X-direction, you fill the options as:
X-min = 545 µm ; X-max = 555 µm
Y-min = 0 µm     ; Y-max = "domain length in Y-direction"
Z-min = 0 µm     ; Z-max = "domain length in Z-direction"

Can you have  brief look if this helps you out?

29
Hi Tim,

welcome to the Forum :)
First, could you please repost your question down below in english? Our official Forum language is enligsh and this would help all of our clients to benefit froum your question.

Second to answer your question. If your Domain length is 500 µm it should be enough to use 550 µm long fibers and define the fiber centers for the generation.
You can find that option in the Fiber Options where you can also set the Diameter, Length and Orientation.
Here you click on the "Edit" beside the "Center" and choose the option "Unfiformly in Box".
Assume your fibers are oriented in X-direction, you fill the options as:
X-min = 545 µm ; X-max = 555 µm
Y-min = 0 µm     ; Y-max = "domain length in Y-direction"
Z-min = 0 µm     ; Z-max = "domain length in Z-direction"

Using that option you will need way shorter fibers because you set their center to be placed in the middle of the structure.
Please give us a short feedback if that helped.

30
Hello Tabea,
Periodic X will make GeoDict to generate the strucutre periodically in X direction. The same holds for the other directions Y and Z.
So you can make a full periodic strucutre in each direction, but also choose specific directions for periodicity, e.g. periodic in X and Z direction but non-periodic in Y direction.

Pages: 1 [2] 3