Material Initial Conditions Script Examples#
Download the blankModel.rs3v3 for this example.
from rs3.RS3Modeler import RS3Modeler
from rs3.properties.PropertyEnums import *
from rs3.projectSettings.ProjectSettingEnums import *
import os
import shutil
Get the current folder directory.
current_dir = os.path.dirname(os.path.abspath(""))
Specify a port number that is not in use and start the RS3 program.
port = 60201
RS3Modeler.startApplication(port)
2026-03-13 16:29:45,382 - Rocscience.RS3 - INFO - Attempting to start the application at C:\Program Files\Rocscience\RS3\RS3 and binding server to port 60201...
Connect with the RS3 Modeler.
modeler = RS3Modeler(port)
For the demonstration purposes only, the model is copied for reuse. You may change the model path to your own model path.
blankModelPath = rf"{current_dir}\example_models\blankModel.rs3v3"
copiedModelPath = rf"{current_dir}\example_models\copiedModel.rs3v3"
_ = shutil.copy(blankModelPath, copiedModelPath)
Open the copied model file.
model = modeler.openFile(copiedModelPath)
1. Create and Get Material#
Get the first material in the list.
material1 = model.getAllMaterialProperties()[0]
material1.getMaterialName()
'Soil'
newMaterialName = "New Material"
model.createNewMaterialProperty(newMaterialName)
newMaterial = model.getMaterialPropertyByName(newMaterialName)
newMaterial.getMaterialName()
'New Material'
2. Set Initial Conditions#
material1.InitialConditions.getProperties()
{'UnitWeight': 20.0,
'AccountForMoistureContentInUnitWeight': False,
'DryUnitWeight': 17.06,
'MoistureUnitWeight': 18.0,
'SaturatedUnitWeight': 20.0}
material1.InitialConditions.setUnitWeight(19.8)
material1.InitialConditions.getUnitWeight()
19.8
material1.InitialConditions.setProperties(AccountForMoistureContentInUnitWeight=True, MoistureUnitWeight=17.95)
material1.InitialConditions.getProperties()
{'UnitWeight': 19.8,
'AccountForMoistureContentInUnitWeight': True,
'DryUnitWeight': 17.06,
'MoistureUnitWeight': 17.95,
'SaturatedUnitWeight': 20.0}
3. Set Initial Water Conditions in FEA Groundwater Analysis#
Set the project to transient analysis.
model.ProjectSettings.Groundwater.setGroundwaterMethod(GroundwaterMethodType.GW_TRANSIENT)
model.ProjectSettings.Groundwater.getGroundwaterMethod()
<GroundwaterMethodType.GW_TRANSIENT: 'GW_TRANSIENT'>
Turn on initial water conditions.
material1.InitialConditions.setApplyInitialWaterConditions(True)
material1.InitialConditions.getApplyInitialWaterConditions()
True
3.1 Set Ru#
userDefinnedRuValueName = "Ru=1.2"
material1.InitialConditions.createNewWaterCondition(userDefinnedRuValueName, HydraulicParameterType.RU, 1.2)
material1.InitialConditions.setInitialWaterCondition(StaticWaterModes.USER_DEFINED_VALUE, userDefinnedRuValueName)
material1.InitialConditions.getInitialWaterCondition()
'Ru=1.2'
3.2 Set PWP#
userDefinnedPWPValueName = "PWP=98.1"
material1.InitialConditions.createNewWaterCondition(userDefinnedPWPValueName, HydraulicParameterType.PWP, 98.1)
material1.InitialConditions.setInitialWaterCondition(StaticWaterModes.USER_DEFINED_VALUE, userDefinnedPWPValueName)
material1.InitialConditions.getInitialWaterCondition()
'PWP=98.1'
3.3 Set Water Surface#
waterSurfaceName = "Water Surface"
model.createNewWaterByLocationProperty(waterSurfaceName)
waterSurface = model.getWaterByLocationPropertyByName(waterSurfaceName)
waterSurface.setWaterSurfaceLocation([(0, 0, -5), (0, 30, -5), (30, 30, -5), (30, 0, -5)])
material1.InitialConditions.setInitialWaterCondition(StaticWaterModes.WATER_SURFACE, waterSurfaceName)
material1.InitialConditions.getInitialWaterCondition()
'Water Surface'
3.4 Set Water Grid#
waterGridName = "Water Grid"
model.createNewWaterGridProperty(waterGridName)
waterGrid = model.getWaterGridPropertyByName(waterGridName)
waterGrid.setIs3D(True)
waterGrid.setWaterGridPoints([(0, 0, 0, -5), (0, 30, 0, -5), (30, 30, 0, -5), (30, 0, 0, -5)])
material1.InitialConditions.setInitialWaterCondition(StaticWaterModes.PWP_POINT_SET, waterGridName)
material1.InitialConditions.getInitialWaterCondition()
'Water Grid'
3.5 Set to Dry#
material1.InitialConditions.setInitialWaterCondition(StaticWaterModes.DRY)
material1.InitialConditions.getInitialWaterCondition()
'Dry'
4. Delete Materials#
model.deleteMaterialProperty(newMaterialName)
allMaterials = model.getAllMaterialProperties()
for material in allMaterials:
print(material.getMaterialName())
Soil
Concrete
Material 3
Material 4
Material 5
Save and close the model.
model.close(True)
Close the program.
modeler.closeProgram()
Full Script#
# Material Initial Conditions Script Examples
# Download the [blankModel.rs3v3](https://github.com/Rocscience/rs3-scripting/tree/main/docs/example_code/example_models/blankModel.rs3v3) for this example.
from rs3.RS3Modeler import RS3Modeler
from rs3.properties.PropertyEnums import *
from rs3.projectSettings.ProjectSettingEnums import *
import os
import shutil
# Get the current folder directory.
current_dir = os.path.dirname(os.path.abspath(""))
# Specify a port number that is not in use and start the RS3 program.
port = 60201
RS3Modeler.startApplication(port)
# Connect with the RS3 Modeler.
modeler = RS3Modeler(port)
# For the demonstration purposes only, the model is copied for reuse. You may change the model path to your own model path.
blankModelPath = rf"{current_dir}\example_models\blankModel.rs3v3"
copiedModelPath = rf"{current_dir}\example_models\copiedModel.rs3v3"
_ = shutil.copy(blankModelPath, copiedModelPath)
# Open the copied model file.
model = modeler.openFile(copiedModelPath)
# 1. Create and Get Material
# Get the first material in the list.
material1 = model.getAllMaterialProperties()[0]
newMaterialName = "New Material"
model.createNewMaterialProperty(newMaterialName)
newMaterial = model.getMaterialPropertyByName(newMaterialName)
# 2. Set Initial Conditions
material1.InitialConditions.setUnitWeight(19.8)
material1.InitialConditions.setProperties(AccountForMoistureContentInUnitWeight=True, MoistureUnitWeight=17.95)
# 3. Set Initial Water Conditions in FEA Groundwater Analysis
# Set the project to transient analysis.
model.ProjectSettings.Groundwater.setGroundwaterMethod(GroundwaterMethodType.GW_TRANSIENT)
# Turn on initial water conditions.
material1.InitialConditions.setApplyInitialWaterConditions(True)
# 3.1 Set Ru
userDefinnedRuValueName = "Ru=1.2"
material1.InitialConditions.createNewWaterCondition(userDefinnedRuValueName, HydraulicParameterType.RU, 1.2)
material1.InitialConditions.setInitialWaterCondition(StaticWaterModes.USER_DEFINED_VALUE, userDefinnedRuValueName)
# 3.2 Set PWP
userDefinnedPWPValueName = "PWP=98.1"
material1.InitialConditions.createNewWaterCondition(userDefinnedPWPValueName, HydraulicParameterType.PWP, 98.1)
material1.InitialConditions.setInitialWaterCondition(StaticWaterModes.USER_DEFINED_VALUE, userDefinnedPWPValueName)
# 3.3 Set Water Surface
waterSurfaceName = "Water Surface"
model.createNewWaterByLocationProperty(waterSurfaceName)
waterSurface = model.getWaterByLocationPropertyByName(waterSurfaceName)
waterSurface.setWaterSurfaceLocation([(0, 0, -5), (0, 30, -5), (30, 30, -5), (30, 0, -5)])
material1.InitialConditions.setInitialWaterCondition(StaticWaterModes.WATER_SURFACE, waterSurfaceName)
# 3.4 Set Water Grid
waterGridName = "Water Grid"
model.createNewWaterGridProperty(waterGridName)
waterGrid = model.getWaterGridPropertyByName(waterGridName)
waterGrid.setIs3D(True)
waterGrid.setWaterGridPoints([(0, 0, 0, -5), (0, 30, 0, -5), (30, 30, 0, -5), (30, 0, 0, -5)])
material1.InitialConditions.setInitialWaterCondition(StaticWaterModes.PWP_POINT_SET, waterGridName)
# 3.5 Set to Dry
material1.InitialConditions.setInitialWaterCondition(StaticWaterModes.DRY)
# 4. Delete Materials
model.deleteMaterialProperty(newMaterialName)
allMaterials = model.getAllMaterialProperties()
for material in allMaterials:
print(material.getMaterialName())
# Save and close the model.
model.close(True)
2026-03-13 16:30:42,639 - Rocscience.RS3 - INFO - Attempting to start the application at C:\Program Files\Rocscience\RS3\RS3 and binding server to port 60201...
Soil
Concrete
Material 3
Material 4
Material 5