[TRNSYS-users] Changing a parameter to input in components
Mehdi Shahrestani
mahdishahrestani at yahoo.com
Mon Jul 12 18:59:41 PDT 2010
Dear Jaime
Many thanks for your effort in preparing this informative guide line.
This solved my problem. I think this is a valuable instruction to modify the
existing components.
Same as you it is very difficult to switch back to Fortran from Matlab after
ages.
But anyway there is no remedy and I should back on the track.
Again thanks Jaime for your reply which answered my question
comprehensively.
Regards
Mehdi Shahrestani
_____
From: Jaime Gonzalez Rodriguez [mailto:gonzalezro.jaime at gmail.com]
Sent: 13 July 2010 01:05
To: Mehdi Shahrestani
Cc: David Bradley; trnsys-users at cae.wisc.edu
Subject: Re: [TRNSYS-users] Changing a parameter to input in components
I forgot to change something in your code, now it's all right =)
On 13 July 2010 02:03, Jaime Gonzalez Rodriguez <gonzalezro.jaime at gmail.com>
wrote:
well, you just have to find the code of the type you wanna change, for
instance type212.for or whatever...then, as David said you have to change
the parameter to input, I'll do it in the code that you pasted before so
that you can see an example, anyway my trnsys function library seems to be
kind of different to yours, but this should work.
Other topic is how to recompile it, I guess you should create a project and
set the right options to the compiler, you've got two options.
1. Copy the options of the project that trnsys created for you with the type
you have built before, those options should be the same
2. Create a new component, create the .tmf with the number of parameters,
inputs and outputs that you want, and then copy and paste the code, be
carefull with this, don't paste the part where you define the number of
parameters or the part with the type number, just the core of the code, I
mean, the part where you carry out the calculations.
I preffer the option 2 because I am too lazy to fight with windows
compilers, but the first option might be better.
When I started programming types I didn't remember much about fortran cuz I
was programming C and other languages (mostly matlab which is the easiest)
for a long time and I had forgotten almost everything from university, it
was a nice exercise to read a code of a type and try to understand
everything. If I were you I'd try so.
Regards and good luck with fortran =)
----------------------------------------------------------------------------
---------------------------------------------------------------------------
!Do All of the "Very First Call of the Simulation Manipulations" Here
If(getIsFirstCallofSimulation()) Then
!Tell the TRNSYS Engine How This Type Works
!Call SetNumberofParameters(1) !The number
of parameters that the the model wants
Call SetNumberofParameters(0) !The number
of parameters that the the model wants
!Call SetNumberofInputs(1) !The
number of inputs that the the model wants
Call SetNumberofInputs(2) !The
number of inputs that the the model wants
Call SetNumberofDerivatives(0) !The number
of derivatives that the the model wants
Call SetNumberofOutputs(1) !The
number of outputs that the the model produces
Call SetIterationMode(1)
!An indicator for the iteration mode (default=1). Refer to section 8.4.3.5
of the documentation for more details.
Call SetNumberStoredVariables(0,0)
!The number of static variables that the model wants stored in the global
storage array and the number of dynamic variables that the model wants
stored in the global storage array
Call SetNumberofDiscreteControls(0)
!The number of discrete control functions set by this model (a value greater
than zero requires the user to use Solver 1: Powell's method)
Return
EndIf
!---------------------------------------------------------------------------
--------------------------------------------
!---------------------------------------------------------------------------
--------------------------------------------
!Do All of the First Timestep Manipulations Here - There Are No Iterations
at the Intial Time
If (getIsFirstTimestep()) Then
!par = getParameterValue(1) I comment this line cuz u won't need it
anymore
inp1 = GetInputValue(1)
inp2 = GetInputValue(2)
!Check the Parameters for Problems (#,ErrorType,Text)
!Sample Code: If( PAR1 <= 0.) Call FoundBadParameter(1,'Fatal','The first
parameter provided to this model is not acceptable.')
!Set the Initial Values of the Outputs (#,Value)
Call SetOutputValue(1, 0) ! opt
!If Needed, Set the Initial Values of the Static Storage Variables
(#,Value)
!Sample Code: SetStaticArrayValue(1,0.d0)
!If Needed, Set the Initial Values of the Dynamic Storage Variables
(#,Value)
!Sample Code: Call SetDynamicArrayValueThisIteration(1,20.d0)
!If Needed, Set the Initial Values of the Discrete Controllers (#,Value)
!Sample Code for Controller 1 Set to Off: Call
SetDesiredDiscreteControlState(1,0)
Return
EndIf
!---------------------------------------------------------------------------
--------------------------------------------
!---------------------------------------------------------------------------
--------------------------------------------
!ReRead the Parameters if Another Unit of This Type Has Been Called Last
If(getIsReReadParameters()) Then
!Read in the Values of the Parameters from the Input
File
!par = getParameterValue(1) Since you don't have parameters you won't
need this neither
EndIf
!---------------------------------------------------------------------------
--------------------------------------------
!Read the Inputs
inp1 = GetInputValue(1)
inp2 = GetInputValue(2)
!Check the Inputs for Problems (#,ErrorType,Text)
!Sample Code: If( IN1 <= 0.) Call FoundBadInput(1,'Fatal','The
first input provided to this model is not acceptable.')
If(ErrorFound()) Return
! finally where you calculated the value of the formula you should
change PAR1 for IN2
OUT1=IN1+IN2
! DON'T FORGET TO ADD THE DECLARATION OF THE VARIABLE IN2 AND DELETE THE
DECLARATION OF PAR1
! Note: As far as you declare the variables you can call them with any
name you want, it does not have to be
Double IN1
Double IN2
it could be
Double SPAINWORLDCHAMPIONS
Double whatever
On 12 July 2010 21:04, Mehdi Shahrestani <mahdishahrestani at yahoo.com> wrote:
Dear David
Thanks for your reply
To be honest I try to change the script but I dont know how I can recompile
the edited file.
I was wondering if you could give me some hints about recompiling an edited
fortran file.
Regards
Mehdi Shahrestani
_____
From: David Bradley [mailto:bradley at tess-inc.com]
Sent: 12 July 2010 18:16
To: mehdi
Cc: trnsys-users at cae.wisc.edu
Subject: Re: [TRNSYS-users] Changing a parameter to input in components
Mehdi,
In addition to changing the proforma, you also need to modify and
recompile the Fortran code of the Type and change the number of parameters
and inputs that it expecting to be passed.
Best,
David
On 7/11/2010 17:37, mehdi wrote:
Hello everybody
I have a question about changing a Parameter into Input in components.
For example in a pipe component, I have changed one of parameters to input
(in Performa) but after run there were two errors mentioned that
There is one missed parameter and one more than normal input.
I think there should be a way to solve such a problem.
I was wondering if anybody could give some advice.
Regards
Mehdi Shahrestani
_______________________________________________
TRNSYS-users mailing list
TRNSYS-users at cae.wisc.edu
https://www-old.cae.wisc.edu/mailman/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
bradley at tess-inc.com
http://www.tess-inc.com
http://www.trnsys.com
_______________________________________________
TRNSYS-users mailing list
TRNSYS-users at cae.wisc.edu
https://www-old.cae.wisc.edu/mailman/listinfo/trnsys-users
--
Jaime. González Rodríguez
--
Jaime. González Rodríguez
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.onebuilding.org/pipermail/trnsys-users-onebuilding.org/attachments/20100713/95bde030/attachment-0005.htm>
More information about the TRNSYS-users
mailing list