Skip to content

Note

Click here to download the full example code

Usage of the BendingTestAnalytical

BendingTestAnalytical is a simple model implemented for testing and training purpose.

from __future__ import annotations

import logging

from gemseo.core.discipline import Discipline
from numpy import array

from vimseo import EXAMPLE_RUNS_DIR
from vimseo.api import activate_logger
from vimseo.api import create_model
from vimseo.core.model_settings import IntegratedModelSettings

activate_logger(level=logging.INFO)

Introduction

BendingTestAnalytical is based on Bernoulli beam theory. It is configured on imposed displacement. It computes the reaction forces and the displacement and moment along the beam.

First, let's instantiate the model from the API:

model_name = "BendingTestAnalytical"
load_case = "Cantilever"
model_settings = IntegratedModelSettings(
    directory_archive_root=EXAMPLE_RUNS_DIR / "archive/basic_usage",
    directory_scratch_root=EXAMPLE_RUNS_DIR / "scratch/basic_usage",
    cache_file_path=EXAMPLE_RUNS_DIR
    / f"caches/basic_usage/{model_name}_{load_case}_cache.hdf",
)

model = create_model(
    model_name,
    load_case,
    model_options=model_settings,
)
model.set_cache(Discipline.CacheType.NONE)
model.archive_manager._accept_overwrite_job_dir = True

The model description can be accessed like this: Note that the load case contains the names of the boundary conditions, and the output variables to be plotted on x-y plots:

print(model.description)

Out:

Model BendingTestAnalytical:  An analytical model for the bending of a parallelepipedic beam

Load case:
   Load case Cantilever: A cantilever load case.

   Boundary condition variables:
   ['imposed_dplt', 'relative_dplt_location']

   Plot parameters:
   {
    "curves": []
}
   Load:
   Load(direction='', sign='', type='')

Default values:

   Default geometrical variables:
   {"height": [40.0], "length": [600.0], "width": [30.0]}

   Default numerical variables:
   {}

   Default boundary conditions variables:
   {"imposed_dplt": [-5.0], "relative_dplt_location": [1.0]}

   Default material variables:
   {"nu_p": [0.3], "young_modulus": [210000.0]}
model_inputs:
   [
    "length",
    "width",
    "height",
    "imposed_dplt",
    "relative_dplt_location",
    "young_modulus",
    "nu_p"
]
model_outputs:
   [
    "reaction_forces",
    "maximum_dplt",
    "dplt_grid",
    "location_max_dplt",
    "dplt",
    "moment",
    "moment_grid",
    "dplt_at_force_location",
    "error_code",
    "model",
    "load_case",
    "description",
    "job_name",
    "persistent_result_files",
    "n_cpus",
    "date",
    "cpu_time",
    "user",
    "machine",
    "vims_git_version",
    "directory_archive_root",
    "directory_archive_job",
    "directory_scratch_root",
    "directory_scratch_job"
]

An illustration of the model can be shown:

model.show_image()
# and the path to the image accessed like this:
model.image_path

plot 01 basic usage

Out:

PosixPath('/home/sebastien.bocquet/PycharmProjects/vimseo/src/vimseo/problems/load_cases/Beam_Cantilever.png')

Specific image can also be associated with the load case:

model.load_case.show_image()

plot 01 basic usage

Executing the model with default parameters is straightforward:

model.execute()

Out:

    INFO - 16:51:50: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/model_runs/archive/basic_usage.

