@@ -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