Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding blade root examples, windIO for IEA-15 and V27, and edits within mesh_gen folder #48

Merged
merged 31 commits into from
Oct 16, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
31 commits
Select commit Hold shift + click to select a range
05347de
Some edits to meshing files for constraints and orientations
andersone35 Oct 6, 2023
b7e5253
adding element utils module
andersone35 Oct 6, 2023
ec34844
Completing Abaqus shell model example to contain material, orientatio…
Oct 13, 2023
0dccbfb
Merge branch 'main' of https://github.com/andersone35/pyNuMAD
Oct 13, 2023
c2e4cf6
Updating the in-house solid mesher example to put out an analysis-ready
Oct 19, 2023
567f389
Merge branch 'sandialabs:main' into main
andersone35 Oct 19, 2023
84c144b
Merge branch 'main' of https://github.com/andersone35/pyNuMAD
Oct 19, 2023
e355fdc
Small update to mergeDuplicate nodes
andersone35 Oct 20, 2023
a194bf4
Updating abaqus solid in-house meshing example and tools,
andersone35 Oct 20, 2023
4fe92b9
Follow-up commits for renamed entities
andersone35 Oct 20, 2023
6736b86
Wiping out old shell directory
andersone35 Oct 20, 2023
8228521
Fixing imports not saved properly
andersone35 Oct 20, 2023
22868d5
Minor edits to documentation
andersone35 Oct 20, 2023
eadd336
Merge pull request #1 from andersone35/anderson_dev
andersone35 Oct 20, 2023
43e0563
Saving changes to modules for damping loss factor analysis
Jan 26, 2024
12be23a
Adding new files for structural damping loss factor analysis
Jan 26, 2024
14076dc
Merge branch 'sandialabs:main' into main
andersone35 Jan 26, 2024
112f93d
Merge pull request #2 from andersone35/main
andersone35 Jan 26, 2024
8a8e0df
Merge branch 'anderson_dev' of https://github.com/andersone35/pyNuMAD…
Jan 26, 2024
8d9c69e
Merge pull request #3 from andersone35/anderson_dev
andersone35 Jan 26, 2024
648d0f3
Minor updates to in house meshing tools
Mar 19, 2024
c59df58
Merge branch 'sandialabs:main' into main
andersone35 Mar 19, 2024
ca101af
Merge pull request #4 from andersone35/main
andersone35 Mar 19, 2024
72841ff
Merge branch 'anderson_dev' of https://github.com/andersone35/pyNuMAD…
Mar 19, 2024
31c757a
Committing updates to meshing tools and mesh output
Jul 9, 2024
8f0a7c3
Committing edits and additions to meshing for blade root generation,
Sep 26, 2024
e48eb82
Adding examples for building blade root models, and WindIO files for
Sep 26, 2024
9394bec
Merge branch 'sandialabs:main' into main
andersone35 Sep 26, 2024
d3dbdd8
Merge pull request #5 from andersone35/main
andersone35 Sep 26, 2024
43b7b4c
Merge branch 'anderson_dev' of https://github.com/andersone35/pyNuMAD…
Sep 26, 2024
bf005f3
Merge pull request #6 from andersone35/anderson_dev
andersone35 Sep 26, 2024
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
78 changes: 78 additions & 0 deletions examples/buildIEA15InsertsRoot.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
import pynumad as pynu
import numpy as np
import os
from os.path import join

from pynumad.mesh_gen.mesh_gen import get_root_mesh
from pynumad.io.mesh_to_yaml import *
from pynumad.analysis.abaqus.write import *

## This example builds a solid element model of the root of the IEA-15MW reference offshore wind turbine
## using a conventional bolt insert design.

## Define input yaml file and name of abaqus input file to be generated
bladeYaml = 'example_data/IEA-15-240-RWT.yaml'
abaqusFile = 'IEA_15_insert_root.inp'

## Read the model into a blade object
blade = pynu.Blade()
blade.read_yaml(bladeYaml)

## Define blade root specifications
rootDiameter = blade.definition.chord[0]
rtRad = 0.5*rootDiameter

axisPts = [0.,1.0] ## Range of points along the spanwise axis in meters
radius = [rtRad,rtRad] ## Radius corresponding to spanwise axis points
boltRad = 0.024 ## Radius of a single bolt
insThk = 0.01 ## Thickness of bolt insert layer
adhThk = 0.01 ## Thickness of bolt adhesive layer
rtThk = 3.0*(boltRad + adhThk + insThk) ## Total thickness of wall at root
thickness = [rtThk,rtThk] ## Axis point thickness
nIns = int(np.pi*rootDiameter/rtThk) ## Number of inserts
elementSize = adhThk ## Nominal element size for the model
elLayers = 10 ## Number of element layers in the spanwise direction