{'young_modulus': array([210000.]), 'nu_p': array([0.3]), 'length': array([600.]), 'width': array([30.]), 'height': array([40.]), 'imposed_dplt': array([-5.]), 'relative_dplt_location': array([1.]), 'reaction_forces': array([-2333.33333333]), 'moment': array([1400000.,       0.]), 'moment_grid': array([  0., 600.]), 'dplt': array([ 0.00000000e+00, -7.62651513e-04, -3.04029995e-03, -6.81748616e-03,
       -1.20787510e-02, -1.88086353e-02, -2.69916799e-02, -3.66124257e-02,
       -4.76554134e-02, -6.01051841e-02, -7.39462784e-02, -8.91632373e-02,
       -1.05740602e-01, -1.23662912e-01, -1.42914710e-01, -1.63480535e-01,
       -1.85344930e-01, -2.08492434e-01, -2.32907588e-01, -2.58574934e-01,
       -2.85479012e-01, -3.13604363e-01, -3.42935528e-01, -3.73457048e-01,
       -4.05153463e-01, -4.38009315e-01, -4.72009144e-01, -5.07137491e-01,
       -5.43378897e-01, -5.80717902e-01, -6.19139049e-01, -6.58626877e-01,
       -6.99165927e-01, -7.40740741e-01, -7.83335858e-01, -8.26935821e-01,
       -8.71525169e-01, -9.17088444e-01, -9.63610186e-01, -1.01107494e+00,
       -1.05946724e+00, -1.10877163e+00, -1.15897265e+00, -1.21005484e+00,
       -1.26200274e+00, -1.31480090e+00, -1.36843385e+00, -1.42288614e+00,
       -1.47814230e+00, -1.53418688e+00, -1.59100442e+00, -1.64857946e+00,
       -1.70689653e+00, -1.76594019e+00, -1.82569497e+00, -1.88614540e+00,
       -1.94727605e+00, -2.00907143e+00, -2.07151610e+00, -2.13459459e+00,
       -2.19829145e+00, -2.26259122e+00, -2.32747844e+00, -2.39293764e+00,
       -2.45895337e+00, -2.52551018e+00, -2.59259259e+00, -2.66018516e+00,
       -2.72827242e+00, -2.79683891e+00, -2.86586918e+00, -2.93534776e+00,
       -3.00525920e+00, -3.07558804e+00, -3.14631882e+00, -3.21743607e+00,
       -3.28892434e+00, -3.36076818e+00, -3.43295211e+00, -3.50546069e+00,
       -3.57827845e+00, -3.65138993e+00, -3.72477968e+00, -3.79843224e+00,
       -3.87233214e+00, -3.94646393e+00, -4.02081214e+00, -4.09536133e+00,
       -4.17009602e+00, -4.24500077e+00, -4.32006011e+00, -4.39525857e+00,
       -4.47058072e+00, -4.54601107e+00, -4.62153419e+00, -4.69713459e+00,
       -4.77279684e+00, -4.84850546e+00, -4.92424500e+00, -5.00000000e+00]), 'dplt_grid': array([  0.        ,   6.06060606,  12.12121212,  18.18181818,
        24.24242424,  30.3030303 ,  36.36363636,  42.42424242,
        48.48484848,  54.54545455,  60.60606061,  66.66666667,
        72.72727273,  78.78787879,  84.84848485,  90.90909091,
        96.96969697, 103.03030303, 109.09090909, 115.15151515,
       121.21212121, 127.27272727, 133.33333333, 139.39393939,
       145.45454545, 151.51515152, 157.57575758, 163.63636364,
       169.6969697 , 175.75757576, 181.81818182, 187.87878788,
       193.93939394, 200.        , 206.06060606, 212.12121212,
       218.18181818, 224.24242424, 230.3030303 , 236.36363636,
       242.42424242, 248.48484848, 254.54545455, 260.60606061,
       266.66666667, 272.72727273, 278.78787879, 284.84848485,
       290.90909091, 296.96969697, 303.03030303, 309.09090909,
       315.15151515, 321.21212121, 327.27272727, 333.33333333,
       339.39393939, 345.45454545, 351.51515152, 357.57575758,
       363.63636364, 369.6969697 , 375.75757576, 381.81818182,
       387.87878788, 393.93939394, 400.        , 406.06060606,
       412.12121212, 418.18181818, 424.24242424, 430.3030303 ,
       436.36363636, 442.42424242, 448.48484848, 454.54545455,
       460.60606061, 466.66666667, 472.72727273, 478.78787879,
       484.84848485, 490.90909091, 496.96969697, 503.03030303,
       509.09090909, 515.15151515, 521.21212121, 527.27272727,
       533.33333333, 539.39393939, 545.45454545, 551.51515152,
       557.57575758, 563.63636364, 569.6969697 , 575.75757576,
       581.81818182, 587.87878788, 593.93939394, 600.        ]), 'dplt_at_force_location': array([-5.]), 'maximum_dplt': array([-5.]), 'location_max_dplt': array([600.]), 'error_code': array([0]), 'model': array(['BendingTestAnalytical'], dtype='<U21'), 'load_case': array(['Cantilever'], dtype='<U10'), 'description': array([''], dtype='<U1'), 'job_name': array([''], dtype='<U1'), 'persistent_result_files': array([''], dtype='<U1'), 'n_cpus': array([1]), 'date': array(['2026-05-11 16:51:50.839672'], dtype='<U26'), 'cpu_time': array([0.02049112]), 'user': array(['sebastien.bocquet'], dtype='<U17'), 'machine': array(['IPF7101'], dtype='<U7'), 'vims_git_version': array(['45528c25944ac4bb00d0644363b39dcb47cf0899'], dtype='<U40'), 'directory_archive_root': array(['/home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/model_runs/archive/basic_usage'],
      dtype='<U100'), 'directory_archive_job': array(['/home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/model_runs/archive/basic_usage/BendingTestAnalytical/Cantilever/7'],
      dtype='<U135'), 'directory_scratch_root': array(['/home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/model_runs/scratch/basic_usage'],
      dtype='<U100'), 'directory_scratch_job': array([''], dtype='<U1')}

