Silo#
|   | In this example we will demonstrate: 
 
 | 
from math import inf
from dlubal.api import rfem
# Connect to the RFEM application
with rfem.Application() as rfem_app:
    # Create empty new model named 'silo'
    rfem_app.create_model(name='silo')
    # Cleanup the model
    rfem_app.delete_all_objects()
    # Define list of model objects to be created
    lst = [
        # Materials
        rfem.structure_core.Material(
            no=1,
            name="S450 | EN 1993-1-1:2005-05"),
        rfem.structure_core.Material(
            no=2,
            name="Sand, well-graded (SW) | DIN 18196:2011-05"),
        rfem.structure_core.Material(
            no=3,
            name="Dry air | --"),
        rfem.structure_core.Material(
            no=4,
            name="S450 | EN 1993-1-1:2005-05"),
        # Sections
        rfem.structure_core.Section(
            no=1,
            material=1,
            name="IPN 300"),
        rfem.structure_core.Section(
            no=2,
            material=1,
            name="UPE 200"),
        rfem.structure_core.Section(
            no=3,
            material=1,
            name="MSH KHP 88.9x3.6"),
        rfem.structure_core.Section(
            no=4,
            material=1,
            name="MSH KHP 88.9x3.6"),
        rfem.structure_core.Section(
            no=5,
            material=1,
            name="LU 0.3/0.2/0.01/0.01/0"),
        # Thicknesses
        rfem.structure_core.Thickness(
            no=1,
            material=4,
            uniform_thickness=0.01,
            assigned_to_surfaces=[2, 3, 4, 5]),
        rfem.structure_core.Thickness(
            no=2,
            material=1,
            uniform_thickness=0.008,
            assigned_to_surfaces=[1, 6, 7, 8, 9]),
        rfem.structure_core.Thickness(
            no=3,
            material=4,
            uniform_thickness=0.005,
            assigned_to_surfaces=[11]),
        # Nodes
        rfem.structure_core.Node(
            no=1,
            coordinate_1=0.0,
            coordinate_2=0.0,
            coordinate_3=0.0),
        rfem.structure_core.Node(
            no=2,
            coordinate_1=3.0,
            coordinate_2=0.0,
            coordinate_3=0.0),
        rfem.structure_core.Node(
            no=3,
            coordinate_1=3.0,
            coordinate_2=3.0,
            coordinate_3=0.0),
        rfem.structure_core.Node(
            no=4,
            coordinate_1=0.0,
            coordinate_2=3.0,
            coordinate_3=0.0),
        rfem.structure_core.Node(
            no=5,
            coordinate_1=0.0,
            coordinate_2=0.0,
            coordinate_3=-3.0),
        rfem.structure_core.Node(
            no=6,
            coordinate_1=1.5,
            coordinate_2=0.0,
            coordinate_3=-3.0),
        rfem.structure_core.Node(
            no=7,
            coordinate_1=3.0,
            coordinate_2=0.0,
            coordinate_3=-3.0),
        rfem.structure_core.Node(
            no=8,
            coordinate_1=3.0,
            coordinate_2=1.5,
            coordinate_3=-3.0),
        rfem.structure_core.Node(
            no=9,
            coordinate_1=3.0,
            coordinate_2=3.0,
            coordinate_3=-3.0),
        rfem.structure_core.Node(
            no=10,
            coordinate_1=1.5,
            coordinate_2=3.0,
            coordinate_3=-3.0),
        rfem.structure_core.Node(
            no=11,
            coordinate_1=0.0,
            coordinate_2=3.0,
            coordinate_3=-3.0),
        rfem.structure_core.Node(
            no=12,
            coordinate_1=0.0,
            coordinate_2=1.5,
            coordinate_3=-3.0),
        rfem.structure_core.Node(
            no=13,
            coordinate_1=0.0,
            coordinate_2=0.0,
            coordinate_3=-6.0),
        rfem.structure_core.Node(
            no=14,
            coordinate_1=1.5,
            coordinate_2=0.0,
            coordinate_3=-6.0),
        rfem.structure_core.Node(
            no=15,
            coordinate_1=3.0,
            coordinate_2=0.0,
            coordinate_3=-6.0),
        rfem.structure_core.Node(
            no=16,
            coordinate_1=3.0,
            coordinate_2=1.5,
            coordinate_3=-6.0),
        rfem.structure_core.Node(
            no=17,
            coordinate_1=3.0,
            coordinate_2=3.0,
            coordinate_3=-6.0),
        rfem.structure_core.Node(
            no=18,
            coordinate_1=1.5,
            coordinate_2=3.0,
            coordinate_3=-6.0),
        rfem.structure_core.Node(
            no=19,
            coordinate_1=0.0,
            coordinate_2=3.0,
            coordinate_3=-6.0),
        rfem.structure_core.Node(
            no=20,
            coordinate_1=0.0,
            coordinate_2=1.5,
            coordinate_3=-6.0),
        rfem.structure_core.Node(
            no=21,
            coordinate_1=0.75,
            coordinate_2=0.75,
            coordinate_3=-4.0),
        rfem.structure_core.Node(
            no=22,
            coordinate_1=2.25,
            coordinate_2=0.75,
            coordinate_3=-4.0),
        rfem.structure_core.Node(
            no=23,
            coordinate_1=2.25,
            coordinate_2=2.25,
            coordinate_3=-4.0),
        rfem.structure_core.Node(
            no=24,
            coordinate_1=0.75,
            coordinate_2=2.25,
            coordinate_3=-4.0),
        rfem.structure_core.Node(
            no=25,
            coordinate_1=0.0,
            coordinate_2=0.0,
            coordinate_3=-12.0),
        rfem.structure_core.Node(
            no=26,
            coordinate_1=3.0,
            coordinate_2=0.0,
            coordinate_3=-12.0),
        rfem.structure_core.Node(
            no=27,
            coordinate_1=3.0,
            coordinate_2=3.0,
            coordinate_3=-12.0),
        rfem.structure_core.Node(
            no=28,
            coordinate_1=0.0,
            coordinate_2=3.0,
            coordinate_3=-12.0),
        # Lines
        rfem.structure_core.Line(
            no=1,
            definition_nodes=[1, 5]),
        rfem.structure_core.Line(
            no=2,
            definition_nodes=[2, 7]),
        rfem.structure_core.Line(
            no=3,
            definition_nodes=[3, 9]),
        rfem.structure_core.Line(
            no=4,
            definition_nodes=[4, 11]),
        rfem.structure_core.Line(
            no=5,
            definition_nodes=[5, 13]),
        rfem.structure_core.Line(
            no=6,
            definition_nodes=[7, 15]),
        rfem.structure_core.Line(
            no=7,
            definition_nodes=[9, 17]),
        rfem.structure_core.Line(
            no=8,
            definition_nodes=[11, 19]),
        rfem.structure_core.Line(
            no=9,
            definition_nodes=[13, 14]),
        rfem.structure_core.Line(
            no=10,
            definition_nodes=[14, 15]),
        rfem.structure_core.Line(
            no=11,
            definition_nodes=[15, 16]),
        rfem.structure_core.Line(
            no=12,
            definition_nodes=[16, 17]),
        rfem.structure_core.Line(
            no=13,
            definition_nodes=[17, 18]),
        rfem.structure_core.Line(
            no=14,
            definition_nodes=[18, 19]),
        rfem.structure_core.Line(
            no=15,
            definition_nodes=[19, 20]),
        rfem.structure_core.Line(
            no=16,
            definition_nodes=[20, 13]),
        rfem.structure_core.Line(
            no=17,
            definition_nodes=[1, 6]),
        rfem.structure_core.Line(
            no=18,
            definition_nodes=[2, 6]),
        rfem.structure_core.Line(
            no=19,
            definition_nodes=[2, 8]),
        rfem.structure_core.Line(
            no=20,
            definition_nodes=[3, 8]),
        rfem.structure_core.Line(
            no=21,
            definition_nodes=[3, 10]),
        rfem.structure_core.Line(
            no=22,
            definition_nodes=[4, 10]),
        rfem.structure_core.Line(
            no=23,
            definition_nodes=[4, 12]),
        rfem.structure_core.Line(
            no=24,
            definition_nodes=[1, 12]),
        rfem.structure_core.Line(
            no=25,
            definition_nodes=[5, 14]),
        rfem.structure_core.Line(
            no=26,
            definition_nodes=[7, 14]),
        rfem.structure_core.Line(
            no=27,
            definition_nodes=[7, 16]),
        rfem.structure_core.Line(
            no=28,
            definition_nodes=[9, 16]),
        rfem.structure_core.Line(
            no=29,
            definition_nodes=[9, 18]),
        rfem.structure_core.Line(
            no=30,
            definition_nodes=[11, 18]),
        rfem.structure_core.Line(
            no=31,
            definition_nodes=[11, 20]),
        rfem.structure_core.Line(
            no=32,
            definition_nodes=[5, 20]),
        rfem.structure_core.Line(
            no=33,
            definition_nodes=[5, 6]),
        rfem.structure_core.Line(
            no=34,
            definition_nodes=[6, 7]),
        rfem.structure_core.Line(
            no=35,
            definition_nodes=[7, 8]),
        rfem.structure_core.Line(
            no=36,
            definition_nodes=[8, 9]),
        rfem.structure_core.Line(
            no=37,
            definition_nodes=[9, 10]),
        rfem.structure_core.Line(
            no=38,
            definition_nodes=[10, 11]),
        rfem.structure_core.Line(
            no=39,
            definition_nodes=[11, 12]),
        rfem.structure_core.Line(
            no=40,
            definition_nodes=[12, 5]),
        rfem.structure_core.Line(
            no=41,
            definition_nodes=[21, 22]),
        rfem.structure_core.Line(
            no=42,
            definition_nodes=[22, 23]),
        rfem.structure_core.Line(
            no=43,
            definition_nodes=[23, 24]),
        rfem.structure_core.Line(
            no=44,
            definition_nodes=[24, 21]),
        rfem.structure_core.Line(
            no=45,
            definition_nodes=[13, 21]),
        rfem.structure_core.Line(
            no=46,
            definition_nodes=[15, 22]),
        rfem.structure_core.Line(
            no=47,
            definition_nodes=[17, 23]),
        rfem.structure_core.Line(
            no=48,
            definition_nodes=[19, 24]),
        rfem.structure_core.Line(
            no=49,
            definition_nodes=[13, 25]),
        rfem.structure_core.Line(
            no=50,
            definition_nodes=[15, 26]),
        rfem.structure_core.Line(
            no=51,
            definition_nodes=[17, 27]),
        rfem.structure_core.Line(
            no=52,
            definition_nodes=[19, 28]),
        rfem.structure_core.Line(
            no=53,
            definition_nodes=[25, 26]),
        rfem.structure_core.Line(
            no=54,
            definition_nodes=[26, 27]),
        rfem.structure_core.Line(
            no=55,
            definition_nodes=[27, 28]),
        rfem.structure_core.Line(
            no=56,
            definition_nodes=[28, 25]),
        # Surfaces
        rfem.structure_core.Surface(
            no=1,
            boundary_lines=[41, 42, 43, 44]),
        rfem.structure_core.Surface(
            no=2,
            boundary_lines=[45, 41, 46, 10, 9]),
        rfem.structure_core.Surface(
            no=3,
            boundary_lines=[46, 42, 47, 12, 11]),
        rfem.structure_core.Surface(
            no=4,
            boundary_lines=[47, 43, 48, 14, 13]),
        rfem.structure_core.Surface(
            no=5,
            boundary_lines=[48, 44, 45, 16, 15]),
        rfem.structure_core.Surface(
            no=6,
            boundary_lines=[9, 10, 50, 53, 49]),
        rfem.structure_core.Surface(
            no=7,
            boundary_lines=[11, 12, 51, 54, 50]),
        rfem.structure_core.Surface(
            no=8,
            boundary_lines=[13, 14, 52, 55, 51]),
        rfem.structure_core.Surface(
            no=9,
            boundary_lines=[15, 16, 49, 56, 52]),
        rfem.structure_core.Surface(
            no=10,
            boundary_lines=[9, 10, 11, 12, 13, 14, 15, 16]),
        rfem.structure_core.Surface(
            no=11,
            boundary_lines=[53, 54, 55, 56]),
        # Beams
        rfem.structure_core.Member(
            no=1,
            line=1,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=1),
        rfem.structure_core.Member(
            no=2,
            line=2,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=1),
        rfem.structure_core.Member(
            no=3,
            line=3,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=1),
        rfem.structure_core.Member(
            no=4,
            line=4,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=1),
        rfem.structure_core.Member(
            no=5,
            line=5,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=1),
        rfem.structure_core.Member(
            no=6,
            line=6,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=1),
        rfem.structure_core.Member(
            no=7,
            line=7,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=1),
        rfem.structure_core.Member(
            no=8,
            line=8,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=1),
        # Ribs
        rfem.structure_core.Member(
            no=9,
            type=rfem.structure_core.Member.TYPE_RIB,
            section_start=2,
            line=9),
        rfem.structure_core.Member(
            no=10,
            type=rfem.structure_core.Member.TYPE_RIB,
            section_start=2,
            line=10),
        rfem.structure_core.Member(
            no=11,
            type=rfem.structure_core.Member.TYPE_RIB,
            section_start=2,
            line=11),
        rfem.structure_core.Member(
            no=12,
            type=rfem.structure_core.Member.TYPE_RIB,
            section_start=2,
            line=12),
        rfem.structure_core.Member(
            no=13,
            type=rfem.structure_core.Member.TYPE_RIB,
            section_start=2,
            line=13),
        rfem.structure_core.Member(
            no=14,
            type=rfem.structure_core.Member.TYPE_RIB,
            section_start=2,
            line=14),
        rfem.structure_core.Member(
            no=15,
            type=rfem.structure_core.Member.TYPE_RIB,
            section_start=2,
            line=15),
        rfem.structure_core.Member(
            no=16,
            type=rfem.structure_core.Member.TYPE_RIB,
            section_start=2,
            line=16),
        # Beams
        rfem.structure_core.Member(
            no=17,
            line=17,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=3),
        rfem.structure_core.Member(
            no=18,
            line=18,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=3),
        rfem.structure_core.Member(
            no=19,
            line=19,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=3),
        rfem.structure_core.Member(
            no=20,
            line=20,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=3),
        rfem.structure_core.Member(
            no=21,
            line=21,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=3),
        rfem.structure_core.Member(
            no=22,
            line=22,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=3),
        rfem.structure_core.Member(
            no=23,
            line=23,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=3),
        rfem.structure_core.Member(
            no=24,
            line=24,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=3),
        rfem.structure_core.Member(
            no=25,
            line=25,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=3),
        rfem.structure_core.Member(
            no=26,
            line=26,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=3),
        rfem.structure_core.Member(
            no=27,
            line=27,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=3),
        rfem.structure_core.Member(
            no=28,
            line=28,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=3),
        rfem.structure_core.Member(
            no=29,
            line=29,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=3),
        rfem.structure_core.Member(
            no=30,
            line=30,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=3),
        rfem.structure_core.Member(
            no=31,
            line=31,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=3),
        rfem.structure_core.Member(
            no=32,
            line=32,
            member_hinge_start=1,
            member_hinge_end=2,
            section_start=3),
        rfem.structure_core.Member(
            no=33,
            line=33,
            section_start=4,
            member_hinge_start=1),
        rfem.structure_core.Member(
            no=34,
            line=34,
            section_start=4,
            member_hinge_end=2),
        rfem.structure_core.Member(
            no=35,
            line=35,
            section_start=4,
            member_hinge_start=1),
        rfem.structure_core.Member(
            no=36,
            line=36,
            section_start=4,
            member_hinge_end=2),
        rfem.structure_core.Member(
            no=37,
            line=37,
            section_start=4,
            member_hinge_start=1),
        rfem.structure_core.Member(
            no=38,
            line=38,
            section_start=4,
            member_hinge_end=2),
        rfem.structure_core.Member(
            no=39,
            line=39,
            section_start=4,
            member_hinge_start=1),
        rfem.structure_core.Member(
            no=40,
            line=40,
            section_start=5,
            member_hinge_end=2),
        rfem.structure_core.Member(
            no=41,
            line=49,
            section_start=5,
            rotation_angle=1.57079632679487),
        rfem.structure_core.Member(
            no=42,
            line=50,
            section_start=5),
        rfem.structure_core.Member(
            no=43,
            line=51,
            section_start=5,
            rotation_angle=-1.57079632679487),
        rfem.structure_core.Member(
            no=44,
            line=52,
            section_start=5,
            rotation_angle=3.14159265358974),
        # Solid
        rfem.structure_core.Solid(
            no=1,
            type=rfem.structure_core.Solid.TYPE_STANDARD,
            material=2,
            boundary_surfaces=[1, 2, 3, 4, 5, 10]),
        # Nodal Support
        rfem.types_for_nodes.NodalSupport(
            no=1,
            nodes=[1, 2, 3, 4],
            spring_x=700000,
            spring_y=800000,
            spring_z=5000000),
        # Member Hinge
        rfem.types_for_members.MemberHinge(
            no=1,
            moment_release_mt=28000,
            axial_release_n=inf,
            axial_release_vy=inf,
            axial_release_vz=inf),
        rfem.types_for_members.MemberHinge(
            no=2,
            moment_release_mt=29000,
            axial_release_n=inf,
            axial_release_vy=inf,
            axial_release_vz=inf,
            moment_release_mz=inf),
        # Static Analysis Settings
        rfem.loading.StaticAnalysisSettings(
            no=1),
        rfem.loading.StaticAnalysisSettings(
            no=2,
            analysis_type=rfem.loading.StaticAnalysisSettings.ANALYSIS_TYPE_SECOND_ORDER_P_DELTA,
            number_of_load_increments=2),
        rfem.loading.StaticAnalysisSettings(
            no=3,
            analysis_type=rfem.loading.StaticAnalysisSettings.ANALYSIS_TYPE_LARGE_DEFORMATIONS,
            number_of_load_increments=10),
        # Load Cases
        rfem.loading.LoadCase(
            no=1,
            name="Self weight",
            static_analysis_settings=1),
        rfem.loading.LoadCase(
            no=2,
            name="Live load",
            static_analysis_settings=2,
            action_category=rfem.loading.LoadCase.ACTION_CATEGORY_PERMANENT_IMPOSED_GQ),
        rfem.loading.LoadCase(
            no=3,
            name="Stability - linear",
            static_analysis_settings=1,
            action_category=rfem.loading.LoadCase.ACTION_CATEGORY_PERMANENT_IMPOSED_GQ,
            self_weight_active=True),
    ]
    # Create all objects related to loading in active model
    rfem_app.create_object_list(lst)
    # Connection is terminated automatically at the end of the scope manager or at the end of the script.
    # If the connection needs to be terminated separately, use rfem_app.close_connection().
    rfem_app.calculate_all(skip_warnings=True)
    # Results access
    surface_filter = rfem.results.ResultsFilter(
            column_id='surface_no',
            filter_expression='2, 3, 4, 5'
    )
    print("\nAll Results | Grid Points:")
    results_grid_df = rfem_app.get_results(
        results_type=rfem.results.STATIC_ANALYSIS_SURFACES_BASIC_INTERNAL_FORCES_GRID_POINTS,
        filters = [surface_filter],
    ).data
    print(results_grid_df)
    print("\nAll Results | Mesh Nodes:")
    results_mesh_df = rfem_app.get_results(
        results_type=rfem.results.STATIC_ANALYSIS_SURFACES_BASIC_INTERNAL_FORCES_MESH_NODES,
        filters = [surface_filter],
    ).data
    print(results_mesh_df)
