Skip to content

Commit b928cb2

Browse files
JacobAdamsenJacob Hilmar Adamsenpeg
authored
Abaqus tutorial updates (#31)
* Add new tutorial materials and snippets for Finite Element Analysis * Fix formatting in lesson1.md for clarity on model object placement * added a tip how to load input deck --------- Co-authored-by: Jacob Hilmar Adamsen <jha@anybodytech.com> Co-authored-by: peg <peg@anybodytech.com>
1 parent e874dee commit b928cb2

27 files changed

Lines changed: 33034 additions & 1218 deletions

A_Getting_started_anyscript/lesson1.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,8 @@ model.
9595
You will notice "Todo:" comments inside the braces, to which we will return
9696
later.
9797

98-
:::{note} The model objects that you create henceforth must be placed within the
98+
:::{note}
99+
The model objects that you create henceforth must be placed within the
99100
"ArmModel" folder and should go between its pair of braces.
100101
:::
101102

AnyExp4SOLIDWORKS/index.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
# Making Models using SOLIDWORKS
55

6+
(Making Models using SOLIDWORKS)=
7+
68
This tutorial shows how a CAD model designed in SOLIDWORKS can be
79
imported into AnyBody and interact with the human model. This allows for
810
analysis and optimization of the ergonomics of products.
520 KB
Binary file not shown.

Finite_element_analysis/Downloads/clavicula.inp

Lines changed: 31695 additions & 905 deletions
Large diffs are not rendered by default.
Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,103 @@
1+
//expect_errors = ["'<ObjectName>'", "Model loading skipped"]
2+
3+
#include "libdef.any"
4+
5+
Main =
6+
{
7+
// BodyModel configuration:
8+
// Specify which limb segments to include, the type of muscles, joints, scaling etc
9+
#include "Model/BodyModelConfiguration.any"
10+
11+
// Include the Human model from AMMR
12+
#include "<ANYBODY_PATH_BODY>\HumanModel.any"
13+
14+
// Define desired posture or movement of the model
15+
#include "Model\Mannequin.any"
16+
17+
// Compose the model used by the study
18+
AnyFolder Model =
19+
{
20+
// Center of Mass (COM) position in the ground YZ plane
21+
// COM balance driver can be excluded with:
22+
// #define EXCLUDE_COM_BALANCE_DRIVERS
23+
AnyVector CenterOfMassXZ = {0,0};
24+
25+
// Positioning of the right and left feet.
26+
// Ground-foot constraints can be excluded with:
27+
// #define EXCLUDE_FOOT_CONSTRAINTS
28+
Environment.GlobalRef.RightFootPrint = {
29+
AnyVec3 HeelPosition = {-0.08, 0, 0.14};
30+
AnyVec3 ToeDirection = {1, 0, 0.1};
31+
};
32+
Environment.GlobalRef.LeftFootPrint = {
33+
AnyVec3 HeelPosition = {-0.08, 0, -0.14};
34+
AnyVec3 ToeDirection = {1, 0, -0.1};
35+
};
36+
37+
// Include the body part of the Human model
38+
AnyFolder &BodyModel = .HumanModel.BodyModel;
39+
40+
// Include the default mannequin drivers
41+
AnyFolder &DefaultMannequinDrivers = .HumanModel.DefaultMannequinDrivers;
42+
43+
// Environment files are used to include objects surrounding human,
44+
// e.g. global reference frame
45+
#include "Model\Environment.any"
46+
47+
AnyFolder ModelEnvironmentConnection =
48+
{
49+
// This file contains all contraints to simulate the standing human
50+
#include "Model/JointsAndDrivers.any"
51+
52+
// Ground reaction force prediction
53+
#include "Model/GRFPrediction.any"
54+
};
55+
};
56+
// Define Study for running kinematics and inverse dynamics simulation analyses
57+
//# BEGIN SNIPPET 1
58+
AnyBodyStudy Study =
59+
{
60+
// Include the Model within the Study
61+
AnyFolder &Model = .Model;
62+
63+
§tEnd = 10.0;§
64+
Gravity={0.0, -9.81, 0.0};
65+
nStep = §5§;
66+
//# END SNIPPET 1
67+
68+
//# BEGIN SNIPPET 2
69+
AnyMechOutputFileForceExport <ObjectName> =
70+
{
71+
FileName = "";
72+
/*NumberFormat =
73+
{
74+
Digits = 15;
75+
Width = 23;
76+
Style = ScientificNumber;
77+
FormatStr = "";
78+
};*/
79+
//UseRefFrameOnOff = Off;
80+
//AllSegmentsInStudyOnOff = Off;
81+
//XMLformatOnOff = Off;
82+
//RefFrame = Null;
83+
//Segments = ;
84+
//MeshRefFrames = ;
85+
//ForceObjectExclude = ;
86+
//ForceObjectList = ;
87+
//AnyRefFrame &<Insert name0> = <Insert object reference (or full object definition)>;
88+
//AnyRefFrame &<Insert name1> = <Insert object reference (or full object definition)>; You can make any number of AnyRefFrame objects!
89+
//AnySeg &<Insert name0> = <Insert object reference (or full object definition)>;
90+
//AnySeg &<Insert name1> = <Insert object reference (or full object definition)>; You can make any number of AnySeg objects!
91+
};
92+
//# END SNIPPET 2
93+
94+
// Overdeterminate solver is needed while using the
95+
// soft default mannequin drivers.
96+
Kinematics.SolverType = KinSolOverDeterminate;
97+
InitialConditions.SolverType = Kinematics.SolverType ;
98+
};
99+
// This is readymade simulation package including some pre-processing steps and the InverseDynamics analysis
100+
#include "Model\RunAppSequence.any"
101+
102+
}; //Main
103+
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
#include "libdef.any"
2+
3+
Main =
4+
{
5+
// BodyModel configuration:
6+
// Specify which limb segments to include, the type of muscles, joints, scaling etc
7+
#include "Model/BodyModelConfiguration.any"
8+
9+
// Include the Human model from AMMR
10+
#include "<ANYBODY_PATH_BODY>\HumanModel.any"
11+
12+
// Define desired posture or movement of the model
13+
#include "Model\Mannequin.any"
14+
15+
// Compose the model used by the study
16+
AnyFolder Model =
17+
{
18+
// Center of Mass (COM) position in the ground YZ plane
19+
// COM balance driver can be excluded with:
20+
// #define EXCLUDE_COM_BALANCE_DRIVERS
21+
AnyVector CenterOfMassXZ = {0,0};
22+
23+
// Positioning of the right and left feet.
24+
// Ground-foot constraints can be excluded with:
25+
// #define EXCLUDE_FOOT_CONSTRAINTS
26+
Environment.GlobalRef.RightFootPrint = {
27+
AnyVec3 HeelPosition = {-0.08, 0, 0.14};
28+
AnyVec3 ToeDirection = {1, 0, 0.1};
29+
};
30+
Environment.GlobalRef.LeftFootPrint = {
31+
AnyVec3 HeelPosition = {-0.08, 0, -0.14};
32+
AnyVec3 ToeDirection = {1, 0, -0.1};
33+
};
34+
35+
// Include the body part of the Human model
36+
AnyFolder &BodyModel = .HumanModel.BodyModel;
37+
38+
// Include the default mannequin drivers
39+
AnyFolder &DefaultMannequinDrivers = .HumanModel.DefaultMannequinDrivers;
40+
41+
// Environment files are used to include objects surrounding human,
42+
// e.g. global reference frame
43+
#include "Model\Environment.any"
44+
45+
AnyFolder ModelEnvironmentConnection =
46+
{
47+
// This file contains all contraints to simulate the standing human
48+
#include "Model/JointsAndDrivers.any"
49+
50+
// Ground reaction force prediction
51+
#include "Model/GRFPrediction.any"
52+
};
53+
};
54+
// Define Study for running kinematics and inverse dynamics simulation analyses
55+
AnyBodyStudy Study =
56+
{
57+
// Include the Model within the Study
58+
AnyFolder &Model = .Model;
59+
60+
§tEnd = 10.0;§
61+
Gravity={0.0, -9.81, 0.0};
62+
nStep = §5§;
63+
64+
//# BEGIN SNIPPET 1
65+
AnyMechOutputFileForceExport §FE_out§ =
66+
{
67+
§FileName = "files_in/clavload.xml";
68+
UseRefFrameOnOff = On;
69+
RefFrame = &Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Clavicula.localrefframe;
70+
AllSegmentsInStudyOnOff = Off;
71+
XMLformatOnOff = On;
72+
Segments = {&Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Clavicula};
73+
MeshRefFrames = {&Main.HumanModel.BodyModel.Right.ShoulderArm.Seg.Clavicula.localrefframe};§
74+
};
75+
//# END SNIPPET 1
76+
77+
// Overdeterminate solver is needed while using the
78+
// soft default mannequin drivers.
79+
Kinematics.SolverType = KinSolOverDeterminate;
80+
InitialConditions.SolverType = Kinematics.SolverType ;
81+
//# BEGIN SNIPPET 2
82+
}; // END of Study
83+
84+
§AnyOperationShellExec ConvertToAbq={
85+
Show=On;
86+
FileName = "AnyFE2Abq.exe";
87+
Arguments = "-i .\files_in\clavload.xml -o .\files_out\output.inp -m .\clavicula.inp";
88+
WorkDir=".\ ";
89+
};§
90+
//# END SNIPPET 2
91+
92+
// This is readymade simulation package including some pre-processing steps and the InverseDynamics analysis
93+
#include "Model\RunAppSequence.any"
94+
95+
}; //Main
96+
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
#path __BM_PLUGIN_FILE__ "BodyModelConfiguration.any"
2+
#define BM_CONFIG_PLUGIN __BM_PLUGIN_FILE__
3+
4+
// -----------------------------------------------------------------------------------
5+
// The BodyModel configuration can be modified using BodyModel GUI plugin
6+
// or by manually editing this file.
7+
//
8+
// Please see this this file for more information on the options:
9+
// #path HTML_DOC "<AMMR_PATH_DOC>/bm_config/index.html"
10+
// -----------------------------------------------------------------------------------
11+
12+
#define BM_MANNEQUIN_DRIVER_DEFAULT ON
13+
14+
// Enable the TLEM2 lower extremity model
15+
#define BM_LEG_MODEL _LEG_MODEL_TLEM2_
16+
17+
//# BEGIN SNIPPET 1
18+
// Switch off all muscles of the body model
19+
§#define BM_LEG_MUSCLES_BOTH _MUSCLES_NONE_
20+
#define BM_TRUNK_MUSCLES _MUSCLES_NONE_§
21+
22+
// Excluding the left arm segments
23+
§#define BM_ARM_LEFT OFF§
24+
//# END SNIPPET 1
Lines changed: 149 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,149 @@
1+
2+
DrawSettings ={
3+
4+
5+
//This is the color definitions of the nodes and segments
6+
Colors = {
7+
AnyBodyRed = {149/256,51/256,55/256}; //AnyBody standard red
8+
AnyBodyGreen = {47/256,131/256,80/256}; //AnyBody standard green
9+
AnyBodyBlue = {82/256,85/256,111/256}; //AnyBody standard blue
10+
AnyBodyYellow= {235/256,197/256,17/256}; //AnyBody standard yellow
11+
AnyBodyPaleYellow = {248/256,204/256,115/256}; //AnyBody standard pale yellow
12+
AnyBodyGrey = {153/256,153/256,153/256}; //AnyBody standard grey
13+
14+
Nodes = AnyBodyPaleYellow;
15+
Segments = AnyBodyPaleYellow;
16+
};
17+
18+
Muscle ={
19+
RGB = .Colors.AnyBodyRed;
20+
Visible =On;
21+
DrawScaleOnOff =Off;
22+
Bulging =0.0;
23+
ColorScale =1.0;
24+
RGBColorScale = {0.957031, 0.785156, 0.785156};
25+
MaxStress = 2500000.000000; //N/m^2 //This number is for graphics only!
26+
Opacity =1.0;
27+
DrawScale =
28+
{
29+
EnableCreasing = Off;
30+
CreasingAngle = 0.524;
31+
EnableWireframe = Off;
32+
EnableSmoothing = On;
33+
Param = 0.0;
34+
ParamArray = {0.0, 0.167, 0.333, 0.5, 0.667, 0.833, 1.0};
35+
RGBArray = {{0.0, 0.0, 0.6}, {0.0, 0.0, 1.0}, {0.0, 1.0, 1.0}, {0.0, 1.0, 0.0}, {1.0, 1.0, 0.0}, {1.0, 0.0, 0.0}, {0.6, 0.0, 0.0}};
36+
OpacityArray = {1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0};
37+
};
38+
};
39+
40+
41+
BonesOpacity ={
42+
43+
GlobalCoef = 1;
44+
45+
Skull = 1*GlobalCoef;
46+
Thorax = 1*GlobalCoef;
47+
Pelvis = 1*GlobalCoef;
48+
Sacrum = 1*GlobalCoef;
49+
L5 = 1*GlobalCoef;
50+
L4 = 1*GlobalCoef;
51+
L3 = 1*GlobalCoef;
52+
L2 = 1*GlobalCoef;
53+
L1 = 1*GlobalCoef;
54+
55+
RightFoot = 1*GlobalCoef;
56+
RightShank = 1*GlobalCoef;
57+
RightThigh = 1*GlobalCoef;
58+
59+
LeftFoot = 1*GlobalCoef;
60+
LeftShank = 1*GlobalCoef;
61+
LeftThigh = 1*GlobalCoef;
62+
63+
64+
RightClavicula = 1*GlobalCoef;
65+
RightScapula = 1*GlobalCoef;
66+
RightHumerus = 1*GlobalCoef;
67+
RightUlna = 1*GlobalCoef;
68+
RightRadius = 1*GlobalCoef;
69+
RightHand = 1*GlobalCoef;
70+
71+
LeftClavicula = 1*GlobalCoef;
72+
LeftScapula = 1*GlobalCoef;
73+
LeftHumerus = 1*GlobalCoef;
74+
LeftUlna = 1*GlobalCoef;
75+
LeftRadius = 1*GlobalCoef;
76+
LeftHand = 1*GlobalCoef;
77+
78+
79+
// For leg TD only.
80+
RightTalus = 1*GlobalCoef;
81+
RightPatella = 1*GlobalCoef;
82+
83+
LeftTalus = 1*GlobalCoef;
84+
LeftPatella = 1*GlobalCoef;
85+
86+
87+
// For detailed cervical model only.
88+
C1 = 1*GlobalCoef;
89+
C2 = 1*GlobalCoef;
90+
C3 = 1*GlobalCoef;
91+
C4 = 1*GlobalCoef;
92+
C5 = 1*GlobalCoef;
93+
C6 = 1*GlobalCoef;
94+
C7 = 1*GlobalCoef;
95+
};
96+
97+
98+
99+
SegmentAxes ={
100+
RGB ={0,0,1};
101+
ScaleXYZ ={0.0001,0.00001,0.00001};
102+
};
103+
BML ={
104+
ScaleXYZ ={0.0006,0.0006,0.0006};
105+
RGB = .Colors.AnyBodyBlue;
106+
};
107+
JointAxesProximal = {
108+
RGB = .Colors.AnyBodyRed;
109+
ScaleXYZ = {0.015,0.015,0.015};
110+
};
111+
JointAxesDistal = {
112+
RGB = .Colors.AnyBodyGreen;
113+
ScaleXYZ = {0.01,0.01,0.01};
114+
};
115+
116+
117+
SegmentNodes ={
118+
ScaleXYZ ={0.0005,0.0005,0.0005};
119+
RGB = .Colors.AnyBodyRed;
120+
};
121+
WrapGeometry ={
122+
RGB ={1,1,1};
123+
};
124+
125+
DrawSettingsSupport={
126+
Lin={
127+
ScaleFactor=0.004;
128+
RGB = {0,0,1};
129+
Thickness = 0.004;
130+
HeadThickness = 2*Thickness;
131+
HeadLength = 3*Thickness;
132+
};
133+
Rot={
134+
ScaleFactor=0.08;
135+
RGB = {1,0,0};
136+
Thickness = 0.075;
137+
HeadThickness = 2*Thickness;
138+
HeadLength = 5*Thickness;
139+
};
140+
};
141+
142+
143+
Marker={
144+
Color={0,0,1};
145+
Radius=0.00;
146+
147+
};
148+
149+
}; //DrawSettings

0 commit comments

Comments
 (0)