And input parameters could also be redefined. First get the list of parameters:

model.get_input_data_names()

Out:

['length', 'width', 'height', 'imposed_dplt', 'relative_dplt_location', 'young_modulus', 'nu_p']

Then modify inputs, for instance, Young's modulus:

model.execute({"young_modulus": array([195000.0])})

Out:

    INFO - 16:51:50: Current root directory of job directory is /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/model_runs/archive/basic_usage.

{'length': array([600.]), 'width': array([30.]), 'height': array([40.]), 'imposed_dplt': array([-5.]), 'relative_dplt_location': array([1.]), 'young_modulus': array([195000.]), 'nu_p': array([0.3]), 'reaction_forces': array([-2166.66666667]), 'moment': array([1300000.,       0.]), 'moment_grid': array([  0., 600.]), 'dplt': array([ 0.00000000e+00, -7.62651513e-04, -3.04029995e-03, -6.81748616e-03,
       -1.20787510e-02, -1.88086353e-02, -2.69916799e-02, -3.66124257e-02,
       -4.76554134e-02, -6.01051841e-02, -7.39462784e-02, -8.91632373e-02,
       -1.05740602e-01, -1.23662912e-01, -1.42914710e-01, -1.63480535e-01,
       -1.85344930e-01, -2.08492434e-01, -2.32907588e-01, -2.58574934e-01,
       -2.85479012e-01, -3.13604363e-01, -3.42935528e-01, -3.73457048e-01,
       -4.05153463e-01, -4.38009315e-01, -4.72009144e-01, -5.07137491e-01,
       -5.43378897e-01, -5.80717902e-01, -6.19139049e-01, -6.58626877e-01,
       -6.99165927e-01, -7.40740741e-01, -7.83335858e-01, -8.26935821e-01,
       -8.71525169e-01, -9.17088444e-01, -9.63610186e-01, -1.01107494e+00,
       -1.05946724e+00, -1.10877163e+00, -1.15897265e+00, -1.21005484e+00,
       -1.26200274e+00, -1.31480090e+00, -1.36843385e+00, -1.42288614e+00,
       -1.47814230e+00, -1.53418688e+00, -1.59100442e+00, -1.64857946e+00,
       -1.70689653e+00, -1.76594019e+00, -1.82569497e+00, -1.88614540e+00,
       -1.94727605e+00, -2.00907143e+00, -2.07151610e+00, -2.13459459e+00,
       -2.19829145e+00, -2.26259122e+00, -2.32747844e+00, -2.39293764e+00,
       -2.45895337e+00, -2.52551018e+00, -2.59259259e+00, -2.66018516e+00,
       -2.72827242e+00, -2.79683891e+00, -2.86586918e+00, -2.93534776e+00,
       -3.00525920e+00, -3.07558804e+00, -3.14631882e+00, -3.21743607e+00,
       -3.28892434e+00, -3.36076818e+00, -3.43295211e+00, -3.50546069e+00,
       -3.57827845e+00, -3.65138993e+00, -3.72477968e+00, -3.79843224e+00,
       -3.87233214e+00, -3.94646393e+00, -4.02081214e+00, -4.09536133e+00,
       -4.17009602e+00, -4.24500077e+00, -4.32006011e+00, -4.39525857e+00,
       -4.47058072e+00, -4.54601107e+00, -4.62153419e+00, -4.69713459e+00,
       -4.77279684e+00, -4.84850546e+00, -4.92424500e+00, -5.00000000e+00]), 'dplt_grid': array([  0.        ,   6.06060606,  12.12121212,  18.18181818,
        24.24242424,  30.3030303 ,  36.36363636,  42.42424242,
        48.48484848,  54.54545455,  60.60606061,  66.66666667,
        72.72727273,  78.78787879,  84.84848485,  90.90909091,
        96.96969697, 103.03030303, 109.09090909, 115.15151515,
       121.21212121, 127.27272727, 133.33333333, 139.39393939,
       145.45454545, 151.51515152, 157.57575758, 163.63636364,
       169.6969697 , 175.75757576, 181.81818182, 187.87878788,
       193.93939394, 200.        , 206.06060606, 212.12121212,
       218.18181818, 224.24242424, 230.3030303 , 236.36363636,
       242.42424242, 248.48484848, 254.54545455, 260.60606061,
       266.66666667, 272.72727273, 278.78787879, 284.84848485,
       290.90909091, 296.96969697, 303.03030303, 309.09090909,
       315.15151515, 321.21212121, 327.27272727, 333.33333333,
       339.39393939, 345.45454545, 351.51515152, 357.57575758,
       363.63636364, 369.6969697 , 375.75757576, 381.81818182,
       387.87878788, 393.93939394, 400.        , 406.06060606,
       412.12121212, 418.18181818, 424.24242424, 430.3030303 ,
       436.36363636, 442.42424242, 448.48484848, 454.54545455,
       460.60606061, 466.66666667, 472.72727273, 478.78787879,
       484.84848485, 490.90909091, 496.96969697, 503.03030303,
       509.09090909, 515.15151515, 521.21212121, 527.27272727,
       533.33333333, 539.39393939, 545.45454545, 551.51515152,
       557.57575758, 563.63636364, 569.6969697 , 575.75757576,
       581.81818182, 587.87878788, 593.93939394, 600.        ]), 'dplt_at_force_location': array([-5.]), 'maximum_dplt': array([-5.]), 'location_max_dplt': array([600.]), 'error_code': array([0]), 'model': array(['BendingTestAnalytical'], dtype='<U21'), 'load_case': array(['Cantilever'], dtype='<U10'), 'description': array([''], dtype='<U1'), 'job_name': array([''], dtype='<U1'), 'persistent_result_files': array([''], dtype='<U1'), 'n_cpus': array([1]), 'date': array(['2026-05-11 16:51:50.854998'], dtype='<U26'), 'cpu_time': array([0.00368834]), 'user': array(['sebastien.bocquet'], dtype='<U17'), 'machine': array(['IPF7101'], dtype='<U7'), 'vims_git_version': array(['45528c25944ac4bb00d0644363b39dcb47cf0899'], dtype='<U40'), 'directory_archive_root': array(['/home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/model_runs/archive/basic_usage'],
      dtype='<U100'), 'directory_archive_job': array(['/home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/model_runs/archive/basic_usage/BendingTestAnalytical/Cantilever/8'],
      dtype='<U135'), 'directory_scratch_root': array(['/home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/model_runs/scratch/basic_usage'],
      dtype='<U100'), 'directory_scratch_job': array([''], dtype='<U1')}

