Index: mttroot/mtt/bin/trans/mtt_m2p ================================================================== --- mttroot/mtt/bin/trans/mtt_m2p +++ mttroot/mtt/bin/trans/mtt_m2p @@ -13,10 +13,13 @@ ############################################################### ## Version control history ############################################################### ## $Id$ ## $Log$ +## Revision 1.34 1999/10/28 05:08:48 peterg +## Added elseif +## ## Revision 1.33 1999/09/17 04:25:01 peterg ## END --> END; in translation ## ## Revision 1.32 1999/08/29 06:54:42 peterg ## Added code (mtt_parameters, get args etc) to allow arguments to the @@ -130,21 +133,27 @@ Sys_smx="$Sys""_smx" Sys_smxp="$Sys""_smx.p" Filename="$Sys""_""$rep.p" filename="$sys""_""$rep.p" +Method=$2; # The integration method + # Inform user -echo Creating $Filename +if [ -z "$Method" ]; then + echo Creating $Filename +else + echo Creating $Filename with $Method integration method +fi # Find system constants Nx=`grep "MTTNx " <$Sys\_def.r | awk '{print $3}' | sed 's/;//'` Nu=`grep "MTTNu " <$Sys\_def.r | awk '{print $3}' | sed 's/;//'` Ny=`grep "MTTNy " <$Sys\_def.r | awk '{print $3}' | sed 's/;//'` -if [ "$rep" = "simpar" ]; then - mtt -q $Sys smx p -fi +#if [ "$rep" = "simpar" ]; then +# mtt -q $Sys smx p +#fi # Heading (case $rep in state) echo "PROCEDURE $Sys_rep(VAR mttx : StateVector);" @@ -160,10 +169,22 @@ echo " mttx : StateVector;" echo " mttu : InputVector;" echo " mttt : REAL);" ;; odeo) + echo "PROCEDURE $Sys_rep(VAR mtty : OutputVector;" + echo " mttx : StateVector;" + echo " mttu : InputVector;" + echo " mttt : REAL);" + ;; + cse) + echo "PROCEDURE $Sys_rep(VAR mttdx: StateVector;" + echo " mttx : StateVector;" + echo " mttu : InputVector;" + echo " mttt : REAL);" + ;; + cseo) echo "PROCEDURE $Sys_rep(VAR mtty : OutputVector;" echo " mttx : StateVector;" echo " mttu : InputVector;" echo " mttt : REAL);" ;; @@ -185,11 +206,11 @@ echo " glnparray = StateVector;" echo " glmparray = StateVector;" echo " glnarray = StateVector;" echo " glnpbynp = StateMatrix;" echo " glmpbynp = StateMatrix;" - echo " IntegrationMethod = 1..4;" + ## echo " IntegrationMethod = 1..4;" echo "" echo "VAR" echo " MTTt,mttLAST,mttDT,mttDDT : REAL;" echo " MTTWMIN,mttWMAX : REAL;" echo " mttx,mttdx,mttxx,mttAAx : StateVector;" @@ -196,11 +217,11 @@ echo " mttu : InputVector;" echo " mtty : OutputVector;" echo " mttAA, mttE : StateMatrix;" echo " MTTi,MTTj,MTTit,MTTjt,MTTiLast: INTEGER;" echo " mttSTEPFACTOR,mttWSTEPS,mttSTEPS,mttINPUT : INTEGER;" - echo " mttMETHOD : IntegrationMethod;" + ## echo " mttMETHOD : IntegrationMethod;" echo " MTTopen : StateVector;" echo " mtt_parameters : ARRAY[1..MTT_MaxParameters] OF REAL;" echo " mtt_n_parameters : INTEGER;" echo "" ;; @@ -220,11 +241,11 @@ {*** System $Sys, rep $rep, language Pascal, file $Filename ***} {*** Translated by MTT from $Sys_rep.m on `date` ***} EOF -#Regexps +# Regexps name="[a-zA-Z0-9_]*" fun_name="$Sys\_$name" mttfun_name=$name tab=' ' space="[ $tab]*" @@ -302,14 +323,20 @@ printf("{%s $MTTPATH/trans/p/mtt_getargs.p}\n",inc) printf("{%s %s_simpar.p}\n",inc,Sys) printf("{%s %s_numpar.p}\n",inc,Sys) printf("{%s %s_state.p}\n",inc,Sys) printf("{%s %s_input.p}\n",inc,Sys) - printf("{%s %s_ode.p}\n",inc,Sys) - printf("{%s %s_odeo.p}\n",inc,Sys) + if (Method=="euler") { + printf("{%s %s_ode.p}\n",inc,Sys) + printf("{%s %s_odeo.p}\n",inc,Sys) + } + if (Method=="implicit") { + printf("{%s %s_cse.p}\n",inc,Sys) + printf("{%s %s_cseo.p}\n",inc,Sys) + printf("\n{%s %s_smx.p}\n",inc,Sys); + } printf("{%s %s_switchopen.p}\n\n",inc,Sys) - printf("\n{%s %s_smx.p}\n",inc,Sys) for (k=1;k<=j;k++) printf("%s\n", comment[k]) printf("\n") printf("\nBEGIN{%s}\n", Sys_rep) } @@ -364,11 +391,11 @@ else if (rep=="ode2odes") printf("END{%s}.\n", Sys_rep) else printf("END{%s};\n", Sys_rep) -}' Sys=$Sys sys=$sys Sys_rep=$Sys_rep rep=$rep Nx=$Nx Nu=$Nu Ny=$Ny |\ +}' Sys=$Sys sys=$sys Sys_rep=$Sys_rep rep=$rep Nx=$Nx Nu=$Nu Ny=$Ny Method=$Method|\ sed 's/(\([ijk0-9,]*\))/\[\1\]/g' |\ sed 's/(\(MTT[ijk0-9],[0-9]*\))/\[\1\]/g' |\ sed 's/(\([0-9]*,MTT[ijk0-9]\))/\[\1\]/g' |\ sed 's/(\(MTT[ijk0-9],MTT[ijk0-9]\))/\[\1\]/g' |\ sed 's/(\(MTT[ijk0-9,]*\))/\[\1\]/g' |\