using Rfem = Dlubal.Api.Rfem;
using Dlubal.Api.Common;
using Google.Protobuf;
// Returns a list of structural objects to be created.
static List<IMessage> DefineStructure()
{
    return new List<IMessage>
    {
// Materials
        new Rfem.StructureCore.Material {
            No = 1,
            Name = "S450 | EN 1993-1-1:2005-05"
        },
        new Rfem.StructureCore.Material {
            No = 2,
            Name = "Sand, well-graded (SW) | DIN 18196:2011-05"
        },
        new Rfem.StructureCore.Material {
            No = 3,
            Name = "Dry air | --"
        },
        new Rfem.StructureCore.Material {
            No = 4,
            Name = "S450 | EN 1993-1-1:2005-05"
        },
        // Sections
        new Rfem.StructureCore.Section {
            No = 1,
            Material = 1,
            Name = "IPN 300"
        },
        new Rfem.StructureCore.Section {
            No = 2,
            Material = 1,
            Name = "UPE 200"
        },
        new Rfem.StructureCore.Section {
            No = 3,
            Material = 1,
            Name = "MSH KHP 88.9x3.6"
        },
        new Rfem.StructureCore.Section {
            No = 4,
            Material = 1,
            Name = "MSH KHP 88.9x3.6"
        },
        new Rfem.StructureCore.Section {
            No = 5,
            Material = 1,
            Name = "LU 0.3/0.2/0.01/0.01/0"
        },
        // Thicknesses
        new Rfem.StructureCore.Thickness {
            No = 1,
            Material = 4,
            UniformThickness = 0.01,
            AssignedToSurfaces = { 2, 3, 4, 5 }
        },
        new Rfem.StructureCore.Thickness {
            No = 2,
            Material = 1,
            UniformThickness = 0.008,
            AssignedToSurfaces = { 1, 6, 7, 8, 9 }
        },
        new Rfem.StructureCore.Thickness {
            No = 3,
            Material = 4,
            UniformThickness = 0.005,
            AssignedToSurfaces = { 11 }
        },
        // Nodes
        new Rfem.StructureCore.Node{
            No = 1,
            Coordinate1 = 0,
            Coordinate2 = 0,
            Coordinate3 = 0
        },
        new Rfem.StructureCore.Node{
            No = 2,
            Coordinate1 = 3,
            Coordinate2 = 0,
            Coordinate3 = 0
        },
        new Rfem.StructureCore.Node{
            No = 3,
            Coordinate1 = 3,
            Coordinate2 = 3,
            Coordinate3 = 0
        },
        new Rfem.StructureCore.Node{
            No = 4,
            Coordinate1 = 0,
            Coordinate2 = 3,
            Coordinate3 = 0
        },
        new Rfem.StructureCore.Node{
            No = 5,
            Coordinate1 = 0,
            Coordinate2 = 0,
            Coordinate3 = -3
        },
        new Rfem.StructureCore.Node{
            No = 6,
            Coordinate1 = 1.5,
            Coordinate2 = 0,
            Coordinate3 = -3
        },
        new Rfem.StructureCore.Node{
            No = 7,
            Coordinate1 = 3,
            Coordinate2 = 0,
            Coordinate3 = -3
        },
        new Rfem.StructureCore.Node{
            No = 8,
            Coordinate1 = 3,
            Coordinate2 = 1.5,
            Coordinate3 = -3
        },
        new Rfem.StructureCore.Node{
            No = 9,
            Coordinate1 = 3,
            Coordinate2 = 3,
            Coordinate3 = -3
        },
        new Rfem.StructureCore.Node{
            No = 10,
            Coordinate1 = 1.5,
            Coordinate2 = 3,
            Coordinate3 = -3
        },
        new Rfem.StructureCore.Node{
            No = 11,
            Coordinate1 = 0,
            Coordinate2 = 3,
            Coordinate3 = -3
        },
        new Rfem.StructureCore.Node{
            No = 12,
            Coordinate1 = 0,
            Coordinate2 = 1.5,
            Coordinate3 = -3
        },
        new Rfem.StructureCore.Node{
            No = 13,
            Coordinate1 = 0,
            Coordinate2 = 0,
            Coordinate3 = -6
        },
        new Rfem.StructureCore.Node{
            No = 14,
            Coordinate1 = 1.5,
            Coordinate2 = 0,
            Coordinate3 = -6
        },
        new Rfem.StructureCore.Node{
            No = 15,
            Coordinate1 = 3,
            Coordinate2 = 0,
            Coordinate3 = -6
        },
        new Rfem.StructureCore.Node{
            No = 16,
            Coordinate1 = 3,
            Coordinate2 = 1.5,
            Coordinate3 = -6
        },
        new Rfem.StructureCore.Node{
            No = 17,
            Coordinate1 = 3,
            Coordinate2 = 3,
            Coordinate3 = -6
        },
        new Rfem.StructureCore.Node{
            No = 18,
            Coordinate1 = 1.5,
            Coordinate2 = 3,
            Coordinate3 = -6
        },
        new Rfem.StructureCore.Node{
            No = 19,
            Coordinate1 = 0,
            Coordinate2 = 3,
            Coordinate3 = -6
        },
        new Rfem.StructureCore.Node{
            No = 20,
            Coordinate1 = 0,
            Coordinate2 = 1.5,
            Coordinate3 = -6
        },
        new Rfem.StructureCore.Node{
            No = 21,
            Coordinate1 = 0.75,
            Coordinate2 = 0.75,
            Coordinate3 = -4
        },
        new Rfem.StructureCore.Node{
            No = 22,
            Coordinate1 = 2.25,
            Coordinate2 = 0.75,
            Coordinate3 = -4
        },
        new Rfem.StructureCore.Node{
            No = 23,
            Coordinate1 = 2.25,
            Coordinate2 = 2.25,
            Coordinate3 = -4
        },
        new Rfem.StructureCore.Node{
            No = 24,
            Coordinate1 = 0.75,
            Coordinate2 = 2.25,
            Coordinate3 = -4
        },
        new Rfem.StructureCore.Node{
            No = 25,
            Coordinate1 = 0,
            Coordinate2 = 0,
            Coordinate3 = -12
        },
        new Rfem.StructureCore.Node{
            No = 26,
            Coordinate1 = 3,
            Coordinate2 = 0,
            Coordinate3 = -12
        },
        new Rfem.StructureCore.Node{
            No = 27,
            Coordinate1 = 3,
            Coordinate2 = 3,
            Coordinate3 = -12
        },
        new Rfem.StructureCore.Node{
            No = 28,
            Coordinate1 = 0,
            Coordinate2 = 3,
            Coordinate3 = -12
        },
        // Lines
        new Rfem.StructureCore.Line{
            No = 1,
            DefinitionNodes = { 1, 5 }
        },
        new Rfem.StructureCore.Line{
            No = 2,
            DefinitionNodes = { 2, 7 }
        },
        new Rfem.StructureCore.Line{
            No = 3,
            DefinitionNodes = { 3, 9 }
        },
        new Rfem.StructureCore.Line{
            No = 4,
            DefinitionNodes = { 4, 11 }
        },
        new Rfem.StructureCore.Line{
            No = 5,
            DefinitionNodes = { 5, 13 }
        },
        new Rfem.StructureCore.Line{
            No = 6,
            DefinitionNodes = { 7, 15 }
        },
        new Rfem.StructureCore.Line{
            No = 7,
            DefinitionNodes = { 9, 17 }
        },
        new Rfem.StructureCore.Line{
            No = 8,
            DefinitionNodes = { 11, 19 }
        },
        new Rfem.StructureCore.Line{
            No = 9,
            DefinitionNodes = { 13, 14 }
        },
        new Rfem.StructureCore.Line{
            No = 10,
            DefinitionNodes = { 14, 15 }
        },
        new Rfem.StructureCore.Line{
            No = 11,
            DefinitionNodes = { 15, 16 }
        },
        new Rfem.StructureCore.Line{
            No = 12,
            DefinitionNodes = { 16, 17 }
        },
        new Rfem.StructureCore.Line{
            No = 13,
            DefinitionNodes = { 17, 18 }
        },
        new Rfem.StructureCore.Line{
            No = 14,
            DefinitionNodes = { 18, 19 }
        },
        new Rfem.StructureCore.Line{
            No = 15,
            DefinitionNodes = { 19, 20 }
        },
        new Rfem.StructureCore.Line{
            No = 16,
            DefinitionNodes = { 20, 13 }
        },
        new Rfem.StructureCore.Line{
            No = 17,
            DefinitionNodes = { 1, 6 }
        },
        new Rfem.StructureCore.Line{
            No = 18,
            DefinitionNodes = { 2, 6 }
        },
        new Rfem.StructureCore.Line{
            No = 19,
            DefinitionNodes = { 2, 8 }
        },
        new Rfem.StructureCore.Line{
            No = 20,
            DefinitionNodes = { 3, 8 }
        },
        new Rfem.StructureCore.Line{
            No = 21,
            DefinitionNodes = { 3, 10 }
        },
        new Rfem.StructureCore.Line{
            No = 22,
            DefinitionNodes = { 4, 10 }
        },
        new Rfem.StructureCore.Line{
            No = 23,
            DefinitionNodes = { 4, 12 }
        },
        new Rfem.StructureCore.Line{
            No = 24,
            DefinitionNodes = { 1, 12 }
        },
        new Rfem.StructureCore.Line{
            No = 25,
            DefinitionNodes = { 5, 14 }
        },
        new Rfem.StructureCore.Line{
            No = 26,
            DefinitionNodes = { 7, 14 }
        },
        new Rfem.StructureCore.Line{
            No = 27,
            DefinitionNodes = { 7, 16 }
        },
        new Rfem.StructureCore.Line{
            No = 28,
            DefinitionNodes = { 9, 16 }
        },
        new Rfem.StructureCore.Line{
            No = 29,
            DefinitionNodes = { 9, 18 }
        },
        new Rfem.StructureCore.Line{
            No = 30,
            DefinitionNodes = { 11, 18 }
        },
        new Rfem.StructureCore.Line{
            No = 31,
            DefinitionNodes = { 11, 20 }
        },
        new Rfem.StructureCore.Line{
            No = 32,
            DefinitionNodes = { 5, 20 }
        },
        new Rfem.StructureCore.Line{
            No = 33,
            DefinitionNodes = { 5, 6 }
        },
        new Rfem.StructureCore.Line{
            No = 34,
            DefinitionNodes = { 6, 7 }
        },
        new Rfem.StructureCore.Line{
            No = 35,
            DefinitionNodes = { 7, 8 }
        },
        new Rfem.StructureCore.Line{
            No = 36,
            DefinitionNodes = { 8, 9 }
        },
        new Rfem.StructureCore.Line{
            No = 37,
            DefinitionNodes = { 9, 10 }
        },
        new Rfem.StructureCore.Line{
            No = 38,
            DefinitionNodes = { 10, 11 }
        },
        new Rfem.StructureCore.Line{
            No = 39,
            DefinitionNodes = { 11, 12 }
        },
        new Rfem.StructureCore.Line{
            No = 40,
            DefinitionNodes = { 12, 5 }
        },
        new Rfem.StructureCore.Line{
            No = 41,
            DefinitionNodes = { 21, 22 }
        },
        new Rfem.StructureCore.Line{
            No = 42,
            DefinitionNodes = { 22, 23 }
        },
        new Rfem.StructureCore.Line{
            No = 43,
            DefinitionNodes = { 23, 24 }
        },
        new Rfem.StructureCore.Line{
            No = 44,
            DefinitionNodes = { 24, 21 }
        },
        new Rfem.StructureCore.Line{
            No = 45,
            DefinitionNodes = { 13, 21 }
        },
        new Rfem.StructureCore.Line{
            No = 46,
            DefinitionNodes = { 15, 22 }
        },
        new Rfem.StructureCore.Line{
            No = 47,
            DefinitionNodes = { 17, 23 }
        },
        new Rfem.StructureCore.Line{
            No = 48,
            DefinitionNodes = { 19, 24 }
        },
        new Rfem.StructureCore.Line{
            No = 49,
            DefinitionNodes = { 13, 25 }
        },
        new Rfem.StructureCore.Line{
            No = 50,
            DefinitionNodes = { 15, 26 }
        },
        new Rfem.StructureCore.Line{
            No = 51,
            DefinitionNodes = { 17, 27 }
        },
        new Rfem.StructureCore.Line{
            No = 52,
            DefinitionNodes = { 19, 28 }
        },
        new Rfem.StructureCore.Line{
            No = 53,
            DefinitionNodes = { 25, 26 }
        },
        new Rfem.StructureCore.Line{
            No = 54,
            DefinitionNodes = { 26, 27 }
        },
        new Rfem.StructureCore.Line{
            No = 55,
            DefinitionNodes = { 27, 28 }
        },
        new Rfem.StructureCore.Line{
            No = 56,
            DefinitionNodes = { 28, 25 }
        },
        // Surfaces
        new Rfem.StructureCore.Surface {
            No = 1,
            BoundaryLines = { 41, 42, 43, 44 }
        },
        new Rfem.StructureCore.Surface {
            No = 2,
            BoundaryLines = { 45, 41, 46, 10, 9 }
        },
        new Rfem.StructureCore.Surface {
            No = 3,
            BoundaryLines = { 46, 42, 47, 12, 11 }
        },
        new Rfem.StructureCore.Surface {
            No = 4,
            BoundaryLines = { 47, 43, 48, 14, 13 }
        },
        new Rfem.StructureCore.Surface {
            No = 5,
            BoundaryLines = { 48, 44, 45, 16, 15 }
        },
        new Rfem.StructureCore.Surface {
            No = 6,
            BoundaryLines = { 9, 10, 50, 53, 49 }
        },
        new Rfem.StructureCore.Surface {
            No = 7,
            BoundaryLines = { 11, 12, 51, 54, 50 }
        },
        new Rfem.StructureCore.Surface {
            No = 8,
            BoundaryLines = { 13, 14, 52, 55, 51 }
        },
        new Rfem.StructureCore.Surface {
            No = 9,
            BoundaryLines = { 15, 16, 49, 56, 52 }
        },
        new Rfem.StructureCore.Surface {
            No = 10,
            BoundaryLines = { 9, 10, 11, 12, 13, 14, 15, 16 }
        },
        new Rfem.StructureCore.Surface {
            No = 11,
            BoundaryLines = { 53, 54, 55, 56 }
        },
        // Beams
        new Rfem.StructureCore.Member {
            No = 1,
            Line = 1,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 1
        },
        new Rfem.StructureCore.Member {
            No = 2,
            Line = 2,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 1
        },
        new Rfem.StructureCore.Member {
            No = 3,
            Line = 3,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 1
        },
        new Rfem.StructureCore.Member {
            No = 4,
            Line = 4,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 1
        },
        new Rfem.StructureCore.Member {
            No = 5,
            Line = 5,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 1
        },
        new Rfem.StructureCore.Member {
            No = 6,
            Line = 6,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 1
        },
        new Rfem.StructureCore.Member {
            No = 7,
            Line = 7,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 1
        },
        new Rfem.StructureCore.Member {
            No = 8,
            Line = 8,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 1
        },
        // Ribs
        new Rfem.StructureCore.Member {
            No = 9,
            Type = Rfem.StructureCore.Member.Types.Type.Rib,
            SectionStart = 2,
            Line = 9
        },
        new Rfem.StructureCore.Member {
            No = 10,
            Type = Rfem.StructureCore.Member.Types.Type.Rib,
            SectionStart = 2,
            Line = 10
        },
        new Rfem.StructureCore.Member {
            No = 11,
            Type = Rfem.StructureCore.Member.Types.Type.Rib,
            SectionStart = 2,
            Line = 11
        },
        new Rfem.StructureCore.Member {
            No = 12,
            Type = Rfem.StructureCore.Member.Types.Type.Rib,
            SectionStart = 2,
            Line = 12
        },
        new Rfem.StructureCore.Member {
            No = 13,
            Type = Rfem.StructureCore.Member.Types.Type.Rib,
            SectionStart = 2,
            Line = 13
        },
        new Rfem.StructureCore.Member {
            No = 14,
            Type = Rfem.StructureCore.Member.Types.Type.Rib,
            SectionStart = 2,
            Line = 14
        },
        new Rfem.StructureCore.Member {
            No = 15,
            Type = Rfem.StructureCore.Member.Types.Type.Rib,
            SectionStart = 2,
            Line = 15
        },
        new Rfem.StructureCore.Member {
            No = 16,
            Type = Rfem.StructureCore.Member.Types.Type.Rib,
            SectionStart = 2,
            Line = 16
        },
        // Beams
        new Rfem.StructureCore.Member {
            No = 17,
            Line = 17,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 3
        },
        new Rfem.StructureCore.Member {
            No = 18,
            Line = 18,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 3
        },
        new Rfem.StructureCore.Member {
            No = 19,
            Line = 19,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 3
        },
        new Rfem.StructureCore.Member {
            No = 20,
            Line = 20,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 3
        },
        new Rfem.StructureCore.Member {
            No = 21,
            Line = 21,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 3
        },
        new Rfem.StructureCore.Member {
            No = 22,
            Line = 22,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 3
        },
        new Rfem.StructureCore.Member {
            No = 23,
            Line = 23,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 3
        },
        new Rfem.StructureCore.Member {
            No = 24,
            Line = 24,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 3
        },
        new Rfem.StructureCore.Member {
            No = 25,
            Line = 25,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 3
        },
        new Rfem.StructureCore.Member {
            No = 26,
            Line = 26,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 3
        },
        new Rfem.StructureCore.Member {
            No = 27,
            Line = 27,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 3
        },
        new Rfem.StructureCore.Member {
            No = 28,
            Line = 28,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 3
        },
        new Rfem.StructureCore.Member {
            No = 29,
            Line = 29,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 3
        },
        new Rfem.StructureCore.Member {
            No = 30,
            Line = 30,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 3
        },
        new Rfem.StructureCore.Member {
            No = 31,
            Line = 31,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 3
        },
        new Rfem.StructureCore.Member {
            No = 32,
            Line = 32,
            MemberHingeStart = 1,
            MemberHingeEnd = 2,
            SectionStart = 3
        },
        new Rfem.StructureCore.Member {
            No = 33,
            Line = 33,
            MemberHingeStart = 1,
            SectionStart = 4
        },
        new Rfem.StructureCore.Member {
            No = 34,
            Line = 34,
            MemberHingeEnd = 2,
            SectionStart = 4
        },
        new Rfem.StructureCore.Member {
            No = 35,
            Line = 35,
            MemberHingeStart = 1,
            SectionStart = 4
        },
        new Rfem.StructureCore.Member {
            No = 36,
            Line = 36,
            MemberHingeEnd = 2,
            SectionStart = 4
        },
        new Rfem.StructureCore.Member {
            No = 37,
            Line = 37,
            MemberHingeStart = 1,
            SectionStart = 4
        },
        new Rfem.StructureCore.Member {
            No = 38,
            Line = 38,
            MemberHingeEnd = 2,
            SectionStart = 4
        },
        new Rfem.StructureCore.Member {
            No = 39,
            Line = 39,
            MemberHingeStart = 1,
            SectionStart = 4
        },
        new Rfem.StructureCore.Member {
            No = 40,
            Line = 40,
            MemberHingeEnd = 2,
            SectionStart = 5
        },
        new Rfem.StructureCore.Member {
            No = 41,
            Line = 49,
            RotationAngle = 1.570796,
            SectionStart = 5
        },
        new Rfem.StructureCore.Member {
            No = 42,
            Line = 50,
            SectionStart = 5
        },
        new Rfem.StructureCore.Member {
            No = 43,
            Line = 51,
            SectionStart = 5,
            RotationAngle = 1.570796
        },
        new Rfem.StructureCore.Member {
            No = 44,
            Line = 52,
            RotationAngle = 3.1415926,
            SectionStart = 5
        },
        // Solid
        new Rfem.StructureCore.Solid {
            No = 1,
            Type = Rfem.StructureCore.Solid.Types.Type.Standard,
            Material = 2,
            BoundarySurfaces = { 1, 2, 3, 4, 5, 10 }
        },
        // Nodal Support
        new Rfem.TypesForNodes.NodalSupport {
            No = 1,
            Nodes = { 1, 2, 3, 4 },
            SpringX = 700000,
            SpringY = 800000,
            SpringZ = 5000000
        },
        // Member Hinge
        new Rfem.TypesForMembers.MemberHinge {
            No = 1,
            MomentReleaseMt = 28000,
            AxialReleaseN = double.PositiveInfinity,
            AxialReleaseVy = double.PositiveInfinity,
            AxialReleaseVz = double.PositiveInfinity,
            MomentReleaseMz = double.PositiveInfinity
        },
        new Rfem.TypesForMembers.MemberHinge {
            No = 2,
            MomentReleaseMt = 29000,
            AxialReleaseN = double.PositiveInfinity,
            AxialReleaseVy = double.PositiveInfinity,
            AxialReleaseVz = double.PositiveInfinity,
            MomentReleaseMz = double.PositiveInfinity
        },
    };
}
// Returns a list of structural objects to be created.
static List<IMessage> DefineLoading()
{
    return new List<IMessage>
    {
 // Static Analysis Settings
        new Rfem.Loading.StaticAnalysisSettings {
            No = 1
        },
        new Rfem.Loading.StaticAnalysisSettings {
            No = 2,
            AnalysisType = Rfem.Loading.StaticAnalysisSettings.Types.AnalysisType.SecondOrderPDelta,
            NumberOfLoadIncrements = 2
        },
        new Rfem.Loading.StaticAnalysisSettings {
            No = 3,
            AnalysisType = Rfem.Loading.StaticAnalysisSettings.Types.AnalysisType.LargeDeformations,
            NumberOfLoadIncrements = 10
        },
        // Load Cases
        new Rfem.Loading.LoadCase {
            No = 1,
            Name = "Self weight",
            StaticAnalysisSettings = 1
        },
        new Rfem.Loading.LoadCase {
            No = 2,
            Name = "Live load",
            StaticAnalysisSettings = 2,
            ActionCategory = Rfem.Loading.LoadCase.Types.ActionCategory.PermanentImposedGq
        },
        new Rfem.Loading.LoadCase {
            No = 3,
            Name = "Stability - linear",
            StaticAnalysisSettings = 1,
            ActionCategory = Rfem.Loading.LoadCase.Types.ActionCategory.PermanentImposedGq,
            SelfWeightActive = true
        }
    };
}
ApplicationRfem? RfemApp = null;
try
{
    RfemApp = new ApplicationRfem();
    // Step 1: Create a new model
    await RfemApp.create_model("silo");
    // Step 2: Create structure and loading in empty model
    await RfemApp.delete_all_objects();
    await RfemApp.create_object_list(DefineStructure());
    await RfemApp.create_object_list(DefineLoading());
    // Step 3: Run the calculation
    await RfemApp.calculate_all(skipWarnings: true);
    // Step 4: Retrieve results in grid points on the specific surfaces
    Console.WriteLine("Results | Grid Points:");
    var resultsGridPoints = await RfemApp.get_results(
        resultsType: Rfem.Results.ResultsType.StaticAnalysisSurfacesBasicInternalForcesGridPoints,
        filters: new List<Rfem.Results.ResultsFilter> {
            new Rfem.Results.ResultsFilter
            {
                ColumnId = "SurfaceNo",
                FilterExpression = "2, 3, 4, 5"
            }
        }
    );
    Console.WriteLine(resultsGridPoints.Data);
    // Step 4: Retrieve results in mesh nodes of the specific surfaces
    Console.WriteLine("Results | Mesh Nodes:");
    var resultsMeshNodes = await RfemApp.get_results(
        resultsType: Rfem.Results.ResultsType.StaticAnalysisSurfacesBasicInternalForcesMeshNodes,
        filters: new List<Rfem.Results.ResultsFilter> {
            new Rfem.Results.ResultsFilter
            {
                ColumnId = "SurfaceNo",
                FilterExpression = "2, 3, 4, 5"
            }
        }
    );
    Console.WriteLine(resultsMeshNodes.Data);
}
catch (Exception ex)
{
    Console.WriteLine($"Error: {ex.Message}");
}
finally
{
    if (RfemApp != null) await RfemApp.close_connection();
}