Switching load cases: A new model must be created to switch to another load case:

load_case = "ThreePoints"
model_settings = IntegratedModelSettings(
    directory_archive_root=EXAMPLE_RUNS_DIR / "archive/basic_usage",
    directory_scratch_root=EXAMPLE_RUNS_DIR / "scratch/basic_usage",
    cache_file_path=EXAMPLE_RUNS_DIR
    / f"caches/basic_usage/{model_name}_{load_case}_cache.hdf",
)
model = create_model(
    model_name,
    load_case,
    model_options=model_settings,
)

# It is also possible to specify values for other inputs:
output_data = model.execute({"height": array([20.0])})
print(output_data)

Out:

    INFO - 16:51:50: Found 2 entries in the cache file : /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/model_runs/caches/basic_usage/BendingTestAnalytical_ThreePoints_cache.hdf node : node
{'length': array([600.]), 'width': array([30.]), 'height': array([20.]), 'imposed_dplt': array([-5.]), 'relative_support_location': array([0.5]), 'young_modulus': array([210000.]), 'nu_p': array([0.3]), 'cpu_time': array([0.01815581]), 'date': array(['2026-03-26 14:54:13.873636'], dtype='<U26'), 'description': array([''], dtype='<U1'), 'directory_archive_job': array(['/home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/model_runs/archive/basic_usage/BendingTestAnalytical/ThreePoints/1'],
      dtype='<U136'), 'directory_archive_root': array(['/home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/model_runs/archive/basic_usage'],
      dtype='<U100'), 'directory_scratch_job': array([''], dtype='<U1'), 'directory_scratch_root': array(['/home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/model_runs/scratch/basic_usage'],
      dtype='<U100'), 'dplt': array([-2.52346299e-19, -1.51499692e-01, -3.02875712e-01, -4.54004384e-01,
       -6.04762037e-01, -7.55024997e-01, -9.04669592e-01, -1.05357215e+00,
       -1.20160899e+00, -1.34865645e+00, -1.49459084e+00, -1.63928851e+00,
       -1.78262577e+00, -1.92447895e+00, -2.06472438e+00, -2.20323838e+00,
       -2.33989729e+00, -2.47457742e+00, -2.60715511e+00, -2.73750669e+00,
       -2.86550847e+00, -2.99103678e+00, -3.11396796e+00, -3.23417833e+00,
       -3.35154421e+00, -3.46594194e+00, -3.57724784e+00, -3.68533823e+00,
       -3.79008945e+00, -3.89137781e+00, -3.98907965e+00, -4.08307130e+00,
       -4.17322908e+00, -4.25942931e+00, -4.34154833e+00, -4.41946245e+00,
       -4.49304802e+00, -4.56218135e+00, -4.62673877e+00, -4.68659661e+00,
       -4.74163119e+00, -4.79171884e+00, -4.83673589e+00, -4.87655867e+00,
       -4.91106350e+00, -4.94012670e+00, -4.96362461e+00, -4.98143356e+00,
       -4.99342986e+00, -4.99948985e+00, -4.99948985e+00, -4.99342986e+00,
       -4.98143356e+00, -4.96362461e+00, -4.94012670e+00, -4.91106350e+00,
       -4.87655867e+00, -4.83673589e+00, -4.79171884e+00, -4.74163119e+00,
       -4.68659661e+00, -4.62673877e+00, -4.56218135e+00, -4.49304802e+00,
       -4.41946245e+00, -4.34154833e+00, -4.25942931e+00, -4.17322908e+00,
       -4.08307130e+00, -3.98907965e+00, -3.89137781e+00, -3.79008945e+00,
       -3.68533823e+00, -3.57724784e+00, -3.46594194e+00, -3.35154421e+00,
       -3.23417833e+00, -3.11396796e+00, -2.99103678e+00, -2.86550847e+00,
       -2.73750669e+00, -2.60715511e+00, -2.47457742e+00, -2.33989729e+00,
       -2.20323838e+00, -2.06472438e+00, -1.92447895e+00, -1.78262577e+00,
       -1.63928851e+00, -1.49459084e+00, -1.34865645e+00, -1.20160899e+00,
       -1.05357215e+00, -9.04669592e-01, -7.55024997e-01, -6.04762037e-01,
       -4.54004384e-01, -3.02875712e-01, -1.51499692e-01, -1.55887944e-17]), 'dplt_at_force_location': array([-4.99948985]), 'dplt_grid': array([  0.        ,   6.06060606,  12.12121212,  18.18181818,
        24.24242424,  30.3030303 ,  36.36363636,  42.42424242,
        48.48484848,  54.54545455,  60.60606061,  66.66666667,
        72.72727273,  78.78787879,  84.84848485,  90.90909091,
        96.96969697, 103.03030303, 109.09090909, 115.15151515,
       121.21212121, 127.27272727, 133.33333333, 139.39393939,
       145.45454545, 151.51515152, 157.57575758, 163.63636364,
       169.6969697 , 175.75757576, 181.81818182, 187.87878788,
       193.93939394, 200.        , 206.06060606, 212.12121212,
       218.18181818, 224.24242424, 230.3030303 , 236.36363636,
       242.42424242, 248.48484848, 254.54545455, 260.60606061,
       266.66666667, 272.72727273, 278.78787879, 284.84848485,
       290.90909091, 296.96969697, 303.03030303, 309.09090909,
       315.15151515, 321.21212121, 327.27272727, 333.33333333,
       339.39393939, 345.45454545, 351.51515152, 357.57575758,
       363.63636364, 369.6969697 , 375.75757576, 381.81818182,
       387.87878788, 393.93939394, 400.        , 406.06060606,
       412.12121212, 418.18181818, 424.24242424, 430.3030303 ,
       436.36363636, 442.42424242, 448.48484848, 454.54545455,
       460.60606061, 466.66666667, 472.72727273, 478.78787879,
       484.84848485, 490.90909091, 496.96969697, 503.03030303,
       509.09090909, 515.15151515, 521.21212121, 527.27272727,
       533.33333333, 539.39393939, 545.45454545, 551.51515152,
       557.57575758, 563.63636364, 569.6969697 , 575.75757576,
       581.81818182, 587.87878788, 593.93939394, 600.        ]), 'error_code': array([0]), 'job_name': array([''], dtype='<U1'), 'load_case': array(['ThreePoints'], dtype='<U11'), 'location_max_dplt': array([296.96969697]), 'machine': array(['IPF7101'], dtype='<U7'), 'maximum_dplt': array([-4.99948985]), 'model': array(['BendingTestAnalytical'], dtype='<U21'), 'moment': array([      0., -700000.,       0.]), 'moment_grid': array([  0., 300., 600.]), 'n_cpus': array([1]), 'persistent_result_files': array([''], dtype='<U1'), 'reaction_forces': array([-4666.66666667]), 'user': array(['sebastien.bocquet'], dtype='<U17'), 'vims_git_version': array(['d0050d8de498c8354552cdde540fb3e524454871'], dtype='<U40')}

