/home/peifer/diffit/modules/freeMem.cc

Go to the documentation of this file.
00001 #include<math.h>
00002 #include<stdlib.h>
00003 #include<iostream>
00004 
00005 #include "../def.h"
00006 #include "../model.h"
00007 #include "../nr.h"
00008 
00009 using namespace std;
00010 
00011 void freeMem(GlobExp *ex,Glob *globs,int simit)
00012 {
00013   long nExp,i;
00014   long nrExp=globs->nrExp;
00015 
00016 
00017   delete globs->gnuFp;
00018   
00019   if(simit==FALSE)
00020     {
00021       for (nExp=1;nExp<=nrExp;++nExp) 
00022         { 
00023           long nPoints=ex[nExp].nPoints;
00024           long nP=globs->npar;
00025           long nvar=ex[nExp].nvar, nobs=ex[nExp].nobs;
00026           long nMeas=ex[nExp].nMeasure;
00027           long  me=ex[nExp].me, mg=ex[nExp].mg;
00028           free_dvector(ex[nExp].errP,1,nP);
00029           free_dvector(ex[nExp].errY0,1,nvar);
00030           free_dmatrix(ex[nExp].yTry,1,nPoints,1,nvar);
00031           free_dmatrix(ex[nExp].yTrySave,1,nPoints,1,nvar);
00032           free_dmatrix(ex[nExp].yComp,1,nPoints,1,nvar);
00033           free_dmatrix(ex[nExp].yPred,1,nMeas,1,nobs);
00034           free_dmatrix(ex[nExp].h,1,nPoints,1,nvar);   
00035           free_dmatrix(ex[nExp].residues,1,nMeas,1,nobs);
00036           free_d3tensor(ex[nExp].dyds,1,nPoints,1,nvar,1,nvar);
00037           free_d3tensor(ex[nExp].dydp,1,nPoints,1,nvar,1,nP);
00038           free_d3tensor(ex[nExp].dmds,1,nMeas,1,nobs,1,nvar);
00039           free_d3tensor(ex[nExp].dmdp,1,nMeas,1,nobs,1,nP);
00040           if (me>0) 
00041             {
00042               free_dvector(ex[nExp].r2,1,me);
00043               free_d3tensor(ex[nExp].dR2ds,1,me,1,nPoints,1,nvar);
00044               free_dmatrix(ex[nExp].dR2dp,1,me,1,nP);
00045             }
00046           if (mg>0) 
00047             {
00048               free_dvector(ex[nExp].r3,1,mg);
00049               free_d3tensor(ex[nExp].dR3ds,1,mg,1,nPoints,1,nvar);
00050               free_dmatrix(ex[nExp].dR3dp,1,mg,1,nP);
00051             }
00052           
00053           free_dvector(ex[nExp].ua,1,nMeas*nobs);
00054           free_dmatrix(ex[nExp].Ea,1,nMeas*nobs,1,nvar);
00055           free_dmatrix(ex[nExp].Pa,1,nMeas*nobs,1,nP);
00056           free_dvector(ex[nExp].ue,1,me);
00057           free_dmatrix(ex[nExp].Ee,1,me,1,nvar);
00058           free_dmatrix(ex[nExp].Pe,1,me,1,nP);
00059           free_dvector(ex[nExp].ug,1,mg);
00060           free_dmatrix(ex[nExp].Eg,1,mg,1,nvar);
00061           free_dmatrix(ex[nExp].Pg,1,mg,1,nP);
00062           free_dmatrix(ex[nExp].dS,1,nPoints,1,nvar);
00063           free_dvector(ex[nExp].dP,1,nP);
00064           
00065         }
00066     }
00067   for (nExp=1;nExp<=nrExp;++nExp) 
00068     {
00069       free(ex[nExp].splineNodes);
00070       free(ex[nExp].splineY);
00071       free(ex[nExp].splineGam);
00072       free(ex[nExp].nNodes);
00073       for(i=1;i<=NSPLINES;i++)
00074         {
00075           free(ex[nExp].splineNodes[i]);
00076           free(ex[nExp].splineY[i]);
00077           free(ex[nExp].splineGam[i]);
00078         }
00079     }
00080   if(simit==FALSE && globs->covar!=NULL)
00081     free_dmatrix(globs->covar,1,globs->fitdim,1,globs->fitdim);
00082 }

Generated on Mon Jan 29 17:09:12 2007 for Diffit by  doxygen 1.4.6