RAM DA: Shells

Hi Bentley community,

I am playing around with RAM DA and have been having trouble retrieving shell properties for floor diaphragm mesh. The idea is to retrieve shell properties and node numbers at shell vertices. I have so far tried two approaches:

  • IModel --> IStoreys --> IStorey --> IDiaphragms --> IDiaphragm --> IShells (via IDiaphragm.GetShells(RAMFrameResultType) --> IShell --> INodes (via IShell.GetNodes)

This approach gets me nodes for every diaphragm shell, however it gets me nowhere regarding material properties for individual shells as IShell only returns its own ID and ID of the diaphragm that it is associated with, which is not enough to conclusively point to a set of material properties.

  • IModel --> IStoreys --> IStorey--> IFloorType --> IDecks --> IDeck --> IShells (via IDeck.GetFinalShells) --> IShell --> IConcSlabProp (via IConcSlabProps.Get(IDeck.lPropID)

This seems to get me some material properties for the shells, however it does not seem to return all of the shells in the Diaphragms and the ones it does return seem to follow some erratic pattern that I have not been able to decipher.

My primary question is whether lUID for shells returned via route 1 should be consistent with lUID for shells returned via route 2. My second question is whether there is a better way within RAM DA to retrieve both node and material data for finite element shells.

I can supply some code snippets if necessary.

Parents
  • Hi Konstantin

    Unfortunately, RAM DA does not expose properties of individual shells (thickness, modulus of elasticity, etc.). This functionality is not currently implemented.

    Regarding your question of the second routine above (i.e.,  GetFinalShells), it is probably for shells used for visualization purpose (not for analysis purpose). The method you use in the first routine (i.e. GetShells) is real analytical shells (that's shells used in analysis).

    I came up this very limited solution that you may try (but it is for a very specific case):

    If you have a model with single floor type per story, then, you can use the following approach to get deck properties, assuming that all shells have the same properties within the deck):

    IModel --> IStoreys --> IStorey--> IFloorType --> IDecks --> IDeck -> GetlPropID (to get deck ID) -> GetConcreteSlabProp (via IModel) called for deckID:

    Once you have IConcSlabPropPtr, you can get deck properties.

    Again, this is a very limited solution for a very limited configuration (i.e., if you have single floor type per story)>

    Finally, I would like to ask:

    if we happen to store additional information in shells, what would you like to get from shells? Your help would definitely helps us what to store in shells (if we decide to add this new functionality to RAM DA).

    Regards

    Bulent N. Alemdar

    Bulent N. Alemdar, Ph.D., P.E. (CA)

    Principal Research Engineer, Structural Design

    Answer Verified By: KONSTANTIN GONCHAROV 

Reply
  • Hi Konstantin

    Unfortunately, RAM DA does not expose properties of individual shells (thickness, modulus of elasticity, etc.). This functionality is not currently implemented.

    Regarding your question of the second routine above (i.e.,  GetFinalShells), it is probably for shells used for visualization purpose (not for analysis purpose). The method you use in the first routine (i.e. GetShells) is real analytical shells (that's shells used in analysis).

    I came up this very limited solution that you may try (but it is for a very specific case):

    If you have a model with single floor type per story, then, you can use the following approach to get deck properties, assuming that all shells have the same properties within the deck):

    IModel --> IStoreys --> IStorey--> IFloorType --> IDecks --> IDeck -> GetlPropID (to get deck ID) -> GetConcreteSlabProp (via IModel) called for deckID:

    Once you have IConcSlabPropPtr, you can get deck properties.

    Again, this is a very limited solution for a very limited configuration (i.e., if you have single floor type per story)>

    Finally, I would like to ask:

    if we happen to store additional information in shells, what would you like to get from shells? Your help would definitely helps us what to store in shells (if we decide to add this new functionality to RAM DA).

    Regards

    Bulent N. Alemdar

    Bulent N. Alemdar, Ph.D., P.E. (CA)

    Principal Research Engineer, Structural Design

    Answer Verified By: KONSTANTIN GONCHAROV 

Children
  • Bulent,

    Thank you for this response. It is good to know that that the two IShells methods return different kinds of Diaphragm shells - from user interaction point of view this is quite confusing.

    In regards to your return question - I would expect to be able to retrieve all of the geometrical and material properties:

    • material type and associated properties - this can probably be communicated through the IConcSlabProp(s) or the IConcreteMaterial interfaces,
    • any stiffness modifiers that apply to final shells - I would expect this to be a property associated with each individual shell and it probably belongs inside of the IShell interface,
    • any geometrical properties - pointers to nodes and IPoints are already implemented so I would say the only other geometry information would be shell thickness.

    In my opinion the above would cover all of the conceivable use cases.

    I think RAM DA is an excellent tool with significant potential, however I've happened to hit upon a few instances where things have been on the difficult side.

    On a somewhat related note - is there some way to retrieve deck properties based on a coordinate? Could I conceivably program to calculate some sort of a geometrical centre coordinate for each shell and then possibly refer back to the IDeck(s) interface?