How can I assamble n identical blocks in a simscape simulation automathically?

1 view (last 30 days)
Hello,
I am trying to simulate the thermal behaviour of a pipe with high resolution detail, and as such I want to divide my pipe in n segments and simulate the heat transfer through the wall of each segment separately. I tried to use Pipe(TL) from SimscapeFluids_lib/Thermal Liquid/Pipes & Fittings but only one temperature output is available. I tried to modify the code of this element but could not get it.
I decided then to create a new block with a pipe Pipe (TL) from fl_lib/Thermal Liquid/Elements adding all insulation layers and then put n of those elements in series to do the simulations. I would like to know if its possible to do this through code, since n could easily reach values of 100 or so. I've browsed through the documentation but found no reference to this.
The idea is to simulate somthing like this:
With n elements like these emulating the pipe:
Thank you.

Accepted Answer

Fangjun Jiang
Fangjun Jiang on 15 Dec 2023
  1. It is possible. Use add_block() to construct the blocks, but repeating 100 times in one model doesn't sound reasonable.
  2. Because these elements are connected in series, "For Each Subsystem" block can't be used.
  3. For your problem, it sounds like Finite Element Analysis. Refer to this article
  4. https://www.mathworks.com/discovery/finite-element-analysis.html
  1 Comment
ANTÓN
ANTÓN on 18 Dec 2023
Thank you for your answer,
I agree that repeating the blocks graphically in one model is not the ideal solution. I think modifying the code of the pipe to obtain the temperatures at intermediate points is a much better idea, but I have no access to that code (maybe I should fully recreate the code of the pipe).
Thank you for the "add_block()" tip. I need to investigate it a little bit more, but I think it could be useful.
Doing a Finite Element Analysis is also possible, but it is not what I am looking for. I simplified my problem to ask the question, but this is just the starting point of my analysis. It is not feasible to do it using Finite Elements.

Sign in to comment.

More Answers (1)

Yifeng Tang
Yifeng Tang on 2 Jan 2024
In addition to @Fangjun Jiang's suggestion on add_block(), I would encourage you to also look into the "composite component" option in Simscape language. You may add multiple simscape blocks and connect them programmatically, and they can appear to be one single Simscape block. You can use for loops to add many components, and use "component array" to make thing manageable.
More details:
  2 Comments
ANTÓN
ANTÓN on 10 Jan 2024
This is exactly what I had in mind. Thank you very much for this contribution.
So far I created a subsystem with 10 components and replicated it 10 times. This works for a static analysis but is not suitable for an optimization process. I will definitly look into these functions.
Yifeng Tang
Yifeng Tang on 10 Jan 2024
Edited: Yifeng Tang on 10 Jan 2024
As you start on this route, check out the subsystem2ssc function as well. It builds a composite component from a subsystem model, which can help you start with a template and save some time.

Sign in to comment.

Categories

Find more on Foundation and Custom Domains in Help Center and File Exchange

Products


Release

R2023b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!