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

2 Ansichten (letzte 30 Tage)
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.

Akzeptierte Antwort

Fangjun Jiang
Fangjun Jiang am 15 Dez. 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 Kommentar
ANTÓN
ANTÓN am 18 Dez. 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.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (1)

Yifeng Tang
Yifeng Tang am 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 Kommentare
ANTÓN
ANTÓN am 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 am 10 Jan. 2024
Bearbeitet: Yifeng Tang am 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.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Foundation and Custom Domains finden Sie in Help Center und File Exchange

Produkte


Version

R2023b

Community Treasure Hunt

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

Start Hunting!

Translated by