Post-treatment of the results

The BendingTestAnalytical provides the following outputs:

  • reaction_forces: a scalar value giving the reaction forces calculated at the
  • maximum_dplt: a scalar value giving the maximum displacement of the beam
  • location_max_dplt: a scalar value giving the location of the maximum displacement along the beam
  • displacement: an array of displacement values
  • displacement_grid: an array of sorted coordinates along the beam at which displacement are computed
  • moment: an array of moment values
  • moment_grid: an array of sorted coordinates along the beam at which
# The value of the maximum displacement along the beam can be obtained like this:

model.get_output_data()["maximum_dplt"]

Out:

array([-4.99948985])

And the outputs plotted like this:

figures = model.plot_results(save=True, show=True)

figures["dplt_vs_dplt_grid"]

Out:

    INFO - 16:51:50: Saving plots to /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/02_integrated_models
    INFO - 16:51:51: Plot BendingTestAnalytical_ThreePoints_dplt_vs_dplt_grid.html is saved to /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/02_integrated_models/BendingTestAnalytical_ThreePoints_dplt_vs_dplt_grid.html
    INFO - 16:51:52: Plot BendingTestAnalytical_ThreePoints_moment_vs_moment_grid.html is saved to /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/02_integrated_models/BendingTestAnalytical_ThreePoints_moment_vs_moment_grid.html