## Generate the root mesh
insertMesh = get_root_mesh(axisPts,radius,thickness,elementSize,elLayers,config='inserts',boltRad=boltRad,insertThk=insThk,adhesiveThk=adhThk,numIns=nIns)

## Define material properties specific to root design
materials = list()

mat = dict()
mat['name'] = 'boltMat'
mat['density'] = 7800.0
mat['elastic'] = {'E': [200.0e+9,200.0e+9,200.0e+9],
'nu': [0.3,0.3,0.3],
'G': [79.3e+9,79.3e+9,79.3e+9]}
materials.append(mat)

mat = dict()
mat['name'] = 'insertMat'
mat['density'] = 7800.0
mat['elastic'] = {'E': [200.0e+9,200.0e+9,200.0e+9],
'nu': [0.3,0.3,0.3],
'G': [79.3e+9,79.3e+9,79.3e+9]}
materials.append(mat)

mat = dict()
mat['name'] = 'adhesiveMat'
mat['density'] = 1100.0
mat['elastic'] = {'E': [4.56e+6,4.56e+6,4.56e+6],
'nu': [0.49,0.49,0.49],
'G': [1.52e+6,1.52e+6,1.52e+6]}
materials.append(mat)

mat = dict()
mat['name'] = 'fillMat'
mat['density'] = 1940.0
mat['elastic'] = {'E': [28.7e+9,16.6e+9,16.7e+9],
'nu': [0.5,0.0,0.17],
'G': [8.4e+9,3.49e+9,3.49e+9]}
materials.append(mat)

insertMesh['materials'] = materials

## Write the Abaqus input file

write_solid_general(abaqusFile,insertMesh)
70 changes: 70 additions & 0 deletions examples/buildIEA15TubeRoot.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,70 @@
import pynumad as pynu
import numpy as np
import os
from os.path import join

from pynumad.mesh_gen.mesh_gen import get_root_mesh
from pynumad.io.mesh_to_yaml import *
from pynumad.analysis.abaqus.write import *

## This example builds a solid element model of the root of the IEA-15MW reference offshore wind turbine
## using an imbedded solid tube insert.

## Define input yaml file and name of Abaqus input file to be generated
bladeYaml = 'example_data/IEA-15-240-RWT.yaml'
abaqusFile = 'IEA_15_tube_root.inp'

## Read the model into a blade object
blade = pynu.Blade()
blade.read_yaml(bladeYaml)

## Define blade root specifications
rootDiameter = blade.definition.chord[0]
rtRad = 0.5*rootDiameter

tubeThk = 0.048 ## Thickness of tube insert
adhThk = 0.01 ## Thickness of adhesive
axisPts = [0.,1.] ## Range of points along the spanwise axis in meters
radius = [rtRad,rtRad] ## Radius corresponding to spanwise axis points
rtThk = 1.5*(tubeThk + 2.0*adhThk) ## Thickness of root
thickness = [rtThk,rtThk] ## Axis point thickness
elementSize = adhThk ## Nominal element size for the model
elLayers = 10 ## Number of element layers in the spanwise direction
tubeExt = 1.0 ## Length of tube extension
extNE = 10 ## Number of element layer in tube extension

## Generate the root mesh
tubeMesh = get_root_mesh(axisPts,radius,thickness,elementSize,elLayers,config='tube',adhesiveThk=adhThk,tubeThk=tubeThk,tubeExtend=tubeExt,extNumEls=extNE)

## Define material properties specific to root design
materials = list()

mat = dict()
mat['name'] = 'adhesiveMat'
mat['density'] = 1100.0
mat['elastic'] = {'E': [4.56e+6,4.56e+6,4.56e+6],
'nu': [0.49,0.49,0.49],
'G': [1.52e+6,1.52e+6,1.52e+6]}
materials.append(mat)

mat = dict()
mat['name'] = 'fillMat'
mat['density'] = 1940.0
mat['elastic'] = {'E': [28.7e+9,16.6e+9,16.7e+9],
'nu': [0.5,0.0,0.17],
'G': [8.4e+9,3.49e+9,3.49e+9]}
materials.append(mat)

mat = dict()
mat['name'] = 'tubeMat'
mat['density'] = 7800.0
mat['elastic'] = {'E': [200.0e+9,200.0e+9,200.0e+9],
'nu': [0.3,0.3,0.3],
'G': [79.3e+9,79.3e+9,79.3e+9]}
materials.append(mat)

tubeMesh['materials'] = materials

## Write the Abaqus input file

write_solid_general(abaqusFile,tubeMesh)
Loading
Loading