[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [TRNSYS-users] Calling a component within a TRNSYS Iteration
Aaron,
There are two TRNSYS components that do something similar to what you
are proposing. Type45 (a thermosiphon solar collector) calls Type38 (a
liquid storage tank) internally. There aren't any iterations between the
two components in this case, the TRNSYS kernel passes input information
to Type45, Type45 calls Type38 to solve the thermal storage part, Type38
returns its results to Type45 and then Type45 returns both its results
and Type38's results to the TRNSYS kernel. You may be able to use the
Type45 and type38 code to work out the mechanics of how your two Types
are going to pass information back and forth.
The next thing you will need to do is to write your own iterative solver
within one of your two Types. Your solver will pass Type A's results to
Type B, get Type B's results and resolve Type A, continuing until it
decides that the results match. There are a number of TRNSYS components
that have internal iterative solvers. Type508 in the TESS Libraries is a
good example. Type60 in the standard library has an internal solver as
well but its code is, shall we say, not the easiest to follow.
My concern about your proposed method is that the TRNSYS kernel calls
all Types, passes them their input information, recuperates their output
information, and uses that output information to determine convergence
of the system. In your case, the kernel is going to call both Type A and
Type B and not be aware that they are communicating directly between
themselves. The kernel will call Type A, which comes to a converged
solution internally with Type B, then call Type B and ... I'm not sure
whether you want B to call A and do something. Is there some reason why
"B" is a Type? Can it be a subroutine of Type A? If it has inputs of its
own that interact with other components in the system, those inputs can
all be passed to it through Type A's input list. I think that your
problem will be much easier to solve if you are able to redefine Type B
as a subroutine of Type A.
regards,
David
On 10/4/2011 19:06, Aaron J. Danenberg wrote:
TRNSYS Users:
I have a simulation consisting of 5 or more components. Two
of which require an "iteration within an iteration". This
means that two of the components in the system must feed
each other outputs and inputs within a single iteration
before the TRNSYS solver takes over. Both components are
user written, without going into further explanation they
cannot be combined into a single component. I am trying to
figure out how within a loop in my code I can call the other
single component strictly within that specific loop. In
this loop I want only these two components in this system
passing inputs an outputs back and forth until the criteria
is is satisfied. In my problem we can call the variable X,
both components have different methods in which they compute
X, and each of the components require the output from the
other component to calculate their respective X. The TRNSYS
solver is not appropriate for the iterative scheme that must
be used between these two components, so I need to figure
out a way to run an iteration between two components within
each TRNSYS iteration. It may be possible for me to modify
the control of the TRNSYS solver, but I am not where to even
begin. Thanks for reading my question!
-Aaron
_______________________________________________
TRNSYS-users mailing list
TRNSYS-users@cae.wisc.edu
https://mailman.cae.wisc.edu/listinfo/trnsys-users
--
***************************
David BRADLEY
Principal
Thermal Energy Systems Specialists, LLC
22 North Carroll Street - suite 370
Madison, WI 53703 USA
P:+1.608.274.2577
F:+1.608.278.1475
d.bradley@tess-inc.com
http://www.tess-inc.com
http://www.trnsys.com