93 lines
2.1 KiB
C
93 lines
2.1 KiB
C
/* Copyright (C) 2013 Riccardo Greco rigreco.grc@gmail.com.
|
|
*
|
|
* This project is based on 1999-2000 Thesis work of Greco Riccardo.
|
|
* It implement an Runge Kutta 4(5)^ order integration numerical method of differential equations set
|
|
* by use of double precision floating point operation in Aztec C65 language.
|
|
* It allow to simulate different mathematical models such as:
|
|
* Resistance Capacitor electrical circuit, Direct Current electric motor,
|
|
* Alternative Current three phase induction motor.
|
|
*
|
|
* Thanks to Bill Buckels for his invaluable support:
|
|
* Aztec C compilers http://www.aztecmuseum.ca/compilers.htm
|
|
*/
|
|
#include <stdio.h>
|
|
|
|
|
|
/* GENERAL GLOBAL */
|
|
|
|
double h,time,time2,sur,r,c,tau,yinit,keep;
|
|
char fbuf[80];
|
|
int cnt,fd,fd2,z;
|
|
struct data {
|
|
char v[20];
|
|
char i[20];
|
|
char ideal[20];
|
|
};
|
|
|
|
int clearhgr(i)
|
|
int i;
|
|
{
|
|
|
|
/* Funzioni globali devono essere in modulo principale per essere condivisi
|
|
tra sovrapposizioni */
|
|
if (i!=911)
|
|
{return 0;}
|
|
maintoaux (0,0,0);
|
|
black();
|
|
hgr();
|
|
|
|
}
|
|
|
|
main()
|
|
{
|
|
int a,b,c;
|
|
z=0;
|
|
b=0;
|
|
c=0;
|
|
clearhgr(0);
|
|
IN:
|
|
a=ovloader("mainm");
|
|
switch (a){
|
|
case 0:
|
|
_exit();
|
|
break;
|
|
case 1:
|
|
b=ovloader("ov1"); /* input module */
|
|
if (b==2) {
|
|
ovloader("p8file",1); /* create or owerwrite work file */
|
|
ovloader("ov2f"); /* process module by RKF45*/
|
|
}
|
|
else {
|
|
ovloader("p8file",1); /* create or owerwrite work file rcrk*/
|
|
ovloader("ov2"); /* process module by RK4*/
|
|
}
|
|
ovloader("ginit",1); /* open graph mode */
|
|
ovloader("ov3"); /*output module */
|
|
ovloader("ginit",2); /* close graph mode */
|
|
break;
|
|
case 2:
|
|
ovloader("indc");
|
|
ovloader("p8file",2); /* create or owerwrite work file dcrk*/
|
|
ovloader("dcmotor");
|
|
ovloader("ginit",1); /* open graph mode */
|
|
ovloader("outdc"); /*output module */
|
|
ovloader("ginit",2); /* close graph mode */
|
|
c=1;
|
|
break;
|
|
case 5:
|
|
if(b==1 || b==2){
|
|
ovloader("outf",1);} /* create output file from rcrk */
|
|
else if(c==1){
|
|
ovloader("outf",2);} /* create output file from dcrk */
|
|
break;
|
|
case 6:
|
|
ovloader("saveg");
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
goto IN;
|
|
|
|
}
|
|
|