Yes, this feature was added in GeoDict 2025.
In the 2024 version, it is always Single Phase mode.
Best regards,
Jürgen
In the 2024 version, it is always Single Phase mode.
Best regards,
Jürgen
This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Show posts MenuSetTemperature_args = {
'Temperature' : (293.15, 'K'),
}
gd.runCmd("GeoDict:SetTemperature", SetTemperature_args, "2021")
gd.getConstituentMaterials( "2021" )Header = {
'Release' : '2021',
}
Description = '''
Compute flow for different temperatures.
'''
def createBaseGeo():
Create_args_1 = {
'Domain' : {
'PeriodicX' : False,
'PeriodicY' : False,
'PeriodicZ' : False,
'OriginX' : (0, 'm'),
'OriginY' : (0, 'm'),
'OriginZ' : (0, 'm'),
'VoxelLength' : (1e-06, 'm'),
'DomainMode' : 'VoxelNumber', # Possible values: VoxelNumber, Length, VoxelNumberAndLength
'NX' : 100,
'NY' : 100,
'NZ' : 100,
'Material' : {
'Name' : 'Air',
'Type' : 'Fluid', # Possible values: Fluid, Solid, Porous, Undefined
'Information' : '',
},
'OverlapMode' : 'GivenMaterial', # Possible values: OverlapMaterial, NewMaterial, OldMaterial, GivenMaterial
'OverlapMaterialID' : 3,
'NumOverlapRules' : 2,
'OverlapRule1' : {
'MaterialID1' : 1,
'MaterialID2' : 1,
'OverlapMaterialID' : 1,
},
'OverlapRule2' : {
'MaterialID1' : 2,
'MaterialID2' : 2,
'OverlapMaterialID' : 2,
},
'HollowMaterialID' : 0,
'PostProcessing' : {
'ResolveOverlap' : False,
'MarkContactVoxels' : False,
'ContactMaterialID' : 3,
},
},
'MaximalTime' : (24, 'h'),
'OverlapMode' : 'AllowOverlap', # Possible values: AllowOverlap, RemoveOverlap, ForceConnection, IsolationDistance, ProhibitWithExisting, ProhibitOverlap, MatchSVFDistribution
'StoppingCriterion' : 'SolidVolumePercentage',# Possible values: SolidVolumePercentage, NumberOfObjects, Grammage, Density, WeightPercentage, FillToRim, SVP, Number
'NumberOfObjects' : 100,
'SolidVolumePercentage' : (10, '%'),
'Grammage' : (10, 'g/m^2'),
'Density' : (0, 'g/cm^3'),
'WeightPercentage' : (0, '%'),
'SaveGadStep' : 10,
'RecordIntermediateResult' : False,
'InExisting' : False,
'KeepStructure' : False,
'MatchSVFDistribution' : {
'ErrorBound' : 0.001,
'CoarseningFactor' : 10,
'MatchMode' : 'Gauss', # Possible values: Gauss, Gradient
'RelativeDensity' : True,
'DensityFunction' : {
'XValues' : [0, 0.5, 1],
'YValues' : [1, 0.1, 1],
},
'CorrelationLengthX' : (2e-05, 'm'),
'CorrelationLengthY' : (2e-05, 'm'),
'CorrelationLengthZ' : (1e-05, 'm'),
'StandardDeviation' : 0.5,
},
'RemoveOverlap' : {
'Iterations' : 1000,
'OverlapSVP' : (0, '%'),
'SVPUnchanged' : 20,
'AllowShift' : True,
'AllowRotation' : True,
'AllowDeformation' : True,
'NumberOfShifts' : 10,
'ShiftDistance' : (2, 'Voxel'),
'NumberOfRotations' : 20,
'MaximalAngle' : 60,
'DistanceMode' : 'Touch', # Possible values: Touch, Overlap, Isolation, AvoidContact
'IsolationDistance' : (0, 'm'),
'MaximalOverlap' : (0, 'm'),
},
'IsolationDistance' : (0, 'm'),
'PercentageType' : 0,
'RandomSeed' : 47,
'ResultFileName' : 'FiberGeo.gdr',
'MatrixDensity' : (0, 'g/cm^3'),
'MaterialMode' : 'Material', # Possible values: Material, MaterialID
'MaterialIDMode' : 'MaterialIDPerObjectType',# Possible values: MaterialIDPerObjectType, MaterialIDPerMaterial
'OverlapMaterial' : {
'Name' : 'Glass',
'Type' : 'Solid', # Possible values: Fluid, Solid, Porous, Undefined
'Information' : 'Overlap',
},
'ContactMaterial' : {
'Name' : 'Glass',
'Type' : 'Solid', # Possible values: Fluid, Solid, Porous, Undefined
'Information' : 'Contact',
},
'NumberOfGenerators' : 2,
'Generator1' : {
'Material' : {
'Name' : 'Glass',
'Type' : 'Solid', # Possible values: Fluid, Solid, Porous, Undefined
'Information' : 'Fiber',
},
'Probability' : 0.5,
'SpecificWeight' : (2.58, 'g/cm^3'),
'Type' : 'InfiniteCircularFiberGenerator',
'UseDTex' : False,
'DiameterDistribution' : {
'Type' : 'Constant', # Possible values: Constant, UniformlyInInterval, Gaussian, Table, LogNormal
'Value' : 1e-05,
},
'OrientationDistribution' : {
'Type' : 'AnisotropicDirection',# Possible values: Isotropic, AnisotropicDirection, AnisotropicOrientation, GivenDirection, InXYPlane, AngleAroundDirection, UNDEF
'DirectionMode' : 'AnisotropyParameter',# Possible values: AnisotropyParameter, DirectionTensor
'Anisotropy1' : 7,
'Anisotropy2' : 1,
'Phi' : 0,
'Theta' : 0,
'Psi' : 0,
},
},
'Generator2' : {
'Material' : {
'Name' : 'Glass',
'Type' : 'Solid', # Possible values: Fluid, Solid, Porous, Undefined
'Information' : 'Fiber',
},
'Probability' : 0.5,
'SpecificWeight' : (2.58, 'g/cm^3'),
'Type' : 'InfiniteCircularFiberGenerator',
'UseDTex' : False,
'DiameterDistribution' : {
'Type' : 'Constant', # Possible values: Constant, UniformlyInInterval, Gaussian, Table, LogNormal
'Value' : 6e-06,
},
'OrientationDistribution' : {
'Type' : 'AnisotropicDirection',# Possible values: Isotropic, AnisotropicDirection, AnisotropicOrientation, GivenDirection, InXYPlane, AngleAroundDirection, UNDEF
'DirectionMode' : 'AnisotropyParameter',# Possible values: AnisotropyParameter, DirectionTensor
'Anisotropy1' : 5,
'Anisotropy2' : 1,
'Phi' : 0,
'Theta' : 0,
'Psi' : 0,
},
},
'Temperature' : (293.15, 'K'),
}
gd.runCmd("FiberGeo:Create", Create_args_1, Header['Release'])
def getConstituentMaterials(temp):
SetTemperature_args_1 = {
'Temperature' : (273.15+temp, 'K'),
}
gd.runCmd("GeoDict:SetTemperature", SetTemperature_args_1, Header['Release'])
coMatDict = gd.getConstituentMaterials( Header['Release'] )
coMatDict['ChosenFluid'] = {
'Fluid' : 'Air',
}
return coMatDict
def getStokesPara(coMatDict, temp):
SolveStokesDict = {
'ResultFileName' : 'StokesResult_T' + str(temp) + '.gdr',
'ConstituentMaterials' : {},
'SolverData' : {
'DirectionEnabledX' : 0,
'DirectionEnabledY' : 0,
'DirectionEnabledZ' : 1,
'CharLengthMode' : 'PERMEABILITY', # Possible values: PERMEABILITY, PORE_SIZE, FIBER_SIZE, USER_GIVEN
'GivenCharLength' : 1,
'PressureDifference' : (0.02, 'Pa'),
'MeanVelocity' : (0.1, 'm/s'),
'FlowRate' : (60, 'l/min'),
'FlowArea' : (100, 'cm^2'),
'ExperimentIO' : 'PressureDrop',
'AddInletOutlet' : True,
'InletLength' : 10,
'OutletLength' : 10,
'SlipLength' : 0,
'NormalBcType' : 'Periodic',
'TangentialBcYInX' : 'Periodic',
'TangentialBcZInX' : 'Periodic',
'TangentialBcXInY' : 'Periodic',
'TangentialBcZInY' : 'Periodic',
'TangentialBcXInZ' : 'Periodic',
'TangentialBcYInZ' : 'Periodic',
'Parallelization' : {
'Mode' : 'LOCAL_MAX', # Possible values: Sequential, LOCAL_THREADS, LOCAL_MPI, LOCAL_MAX, CLUSTER, Undefined
},
'DiscardTemporaryFiles' : False,
'AnalyzeGeometry' : True,
'Restart' : 0,
'RestartFileName' : '',
'RestartSaveIntervalTime' : 6,
'UseTolerance' : False,
'Tolerance' : 0.0001,
'UseErrorBound' : True,
'ErrorBound' : 0.01,
'MaxNumberOfIterations' : 100000,
'MaximalSolverRunTime' : (240, 'h'),
'UseMaxIterations' : False,
'UseMaxTime' : False,
'UseLateral' : False,
'UseMultigrid' : True,
'Optimization' : 'Speed',
'GridType' : 'LIR-Tree',
'Relaxation' : 1,
'Refinement' : 'ENABLED', # Possible values: ENABLED, DISABLED, MANUAL
'WriteCompressedFields' : True,
},
}
SolveStokesDict['ConstituentMaterials'] = coMatDict;
return SolveStokesDict
# start main
createBaseGeo()
temp = 20.0 # Celsius
gd.runCmd( "FlowDict:SolveLIRStokes", getStokesPara( getConstituentMaterials( temp ), temp ), Header['Release'] )
temp = 50.0 # Celsius
gd.runCmd( "FlowDict:SolveLIRStokes", getStokesPara( getConstituentMaterials( temp ), temp ), Header['Release'] )