And now, we want to change the support location. By default, it is located at both ends of the beam. It is now positioned at 0.3 times the half length of the beam.

output_data = model.execute({"relative_support_location": array([0.3])})

Note that the reaction force has increased compared to the previous simulation, because the support are closer to the beam center.

print(output_data)

Out:

{'length': array([600.]), 'width': array([30.]), 'height': array([40.]), 'imposed_dplt': array([-5.]), 'relative_support_location': array([0.3]), 'young_modulus': array([210000.]), 'nu_p': array([0.3]), 'cpu_time': array([0.00448251]), 'date': array(['2026-03-26 14:54:14.762732'], dtype='<U26'), 'description': array([''], dtype='<U1'), 'directory_archive_job': array(['/home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/model_runs/archive/basic_usage/BendingTestAnalytical/ThreePoints/2'],
      dtype='<U136'), 'directory_archive_root': array(['/home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/model_runs/archive/basic_usage'],
      dtype='<U100'), 'directory_scratch_job': array([''], dtype='<U1'), 'directory_scratch_root': array(['/home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/model_runs/scratch/basic_usage'],
      dtype='<U100'), 'dplt': array([-6.30533927e-18, -1.51499692e-01, -3.02875712e-01, -4.54004384e-01,
       -6.04762037e-01, -7.55024997e-01, -9.04669592e-01, -1.05357215e+00,
       -1.20160899e+00, -1.34865645e+00, -1.49459084e+00, -1.63928851e+00,
       -1.78262577e+00, -1.92447895e+00, -2.06472438e+00, -2.20323838e+00,
       -2.33989729e+00, -2.47457742e+00, -2.60715511e+00, -2.73750669e+00,
       -2.86550847e+00, -2.99103678e+00, -3.11396796e+00, -3.23417833e+00,
       -3.35154421e+00, -3.46594194e+00, -3.57724784e+00, -3.68533823e+00,
       -3.79008945e+00, -3.89137781e+00, -3.98907965e+00, -4.08307130e+00,
       -4.17322908e+00, -4.25942931e+00, -4.34154833e+00, -4.41946245e+00,
       -4.49304802e+00, -4.56218135e+00, -4.62673877e+00, -4.68659661e+00,
       -4.74163119e+00, -4.79171884e+00, -4.83673589e+00, -4.87655867e+00,
       -4.91106350e+00, -4.94012670e+00, -4.96362461e+00, -4.98143356e+00,
       -4.99342986e+00, -4.99948985e+00, -4.99948985e+00, -4.99342986e+00,
       -4.98143356e+00, -4.96362461e+00, -4.94012670e+00, -4.91106350e+00,
       -4.87655867e+00, -4.83673589e+00, -4.79171884e+00, -4.74163119e+00,
       -4.68659661e+00, -4.62673877e+00, -4.56218135e+00, -4.49304802e+00,
       -4.41946245e+00, -4.34154833e+00, -4.25942931e+00, -4.17322908e+00,
       -4.08307130e+00, -3.98907965e+00, -3.89137781e+00, -3.79008945e+00,
       -3.68533823e+00, -3.57724784e+00, -3.46594194e+00, -3.35154421e+00,
       -3.23417833e+00, -3.11396796e+00, -2.99103678e+00, -2.86550847e+00,
       -2.73750669e+00, -2.60715511e+00, -2.47457742e+00, -2.33989729e+00,
       -2.20323838e+00, -2.06472438e+00, -1.92447895e+00, -1.78262577e+00,
       -1.63928851e+00, -1.49459084e+00, -1.34865645e+00, -1.20160899e+00,
       -1.05357215e+00, -9.04669592e-01, -7.55024997e-01, -6.04762037e-01,
       -4.54004384e-01, -3.02875712e-01, -1.51499692e-01, -1.21972744e-19]), 'dplt_at_force_location': array([-4.99948985]), 'dplt_grid': array([120.        , 123.63636364, 127.27272727, 130.90909091,
       134.54545455, 138.18181818, 141.81818182, 145.45454545,
       149.09090909, 152.72727273, 156.36363636, 160.        ,
       163.63636364, 167.27272727, 170.90909091, 174.54545455,
       178.18181818, 181.81818182, 185.45454545, 189.09090909,
       192.72727273, 196.36363636, 200.        , 203.63636364,
       207.27272727, 210.90909091, 214.54545455, 218.18181818,
       221.81818182, 225.45454545, 229.09090909, 232.72727273,
       236.36363636, 240.        , 243.63636364, 247.27272727,
       250.90909091, 254.54545455, 258.18181818, 261.81818182,
       265.45454545, 269.09090909, 272.72727273, 276.36363636,
       280.        , 283.63636364, 287.27272727, 290.90909091,
       294.54545455, 298.18181818, 301.81818182, 305.45454545,
       309.09090909, 312.72727273, 316.36363636, 320.        ,
       323.63636364, 327.27272727, 330.90909091, 334.54545455,
       338.18181818, 341.81818182, 345.45454545, 349.09090909,
       352.72727273, 356.36363636, 360.        , 363.63636364,
       367.27272727, 370.90909091, 374.54545455, 378.18181818,
       381.81818182, 385.45454545, 389.09090909, 392.72727273,
       396.36363636, 400.        , 403.63636364, 407.27272727,
       410.90909091, 414.54545455, 418.18181818, 421.81818182,
       425.45454545, 429.09090909, 432.72727273, 436.36363636,
       440.        , 443.63636364, 447.27272727, 450.90909091,
       454.54545455, 458.18181818, 461.81818182, 465.45454545,
       469.09090909, 472.72727273, 476.36363636, 480.        ]), 'error_code': array([0]), 'job_name': array([''], dtype='<U1'), 'load_case': array(['ThreePoints'], dtype='<U11'), 'location_max_dplt': array([298.18181818]), 'machine': array(['IPF7101'], dtype='<U7'), 'maximum_dplt': array([-4.99948985]), 'model': array(['BendingTestAnalytical'], dtype='<U21'), 'moment': array([        0.        , -15555555.55555555,         0.        ]), 'moment_grid': array([120., 300., 480.]), 'n_cpus': array([1]), 'persistent_result_files': array([''], dtype='<U1'), 'reaction_forces': array([-172839.50617284]), 'user': array(['sebastien.bocquet'], dtype='<U17'), 'vims_git_version': array(['d0050d8de498c8354552cdde540fb3e524454871'], dtype='<U40')}

