[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [TRNSYS-users] Changing a parameter to input in components



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+PAR1
! � �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@yahoo.com> wrote:

Dear David

Thanks for your reply

To be honest I try to change the script but I don�t 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@tess-inc.com]
Sent: 12 July 2010 18:16
To: mehdi
Cc: trnsys-users@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@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@tess-inc.com
http://www.tess-inc.com
http://www.trnsys.com

_______________________________________________
TRNSYS-users mailing list
TRNSYS-users@cae.wisc.edu
https://www-old.cae.wisc.edu/mailman/listinfo/trnsys-users




--
Jaime. Gonz�z Rodr�ez