Skip to content

Commit f0f2b3b

Browse files
unified FEM conditions for 2D and 3D
fixed normalized vector in 2D dem condition
1 parent 17a3802 commit f0f2b3b

4 files changed

Lines changed: 82 additions & 288 deletions

File tree

kratos.gid/apps/CDEM/write/writeMDPA_Walls.tcl

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,7 @@ proc DEM::write::WriteMDPAWalls { } {
1414
CDEM::write::writeConditions $wall_properties
1515

1616
# SubmodelParts
17-
if {$::Model::SpatialDimension eq "2D"} {DEM::write::writeWallConditionMeshes2D
18-
} else {DEM::write::writeWallConditionMeshes}
17+
DEM::write::writeWallConditionMeshes
1918

2019
# CustomSubmodelParts
2120
WriteWallCustomSmp

kratos.gid/apps/DEM/write/writeMDPA_Parts.tcl

Lines changed: 33 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -141,10 +141,14 @@ proc DEM::write::writeDEMConditionMeshes { } {
141141
# Linear velocity
142142
set velocity [write::getValueByNode [$group_node selectNodes "./value\[@n='VelocityModulus'\]"]]
143143
lassign [write::getValueByNode [$group_node selectNodes "./value\[@n='DirectionVector'\]"]] velocity_X velocity_Y velocity_Z
144-
lassign [MathUtils::VectorNormalized [list $velocity_X $velocity_Y $velocity_Z]] velocity_X velocity_Y velocity_Z
145-
lassign [MathUtils::ScalarByVectorProd $velocity [list $velocity_X $velocity_Y $velocity_Z] ] vx vy vz
146-
if {$::Model::SpatialDimension eq "2D"} {write::WriteString " LINEAR_VELOCITY \[3\] ($vx, $vy, 0.0)"
147-
} else {write::WriteString " LINEAR_VELOCITY \[3\] ($vx, $vy, $vz)"}
144+
if {$::Model::SpatialDimension eq "2D"} {
145+
lassign [MathUtils::VectorNormalized [list $velocity_X $velocity_Y]] velocity_X velocity_Y
146+
lassign [MathUtils::ScalarByVectorProd $velocity [list $velocity_X $velocity_Y] ] vx vy
147+
write::WriteString " LINEAR_VELOCITY \[3\] ($vx, $vy, 0.0)"
148+
} else {
149+
lassign [MathUtils::VectorNormalized [list $velocity_X $velocity_Y $velocity_Z]] velocity_X velocity_Y velocity_Z
150+
lassign [MathUtils::ScalarByVectorProd $velocity [list $velocity_X $velocity_Y $velocity_Z] ] vx vy vz
151+
write::WriteString " LINEAR_VELOCITY \[3\] ($vx, $vy, $vz)"}
148152

149153
# Period
150154
set periodic [write::getValueByNode [$group_node selectNodes "./value\[@n='LinearPeriodic'\]"]]
@@ -155,11 +159,12 @@ proc DEM::write::writeDEMConditionMeshes { } {
155159

156160
# Angular velocity
157161
set avelocity [write::getValueByNode [$group_node selectNodes "./value\[@n='AngularVelocityModulus'\]"]]
158-
lassign [write::getValueByNode [$group_node selectNodes "./value\[@n='AngularDirectionVector'\]"]] velocity_X velocity_Y velocity_Z
159-
lassign [MathUtils::VectorNormalized [list $velocity_X $velocity_Y $velocity_Z]] velocity_X velocity_Y velocity_Z
160-
lassign [MathUtils::ScalarByVectorProd $avelocity [list $velocity_X $velocity_Y $velocity_Z] ] wX wY wZ
161162
if {$::Model::SpatialDimension eq "2D"} {write::WriteString " ANGULAR_VELOCITY \[3\] (0.0,0.0,$avelocity)"
162-
} else {write::WriteString " ANGULAR_VELOCITY \[3\] ($wX,$wY,$wZ)"}
163+
} else {
164+
lassign [write::getValueByNode [$group_node selectNodes "./value\[@n='AngularDirectionVector'\]"]] velocity_X velocity_Y velocity_Z
165+
lassign [MathUtils::VectorNormalized [list $velocity_X $velocity_Y $velocity_Z]] velocity_X velocity_Y velocity_Z
166+
lassign [MathUtils::ScalarByVectorProd $avelocity [list $velocity_X $velocity_Y $velocity_Z] ] wX wY wZ
167+
write::WriteString " ANGULAR_VELOCITY \[3\] ($wX,$wY,$wZ)"}
163168

164169
# Angular center of rotation
165170
lassign [write::getValueByNode [$group_node selectNodes "./value\[@n='CenterOfRotation'\]"]] oX oY oZ
@@ -273,33 +278,36 @@ proc DEM::write::writeDEMConditionMeshes { } {
273278
# Linear velocity
274279
set velocity [write::getValueByNode [$group_node selectNodes "./value\[@n='InitialVelocityModulus'\]"]]
275280
lassign [write::getValueByNode [$group_node selectNodes "./value\[@n='iDirectionVector'\]"]] velocity_X velocity_Y velocity_Z
276-
lassign [MathUtils::VectorNormalized [list $velocity_X $velocity_Y $velocity_Z]] velocity_X velocity_Y velocity_Z
277-
lassign [MathUtils::ScalarByVectorProd $velocity [list $velocity_X $velocity_Y $velocity_Z] ] vx vy vz
278-
#write::WriteString " INITIAL_VELOCITY \[3\] ($vx, $vy, $vz)" # why arent we using vectorial def for this
279-
write::WriteString " INITIAL_VELOCITY_X_VALUE $vx"
280-
write::WriteString " INITIAL_VELOCITY_Y_VALUE $vy"
281-
if {$::Model::SpatialDimension eq "2D"} {write::WriteString " INITIAL_VELOCITY_Z_VALUE 0.0"
282-
} else {write::WriteString " INITIAL_VELOCITY_Z_VALUE $vz"}
281+
#write::WriteString " INITIAL_VELOCITY \[3\] ($vx, $vy, $vz)"
282+
if {$::Model::SpatialDimension eq "2D"} {
283+
lassign [MathUtils::VectorNormalized [list $velocity_X $velocity_Y]] velocity_X velocity_Y
284+
lassign [MathUtils::ScalarByVectorProd $velocity [list $velocity_X $velocity_Y] ] vx vy
285+
write::WriteString " INITIAL_VELOCITY_X_VALUE $vx"
286+
write::WriteString " INITIAL_VELOCITY_Y_VALUE $vy"
287+
write::WriteString " INITIAL_VELOCITY_Z_VALUE 0.0"
288+
} else {
289+
lassign [MathUtils::VectorNormalized [list $velocity_X $velocity_Y $velocity_Z]] velocity_X velocity_Y velocity_Z
290+
lassign [MathUtils::ScalarByVectorProd $velocity [list $velocity_X $velocity_Y $velocity_Z] ] vx vy vz
291+
write::WriteString " INITIAL_VELOCITY_X_VALUE $vx"
292+
write::WriteString " INITIAL_VELOCITY_Y_VALUE $vy"
293+
write::WriteString " INITIAL_VELOCITY_Z_VALUE $vz"}
283294

284295
# Angular velocity
285296
set avelocity [write::getValueByNode [$group_node selectNodes "./value\[@n='InitialAngularVelocityModulus'\]"]]
286-
lassign [write::getValueByNode [$group_node selectNodes "./value\[@n='iAngularDirectionVector'\]"]] velocity_X velocity_Y velocity_Z
287-
lassign [MathUtils::VectorNormalized [list $velocity_X $velocity_Y $velocity_Z]] velocity_X velocity_Y velocity_Z
288-
lassign [MathUtils::ScalarByVectorProd $avelocity [list $velocity_X $velocity_Y $velocity_Z] ] wX wY wZ
289-
290297
if {$::Model::SpatialDimension eq "2D"} {
291298
write::WriteString " INITIAL_ANGULAR_VELOCITY_X_VALUE 0.0"
292299
write::WriteString " INITIAL_ANGULAR_VELOCITY_Y_VALUE 0.0"
293300
write::WriteString " INITIAL_ANGULAR_VELOCITY_Z_VALUE $avelocity"
294301
} else {
302+
lassign [write::getValueByNode [$group_node selectNodes "./value\[@n='iAngularDirectionVector'\]"]] velocity_X velocity_Y velocity_Z
303+
lassign [MathUtils::VectorNormalized [list $velocity_X $velocity_Y $velocity_Z]] velocity_X velocity_Y velocity_Z
304+
lassign [MathUtils::ScalarByVectorProd $avelocity [list $velocity_X $velocity_Y $velocity_Z] ] wX wY wZ
295305
write::WriteString " INITIAL_ANGULAR_VELOCITY_X_VALUE $wX"
296306
write::WriteString " INITIAL_ANGULAR_VELOCITY_Y_VALUE $wY"
297307
write::WriteString " INITIAL_ANGULAR_VELOCITY_Z_VALUE $wZ"}
298-
299308
}
300309
#Hardcoded
301310
write::WriteString " RIGID_BODY_MOTION $rigid_body_motion"
302-
303311
write::WriteString " End SubModelPartData"
304312
write::WriteString " Begin SubModelPartNodes"
305313
GiD_WriteCalculationFile nodes -sorted [dict create [write::GetWriteGroupName $group] [subst "%10i\n"]]
@@ -342,16 +350,15 @@ proc DEM::write::GetSpheresGroups { } {
342350
if {$::Model::SpatialDimension eq "2D"} { set xp1 "[spdAux::getRoute [GetAttribute conditions_un]]/condition\[@n = 'DEM-VelocityBC2D'\]/group"
343351
} else {set xp1 "[spdAux::getRoute [GetAttribute conditions_un]]/condition\[@n = 'DEM-VelocityBC'\]/group"}
344352
foreach group [[customlib::GetBaseRoot] selectNodes $xp1] {
345-
set groupid [$group @n]
346-
lappend groups [write::GetWriteGroupName $groupid]
353+
set groupid [$group @n]
354+
lappend groups [write::GetWriteGroupName $groupid]
347355
}
348356
if {$::Model::SpatialDimension eq "2D"} { set xp2 "[spdAux::getRoute [GetAttribute conditions_un]]/condition\[@n = 'DEM-VelocityIC2D'\]/group"
349357
} else {set xp2 "[spdAux::getRoute [GetAttribute conditions_un]]/condition\[@n = 'DEM-VelocityIC'\]/group"}
350358
foreach group [[customlib::GetBaseRoot] selectNodes $xp2] {
351-
set groupid [$group @n]
352-
lappend groups [write::GetWriteGroupName $groupid]
359+
set groupid [$group @n]
360+
lappend groups [write::GetWriteGroupName $groupid]
353361
}
354-
355362
return $groups
356363
}
357364

0 commit comments

Comments
 (0)