Opened 17 years ago
Closed 12 years ago
#129 closed defect (fixed)
Using alias substitution BLT(and tearing?) in initial equations
Reported by: | Francesco Casella | Owned by: | Francesco Casella |
---|---|---|---|
Priority: | critical | Milestone: | |
Component: | Backend | Version: | |
Keywords: | Cc: | Francesco Casella, Adrian Pop, Lennart Ochel |
Description
Change History (3)
comment:1 by , 17 years ago
comment:2 by , 12 years ago
Cc: | added |
---|---|
Component: | → Backend |
comment:3 by , 12 years ago
Resolution: | → fixed |
---|---|
Status: | new → closed |
Note:
See TracTickets
for help on using tickets.
Currently, the list of initial equations residual in the initial_residual() .cpp function is generated from the flattened model by packing together equations and initial equations as they are.
Applying alias substitution could substantially reduce the size of the problem for the least-squares solver. BLT transformation could also help break the initialization problem into smaller problems (even though the structure of initialization problems often shows one large block and several much smaller blocks in the BLT).
Consider this small example:
model Example
equation
initial equation
end Example;
Currently, there are 5 non-dummy residuals in the .cpp code
After alias substitution and BLT partitioning, you'd get two much smaller problems to solve in sequence: first
and then
If alias substitution is applied, it will become very important to manage the start values correctly. In this case, when an alias is selected for x, y, z, it is important to make sure that the start attribute of x (which was set at a higher level) has a precedence over the default start attributes of y and z. We've already discussed this issue a lot with Dynasim (it is very important for the initialization of fluid systems), so I could help with it.
Finally, it won't be bad to also have some (possibly limited) tearing capabilities as well, in order to ease the job of the least squares solver.