Skip to content

Commit e1c7f76

Browse files
Merge pull request #676 from KratosMultiphysics/dem/results-for-cdem
Failure criterion state printed for CDEM
2 parents 68dc40c + a0ed39a commit e1c7f76

10 files changed

Lines changed: 93 additions & 264 deletions

File tree

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

Lines changed: 18 additions & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -2,46 +2,8 @@
22
# Project Parameters
33

44
proc CDEM::write::getParametersDict { } {
5-
set project_parameters_dict [dict create]
5+
set project_parameters_dict [DEM::write::getParametersDict]
66

7-
if {$::Model::SpatialDimension eq "2D"} {set dimension [expr 2]
8-
} else {set dimension [expr 3]}
9-
dict set project_parameters_dict "Dimension" [expr $dimension]
10-
dict set project_parameters_dict "PeriodicDomainOption" [write::getValue Boundingbox PeriodicDomain]
11-
dict set project_parameters_dict "BoundingBoxOption" [write::getValue Boundingbox UseBB]
12-
dict set project_parameters_dict "AutomaticBoundingBoxOption" [write::getValue Boundingbox AutomaticBB]
13-
dict set project_parameters_dict "BoundingBoxEnlargementFactor" [write::getValue Boundingbox BBFactor]
14-
dict set project_parameters_dict "BoundingBoxStartTime" [write::getValue Boundingbox StartTime]
15-
dict set project_parameters_dict "BoundingBoxStopTime" [write::getValue Boundingbox StopTime]
16-
dict set project_parameters_dict "BoundingBoxMaxX" [write::getValue Boundingbox MaxX]
17-
dict set project_parameters_dict "BoundingBoxMaxY" [write::getValue Boundingbox MaxY]
18-
dict set project_parameters_dict "BoundingBoxMaxZ" [write::getValue Boundingbox MaxZ]
19-
dict set project_parameters_dict "BoundingBoxMinX" [write::getValue Boundingbox MinX]
20-
dict set project_parameters_dict "BoundingBoxMinY" [write::getValue Boundingbox MinY]
21-
dict set project_parameters_dict "BoundingBoxMinZ" [write::getValue Boundingbox MinZ]
22-
23-
# dem_inlet_option
24-
set numinlets [llength [DEM::write::GetInletGroups]]
25-
if {$numinlets == 0} {
26-
set dem_inlet_option "false"
27-
} else {
28-
set dem_inlet_option "true"
29-
}
30-
dict set project_parameters_dict "dem_inlet_option" $dem_inlet_option
31-
32-
# Gravity
33-
lassign [DEM::write::GetGravity] gx gy gz
34-
# Add data to the parameters_dict
35-
dict set project_parameters_dict "GravityX" $gx
36-
dict set project_parameters_dict "GravityY" $gy
37-
dict set project_parameters_dict "GravityZ" $gz
38-
39-
# Advanced option are disabled
40-
dict set project_parameters_dict "RotationOption" [write::getValue AdvOptions CalculateRotations]
41-
dict set project_parameters_dict "CleanIndentationsOption" [write::getValue AdvOptions CleanIndentations]
42-
set strategy_parameters_dict [dict create]
43-
44-
# set ElementType [::wkcf::GetElementType] # TODO: check old ::wkcf::GetElementType functionalities if required
457
set ElementType SphericContPartDEMElement3D
468
if {$ElementType eq "SphericPartDEMElement3D" || $ElementType eq "CylinderPartDEMElement2D"} {
479
set dem_strategy "sphere_strategy"
@@ -57,10 +19,8 @@ proc CDEM::write::getParametersDict { } {
5719
set dem_strategy "ice_continuum_sphere_strategy"
5820
}
5921

60-
61-
dict set strategy_parameters_dict "RemoveBallsInitiallyTouchingWalls" [write::getValue AdvOptions RemoveParticlesInWalls]
62-
dict set strategy_parameters_dict "strategy" $dem_strategy
63-
dict set project_parameters_dict "solver_settings" $strategy_parameters_dict
22+
dict set project_parameters_dict "solver_settings" "strategy" $dem_strategy
23+
dict set project_parameters_dict "ElementType" $ElementType
6424

6525
dict set project_parameters_dict "DeltaOption" [write::getValue AdvOptions DeltaOption]
6626
dict set project_parameters_dict "SearchTolerance" [write::getValue AdvOptions TangencyToleranceValueAbsolute]
@@ -71,110 +31,35 @@ proc CDEM::write::getParametersDict { } {
7131
dict set project_parameters_dict "ComputeStressTensorOption" [write::getValue AdvOptions ComputeStressTensorOption]
7232
dict set project_parameters_dict "MaxAmplificationRatioOfSearchRadius" 1000
7333

74-
dict set project_parameters_dict "VirtualMassCoefficient" [write::getValue AdvOptions VirtualMassCoef]
75-
dict set project_parameters_dict "RollingFrictionOption" [write::getValue AdvOptions RollingFriction]
76-
dict set project_parameters_dict "GlobalDamping" [write::getValue AdvOptions GlobalDamping]
77-
dict set project_parameters_dict "ContactMeshOption" [write::getValue BondElem ContactMeshOption]
78-
dict set project_parameters_dict "OutputFileType" [write::getValue GiDOptions GiDPostMode]
79-
dict set project_parameters_dict "Multifile" [write::getValue GiDOptions GiDMultiFileFlag]
80-
dict set project_parameters_dict "ElementType" $ElementType
81-
82-
dict set project_parameters_dict "TranslationalIntegrationScheme" [write::getValue DEMTranslationalScheme]
83-
dict set project_parameters_dict "RotationalIntegrationScheme" [write::getValue DEMRotationalScheme]
84-
set time_params [DEM::write::GetTimeSettings]
85-
set MaxTimeStep [dict get $time_params DeltaTime]
86-
# TODO: MAXTIMESTEP is get from General and it should be getting its value from DEM block
87-
dict set project_parameters_dict "MaxTimeStep" $MaxTimeStep
88-
set FinalTime [dict get $time_params EndTime]
89-
dict set project_parameters_dict "FinalTime" $FinalTime
90-
# TODO: check for inconsistencies in DEMTIMEPARAMETERS UN
91-
# dict set project_parameters_dict "ControlTime" [write::getValue DEMTimeParameters ScreenInfoOutput]
92-
dict set project_parameters_dict "NeighbourSearchFrequency" [write::getValue DEMTimeParameters NeighbourSearchFrequency]
93-
dict set project_parameters_dict "GraphExportFreq" [write::getValue DGraphs GraphExportFreq]
94-
dict set project_parameters_dict "VelTrapGraphExportFreq" 1e-3
95-
9634
set material_test_parameters_dict [dict create]
9735
set material_analysis [write::getValue DEMTestMaterial Active]
9836
if {$material_analysis == "true"} {
99-
100-
dict set material_test_parameters_dict "TestType" [write::getValue DEMTestMaterial TestType]
101-
dict set material_test_parameters_dict "ConfinementPressure" [write::getValue DEMTestMaterial ConfinementPressure]
102-
dict set material_test_parameters_dict "LoadingVelocity" [write::getValue DEMTestMaterial LoadVelocity]
103-
dict set material_test_parameters_dict "MeshType" [write::getValue DEMTestMaterial Meshtype]
104-
dict set material_test_parameters_dict "SpecimenLength" [write::getValue DEMTestMaterial Specimenlength]
105-
dict set material_test_parameters_dict "SpecimenDiameter" [write::getValue DEMTestMaterial Specimendiameter]
106-
set SpecimenDiameter [write::getValue DEMTestMaterial Specimendiameter]
107-
set MeasuringSurface [expr ($SpecimenDiameter*$SpecimenDiameter*3.141592/4.0)]
108-
dict set material_test_parameters_dict "MeasuringSurface" $MeasuringSurface
109-
110-
dict set project_parameters_dict "material_test_settings" $material_test_parameters_dict
37+
dict set material_test_parameters_dict "TestType" [write::getValue DEMTestMaterial TestType]
38+
dict set material_test_parameters_dict "ConfinementPressure" [write::getValue DEMTestMaterial ConfinementPressure]
39+
dict set material_test_parameters_dict "LoadingVelocity" [write::getValue DEMTestMaterial LoadVelocity]
40+
dict set material_test_parameters_dict "MeshType" [write::getValue DEMTestMaterial Meshtype]
41+
dict set material_test_parameters_dict "SpecimenLength" [write::getValue DEMTestMaterial Specimenlength]
42+
dict set material_test_parameters_dict "SpecimenDiameter" [write::getValue DEMTestMaterial Specimendiameter]
43+
set SpecimenDiameter [write::getValue DEMTestMaterial Specimendiameter]
44+
set MeasuringSurface [expr ($SpecimenDiameter*$SpecimenDiameter*3.141592/4.0)]
45+
dict set material_test_parameters_dict "MeasuringSurface" $MeasuringSurface
46+
dict set project_parameters_dict "material_test_settings" $material_test_parameters_dict
11147
}
11248

113-
# Output timestep
114-
set output_criterion [write::getValue DEMResults DEM-OTimeStepType]
115-
if {$output_criterion eq "Detail_priority"} {
116-
set output_timestep [write::getValue DEMResults DEM-OTimeStepDetail]
117-
} elseif {$output_criterion eq "Storage_priority"} {
118-
set amount [write::getValue DEMResults DEM-OTimeStepStorage]
119-
set OTimeStepStorage [expr (double($FinalTime)/$amount)]
120-
set maxamount [expr ($FinalTime/$MaxTimeStep)]
121-
if {$amount < $maxamount} {
122-
set output_timestep $OTimeStepStorage
123-
} else {
124-
set output_timestep $MaxTimeStep
125-
}
126-
}
127-
dict set project_parameters_dict "OutputTimeStep" $output_timestep
128-
dict set project_parameters_dict "PostBoundingBox" [write::getValue Boundingbox PostBB]
129-
dict set project_parameters_dict "PostLocalContactForce" [write::getValue BondElem LocalContactForce]
130-
dict set project_parameters_dict "PostDisplacement" [write::getValue PostPrint Displacement]
131-
dict set project_parameters_dict "PostRadius" [write::getValue PostPrint Radius]
132-
dict set project_parameters_dict "PostVelocity" [write::getValue PostPrint PostVel]
133-
dict set project_parameters_dict "PostAngularVelocity" [write::getValue PostPrint AngularVelocity]
134-
dict set project_parameters_dict "PostElasticForces" [write::getValue PostPrint ElasForces]
135-
dict set project_parameters_dict "PostContactForces" [write::getValue PostPrint ContactForces]
136-
dict set project_parameters_dict "PostRigidElementForces" [write::getValue PostPrint RigidElementForces]
137-
dict set project_parameters_dict "PostStressStrainOption" [write::getValue PostPrint Stresses]
138-
dict set project_parameters_dict "PostTangentialElasticForces" [write::getValue PostPrint TangElasForces]
139-
dict set project_parameters_dict "PostTotalForces" [write::getValue PostPrint TotalForces]
140-
dict set project_parameters_dict "PostPressure" [write::getValue PostPrint Pressure]
141-
dict set project_parameters_dict "PostShearStress" [write::getValue PostPrint ShearStress]
142-
dict set project_parameters_dict "PostNonDimensionalVolumeWear" [write::getValue PostPrint Wear]
143-
dict set project_parameters_dict "PostParticleMoment" [write::getValue PostPrint ParticleMoment]
144-
dict set project_parameters_dict "PostEulerAngles" [write::getValue PostPrint EulerAngles]
145-
dict set project_parameters_dict "PostRollingResistanceMoment" [write::getValue PostPrint RollingResistanceMoment]
146-
#dict set project_parameters_dict "PostNodalArea" [write::getValue PostPrint NodalArea]
147-
#dict set project_parameters_dict "PostRHS" [write::getValue PostPrint Rhs]
148-
#dict set project_parameters_dict "PostDampForces" [write::getValue PostPrint DampForces]
149-
#dict set project_parameters_dict "PostAppliedForces" [write::getValue PostPrint AppliedForces]
150-
#dict set project_parameters_dict "PostGroupId" [write::getValue PostPrint GroupId]
151-
#dict set project_parameters_dict "PostExportId" [write::getValue PostPrint ExportId]
152-
dict set project_parameters_dict "problem_name" [Kratos::GetModelName]
49+
dict set project_parameters_dict "PostContactFailureId" [write::getValue BondElem TypeOfFailure]
15350

15451
return $project_parameters_dict
15552
}
15653

15754
proc CDEM::write::GetTimeSettings { } {
158-
set result [dict create]
159-
dict set result DeltaTime [write::getValue DEMTimeParameters DeltaTime]
160-
dict set result EndTime [write::getValue DEMTimeParameters EndTime]
161-
return $result
55+
return [DEM::write::GetTimeSettings]
16256
}
16357

16458
proc CDEM::write::GetGravity { } {
165-
set gravity_value [write::getValue DEMGravity GravityValue]
166-
set gravity_X [write::getValue DEMGravity Cx]
167-
set gravity_Y [write::getValue DEMGravity Cy]
168-
set gravity_Z [write::getValue DEMGravity Cz]
169-
# Normalize director vector
170-
lassign [MathUtils::VectorNormalized [list $gravity_X $gravity_Y $gravity_Z]] gravity_X gravity_Y gravity_Z
171-
# Get value by components
172-
lassign [MathUtils::ScalarByVectorProd $gravity_value [list $gravity_X $gravity_Y $gravity_Z] ] gx gy gz
173-
174-
return [list $gx $gy $gz]
59+
return [DEM::write::GetGravity]
17560
}
17661

17762
proc CDEM::write::writeParametersEvent { } {
178-
# write::SetParallelismConfiguration; # Node is being deleted at init
179-
write::WriteJSON [getParametersDict]
63+
write::SetParallelismConfiguration
64+
write::WriteJSON [CDEM::write::getParametersDict]
18065
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ConditionList>
3+
<ConditionItem n="DEM-Cohesive2D" pn="Bonded domains" Interval="False" ImplementedInApplication="DEMApplication" MinimumKratosVersion="9000" ProductionReady="ProductionReady" WorkingSpaceDimension="2D" ElementType="Surface" LocalSpaceDimension="1" ProcessName="Cohesive2D-Process" help="Assign this condition for each continuum group" VariableName="COHESIVE">
4+
<TopologyFeatures></TopologyFeatures>
5+
<inputs></inputs>
6+
<outputs></outputs>
7+
</ConditionItem>
8+
9+
<ConditionItem n="DEM-Cohesive" pn="Bonded domains" Interval="False" ImplementedInApplication="DEMApplication" MinimumKratosVersion="9000" ProductionReady="ProductionReady" WorkingSpaceDimension="3D" ElementType="Volume" LocalSpaceDimension="2" ProcessName="Cohesive-Process" help="Assign this condition for each continuum group" VariableName="COHESIVE">
10+
<TopologyFeatures></TopologyFeatures>
11+
<inputs></inputs>
12+
<outputs></outputs>
13+
</ConditionItem>
14+
</ConditionList>
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ProcessList>
3+
<Process n="Cohesive2D-Process" pn="Define bonded domains" python_module=" " kratos_module="KratosMultiphysics" check="DirectorVectorNonZero direction">
4+
<inputs>
5+
</inputs>
6+
</Process>
7+
8+
<Process n="Cohesive-Process" pn="Define bonded domains" python_module=" " kratos_module="KratosMultiphysics" check="DirectorVectorNonZero direction">
9+
<inputs>
10+
</inputs>
11+
</Process>
12+
</ProcessList>

0 commit comments

Comments
 (0)