I would like to ask for help in my attemt to re-write a piece of code from Matlab to Scilab.
It was written originally for Matlab in 2014 by my collegue, where it did work fine.
The file is supposed to calculate the average residence time of a polymer in an extruder when subjected at different extrusion speeds.
The original Matlab code is included as image for reference purposes.
I have been trying for 2 days to get it working, but when excecuting, Scilab stops working and closes.. Not sure how to solve that error haha.
Below is the code which has been adjusted by me.
//Residence Time Profiler
//Originally developed by Ype van der Zijpp for Matlab, June 2014
//Adapted by Niels van der Rest for Scilab, August 2020
//Intended for profiling the changes in residence time of a polymer process equipment like e.g. Brabender and spinning lines.
//This simulation is based on assuming plug-flow and calculates the AVERAGE residence time profile (internal volume divided by the throughput)
//Setting up parameters in variables
IntVol = 160; //Internal volume in ml
IntDiv = 1000; //Internal volume is later devided in IntDiv sections
CapSS = 0.6229; //Throughput of spinpump in ml per cycle
//Spinpump speeds in RPM and lead times in seconds
//These variables are designed to be changed when setting up different extrusion protocols.
Step0 = 15;
Step1 = 1;
Step2 = 2.5;
Step3 = 5;
Step4 = 10;
Step5 = 20;
Step6 = 30;
Step7 = 40;
Step8 = 50;
Step9 = 60;
Step10 = 70;
Lead0 = 1800;
Lead1 = 300;
Lead2 = 300;
Lead3 = 300;
Lead4 = 300;
Lead5 = 300;
Lead6 = 300;
Lead7 = 300;
Lead8 = 300;
Lead9 = 300;
Lead10 = 300;
Steps = [Step0 Step1 Step2 Step3 Step4 Step5 Step6 Step7 Step8 Step9 Step10 0; Lead0 Lead1 Lead2 Lead3 Lead4 Lead5 Lead6 Lead7 Lead8 Lead9 Lead10 0];
//Preparing for simulation
SecVol = IntVol/IntDiv; //Volume of a small section of IntVol, in ml
IntVolSec = zeros(1,IntDiv); //Array containing internal volume sections
RTP = zeros(1,3); //Array for results (for Scilab, both rows and columns must be adressed) - order = rows,columns.
ExtrTime = 0; //Extrusion time = 0
RowCounter = 0; //
for Stepcount = 1:1:12 //Do the following calculations for each individual step.
Step = Steps(1,Stepcount); //Which step are we now?
Lead = Steps(2,Stepcount); //Which lead are we now?
if Step == 0 //Signaling when all steps are taken, what happens if step "0" is reached.
end; //End of "if Step == 0"
SecTime = 60*SecVol/(Step*CapSS); //Time needed to pass SecVol, in sec //Continuation of "for Stepcount = 1:12"
StepTime = 0; //
for Counter = 2:$ //Calculating profile development in step (for Matlab, % = infinity, while for Scilab, $ = infinity)
RowCounter = RowCounter + 1; //
RTP(RowCounter,1) = ExtrTime; //Transfer data to result array RTP
RTP(RowCounter,2) = Step; //Transfer data to result array RTP
RTP(RowCounter,3) = IntVolSec(1,IntDiv); //Transfer data to result array RTP
for n = IntDiv:-1:2 //Applying time increase and moving data in array
IntVolSec(1,n) = IntVolSec(1,n-1) + SecTime; //
IntVolSec(1,1) = 0; //
StepTime = StepTime + SecTime; //Time spend in current step
ExtrTime = ExtrTime + SecTime; //Total time spend in simulation
if StepTime > Lead
end; //End of "if StepTime > Lead"
end; //End of "for Counter = 2:$"
end; //End of "for Stepcount = 1:12"