The outputs can be plotted again. Note that the displcement curve support now corresponds to +/- 0.3 times the half length of the beam:

figures = model.plot_results(show=True)

figures["dplt_vs_dplt_grid"]

Out:

    INFO - 16:51:52: Saving plots to /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/02_integrated_models
    INFO - 16:51:52: Plot BendingTestAnalytical_ThreePoints_dplt_vs_dplt_grid.html is saved to /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/02_integrated_models/BendingTestAnalytical_ThreePoints_dplt_vs_dplt_grid.html
    INFO - 16:51:53: Plot BendingTestAnalytical_ThreePoints_moment_vs_moment_grid.html is saved to /home/sebastien.bocquet/PycharmProjects/vimseo/docs/runnable_examples/02_integrated_models/BendingTestAnalytical_ThreePoints_moment_vs_moment_grid.html

For a model running an external solver, the options of the job can be modified. The basic job options are defined in the pydantic model BaseUserJobSettings() and passed to the model's job executor. To set the number of CPUs to 2, the following command can be used: model.run.job_executor.set_options(BaseUserJobSettings(n_cpus=2)).

Total running time of the script: ( 0 minutes 2.608 seconds)

Download Python source code: plot_01_basic_usage.py

Download Jupyter notebook: plot_01_basic_usage.ipynb

Gallery generated by mkdocs-gallery