Design of concrete structure (retaining wall) using load groups [SOLVED]

Hi, I am interested of doing a parametric design of a retaining wall with API.
From last project I got the feeling that it was best to collect questions. Here is what I am getting stuck on:

Current code (what is the recommended way to share files?):

  1. Is it possible to add foundation slab?


    (Currently adding eccentric slab and surface support seperatly)

  2. Is it correct that the FemDesign.Geometry.Region.RectangleXZ starts from point 0, 0, 0? Should this not require position similar to FemDesign.Geometry.Region.RectangleXY?

Was also wondering if there should be a method called FemDesign.Geometry.Region.RectangleYZ?

  1. I have added “C35/45NoEG” to library in FEMDeisgn console but the API can’t seem to find it. I am guessing the library is not shared, is the solution to create a new material inside the API? If so, can you give a example?

  2. Load groups → Custom (Load cases’ relationship)

Can you help with example of a custom load cases’ relationship, see picture:

The closes I can find is this:

Practical example - Load groups combining
Practical example - Load groups

The difference is that Load groups combining is a more advanced version compared with Load groups?

Load group in code so far:

var LGWaterULS = new LoadGroupPermanent(1, 1.35, 1, 1, loadCasesWaterloadsULS, ELoadGroupRelationship.Custom, 1.1 / 1.35, “LGWaterULS”);

  1. Is there load group for accidental loads?

  2. Load groups → Combination method
    Can you help with example of defining load group combination to deactivate SLS loads in ULS and vice versa, see picture:

  3. QuantityEstimationConcrete
    How do you extract the Area and Volume info?
    My code so far (not working):

double AreaBPL = FemDesign.Results.QuantityEstimationConcrete.Slab1.Area;
double VolumeBPL = FemDesign.Results.QuantityEstimationConcrete.Slab1.Volume;

Would be usefull to calculate lift from water.

  1. Reinforcement

I have looked in Example 8 - SlabReinforcement

I was wondering how the crack width should be implemented.

With RCShellCrackWidth constructor?
If so, can you give example of “CaseIdentifier = resultCase;” ?

Was also intressted in example of RunDesign, my code so far:

var design = new FemDesign.Calculate.Design(autoDesign: true, check: true, loadCombination: false, applyChanges: true);
femDesign.RunDesign(RCDESIGN, design, null);

Where do you set calculation / design parameters? see picture:


  1. Adding section.
    I think the result is stored in the .strFEM and is not visible in .struxml. This means that it can’t be modified with API?

Ex if I want to add sections with constant reinforcement result.
A workaround could be to add labelled section with API and add the sections manually?

Also wondering how to add the labelled sections to the model can be made.
The following code gives an error:

model.AddLabelledSection(LabelledSection, false);

  1. Documentation
    API can not create individuial plots? Creating a templete and creating a .docx is the only option?
    Is priting to PDF with API a possibility?
    Practical example - PrintDocumentation
1 Like

Ehi @KPN :slight_smile:

Thanks a lot of taking time to write this list of “missing features”! Really helpful feedback

I have opened a ticket so that we can all keep track on the status.

I will be able to reply to some of those question later during the day.

1 Like

ehi @KPN

I have published some updates on the branch 23.8.0 which are currently under testing. I hope I can publish them before the end of the week.

  1. Foundation slab has been implemented :white_check_mark:
  2. Methods to generate rectangles have been implemented :white_check_mark:
  3. You will need to save your materials as .struxml and read them. Have a look at the following blog post. You should be able to read a DatabaseFromStruxml. I believe there is a specific method in the C# core. FEM-Design section/material with the API | FEM-Design API :white_check_mark:
  4. There has been a bug in the previous version around get quantities. I have fixed the bug and 23.8.0 works accordingly. :white_check_mark:
  5. I need to write a blog post to explain how to apply the design settings. It is already possible using SetConfig within the FemDesignConnection class. :orange_square:
  6. We currently support the generation of .docx but we are waiting to get access to a print .pdf functionality. For the time being, you will need to convert the docx to pdf with different libraries. :orange_square:

Related to load groups.
Are those essential for your project? Do they need to be define from C# ?

Also, are you able to use our development branch (23.8.0)? That would help in help you in a quicker way :slight_smile:
You should basically clone our repository and move to the right branch

  1. Solved this with:

Material materialBtgNoMass = materialBtg.DeepClone();
materialBtgNoMass.Concrete.Mass = 0;
materialBtgNoMass.Name = “C35/45NoMass”;
materialBtgNoMass.Guid = Guid.NewGuid();

According to your instructions in link:
https://femdesign-api.discourse.group/t/custom-concrete-material-solved/394/2

Explanation why I want to used load groups.
I normally use load groups as traffic load on ex a bridge can be placed anywhere on the bridge and it would result in unreasonable amounts of load cases. It would therefore be nice to use the same method for retaining wall but if is considered too much work I will manage with load combinations :slight_smile:

Stopping and importing load groups is also an option.

Have never worked with Github so I feel quite confused :sweat_smile:
Have I forked incorrect or should I switch branch?

2 posts were split to a new topic: Referencing FemDesign.Core from GitHub

  1. There is an advance functionality which gives you access to all the design/calculation parameters. It requires some little text manipulation but I am pretty sure you can find a solution of your problem in this way. I do attach the .fdscript documentation as it is pretty much equivalent for C#
    FdScript | FEM-Design API

The method that you need to use is called SetConfig and it is part of femdesignconnection class.

Let me know who it goes :slight_smile:

I checked reaction as this is a result I want to use for foundation design.
I notice that the slabs and surfacesupport I created with API is different than doing it though console window.
Resulted in the following difference (only comparing dead load):
Reaction


Displacement

Retaingwall_kladd.str (1.2 MB)
Retaingwall_kladd.struxml (53.2 KB)

From .struxml file:

BPL.1
<local_pos x=“0” y=“0” z=“0”></local_pos>

Mur.2
<local_pos x=“1” y=“0” z=“6”></local_pos>

Test.1
<local_pos x=“2” y=“10.5” z=“0”></local_pos>

Test.2
<local_pos x=“1” y=“10.5” z=“3.5”></local_pos>

Same with surface support

<surface_support> … name=“@BPL_Upplag.1”
<local_pos x=“0” y=“0” z=“0”></local_pos>

<surface_support> … name=“S.1”>
<local_pos x=“2” y=“10.5” z=“0”></local_pos>

I want the API to create same as console window can you help me with this?

As a first sight, I can see a difference in the number of finete element models. One mesh is more refined that the other. Can you set the mesh density equal?
You can quickly try with the GUI. If needed, we can then set the property through the API as well

Values matched after mesh size and evaluation point was set the same with:

supportBPL.Plane.Origin = new Point3d(AvrageX, AvrageY, AvrageZ);

So this can be considered closed.