[cig-commits] commit: Make the static arrays in FileN really static, and remember to close files that I have opened.
Mercurial
hg at geodynamics.org
Wed Apr 13 14:08:17 PDT 2011
changeset: 780:980fabd2e8d6
tag: tip
user: Walter Landry <wlandry at caltech.edu>
date: Wed Apr 13 14:07:16 2011 -0700
files: plugins/StandardConditionFunctions/StandardConditionFunctions.c
description:
Make the static arrays in FileN really static, and remember to close files that I have opened.
diff -r 4a2ca62598ab -r 980fabd2e8d6 plugins/StandardConditionFunctions/StandardConditionFunctions.c
--- a/plugins/StandardConditionFunctions/StandardConditionFunctions.c Fri Apr 08 20:51:34 2011 -0700
+++ b/plugins/StandardConditionFunctions/StandardConditionFunctions.c Wed Apr 13 14:07:16 2011 -0700
@@ -2392,14 +2392,14 @@ void StgFEM_StandardConditionFunctions_Q
int Binary_Search(double *data, int s, int e, double value);
-void StgFEM_StandardConditionFunctions_FileN( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result, int file_num, double *coords, double *data);
+void StgFEM_StandardConditionFunctions_FileN( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result, int file_num, double **coords, double **data);
void StgFEM_StandardConditionFunctions_File1( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result )
{
static double *coords=NULL;
static double *data=NULL;
StgFEM_StandardConditionFunctions_FileN(node_lI,var_I,_context,_result,1,
- coords,data);
+ &coords,&data);
}
void StgFEM_StandardConditionFunctions_File2( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result )
@@ -2407,7 +2407,7 @@ void StgFEM_StandardConditionFunctions_F
static double *coords=NULL;
static double *data=NULL;
StgFEM_StandardConditionFunctions_FileN(node_lI,var_I,_context,_result,2,
- coords,data);
+ &coords,&data);
}
void StgFEM_StandardConditionFunctions_File3( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result )
@@ -2415,7 +2415,7 @@ void StgFEM_StandardConditionFunctions_F
static double *coords=NULL;
static double *data=NULL;
StgFEM_StandardConditionFunctions_FileN(node_lI,var_I,_context,_result,3,
- coords,data);
+ &coords,&data);
}
void StgFEM_StandardConditionFunctions_File4( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result )
@@ -2423,7 +2423,7 @@ void StgFEM_StandardConditionFunctions_F
static double *coords=NULL;
static double *data=NULL;
StgFEM_StandardConditionFunctions_FileN(node_lI,var_I,_context,_result,4,
- coords,data);
+ &coords,&data);
}
void StgFEM_StandardConditionFunctions_File5( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result )
@@ -2431,7 +2431,7 @@ void StgFEM_StandardConditionFunctions_F
static double *coords=NULL;
static double *data=NULL;
StgFEM_StandardConditionFunctions_FileN(node_lI,var_I,_context,_result,5,
- coords,data);
+ &coords,&data);
}
void StgFEM_StandardConditionFunctions_File6( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result )
@@ -2439,7 +2439,7 @@ void StgFEM_StandardConditionFunctions_F
static double *coords=NULL;
static double *data=NULL;
StgFEM_StandardConditionFunctions_FileN(node_lI,var_I,_context,_result,6,
- coords,data);
+ &coords,&data);
}
void StgFEM_StandardConditionFunctions_File7( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result )
@@ -2447,7 +2447,7 @@ void StgFEM_StandardConditionFunctions_F
static double *coords=NULL;
static double *data=NULL;
StgFEM_StandardConditionFunctions_FileN(node_lI,var_I,_context,_result,7,
- coords,data);
+ &coords,&data);
}
void StgFEM_StandardConditionFunctions_File8( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result )
@@ -2455,7 +2455,7 @@ void StgFEM_StandardConditionFunctions_F
static double *coords=NULL;
static double *data=NULL;
StgFEM_StandardConditionFunctions_FileN(node_lI,var_I,_context,_result,8,
- coords,data);
+ &coords,&data);
}
void StgFEM_StandardConditionFunctions_File9( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result )
@@ -2463,7 +2463,7 @@ void StgFEM_StandardConditionFunctions_F
static double *coords=NULL;
static double *data=NULL;
StgFEM_StandardConditionFunctions_FileN(node_lI,var_I,_context,_result,9,
- coords,data);
+ &coords,&data);
}
void StgFEM_StandardConditionFunctions_File10( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result )
@@ -2471,10 +2471,10 @@ void StgFEM_StandardConditionFunctions_F
static double *coords=NULL;
static double *data=NULL;
StgFEM_StandardConditionFunctions_FileN(node_lI,var_I,_context,_result,10,
- coords,data);
+ &coords,&data);
}
-void StgFEM_StandardConditionFunctions_FileN( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result, int file_num, double *coords, double *data)
+void StgFEM_StandardConditionFunctions_FileN( Node_LocalIndex node_lI, Variable_Index var_I, void* _context, void* _result, int file_num, double **coords, double **data)
{
FiniteElementContext * context = (FiniteElementContext*)_context;
FeVariable* feVariable = NULL;
@@ -2530,9 +2530,8 @@ void StgFEM_StandardConditionFunctions_F
Journal_Register( Error_Type,"StgFEM_StandardConditionFunctions_FileN"),
"%s must be greater than zero, but was set to %d.\n",
fileN_N,N);
- if(data==NULL)
+ if(*data==NULL)
{
-
FILE *fp=fopen(filename,"r");
Journal_Firewall(fp!=NULL,
Journal_Register( Error_Type,"StgFEM_StandardConditionFunctions_FileN"),
@@ -2546,36 +2545,34 @@ void StgFEM_StandardConditionFunctions_F
dirction. Similarly in 3D. */
if(ndims==1)
{
- data=(double *)malloc(N*sizeof(double));
- coords=(double *)malloc(N*sizeof(double));
+ *data=(double *)malloc(N*sizeof(double));
+ *coords=(double *)malloc(N*sizeof(double));
}
else if(ndims==2)
{
- data=(double *)malloc(N*N2*sizeof(double));
- coords=(double *)malloc((N+N2)*sizeof(double));
+ *data=(double *)malloc(N*N2*sizeof(double));
+ *coords=(double *)malloc((N+N2)*sizeof(double));
}
else
{
- data=(double *)malloc(N*N2*N3*sizeof(double));
- coords=(double *)malloc((N+N2+N3)*sizeof(double));
+ *data=(double *)malloc(N*N2*N3*sizeof(double));
+ *coords=(double *)malloc((N+N2+N3)*sizeof(double));
}
- Journal_Firewall(data!=NULL && coords!=NULL,
+ Journal_Firewall(*data!=NULL && *coords!=NULL,
Journal_Register( Error_Type,"StgFEM_StandardConditionFunctions_FileN"),
"Could not allocate enough memory for %s\n",file_num);
if(ndims==1)
{
for(i=0;i<N;++i)
- fscanf(fp,"%lf %lf",coords+i,data+i);
+ fscanf(fp,"%lf %lf",*coords+i,*data+i);
}
else if(ndims==2)
{
for(i=0;i<N;++i)
for(j=0;j<N2;++j)
{
- fscanf(fp,"%lf %lf %lf",coords+i,coords+N+j,data+i+N*j);
- /* printf("output %d %d %g %g %g\n", */
- /* i,j,coords[i],coords[N+j],data[i+N*j]); */
+ fscanf(fp,"%lf %lf %lf",*coords+i,*coords+N+j,*data+i+N*j);
}
}
else if(ndims==3)
@@ -2583,38 +2580,39 @@ void StgFEM_StandardConditionFunctions_F
for(i=0;i<N;++i)
for(j=0;j<N2;++j)
for(k=0;k<N3;++k)
- fscanf(fp,"%lf %lf %lf %lf",coords+i,coords+N+j,coords+N+N2+k,
- data+i+N*(j+N2*k));
+ fscanf(fp,"%lf %lf %lf %lf",*coords+i,*coords+N+j,*coords+N+N2+k,
+ *data+i+N*(j+N2*k));
}
+ fclose(fp);
}
- Journal_Firewall(!(coord[dim]<coords[0] || coord[dim]>coords[N-1]),
+ Journal_Firewall(!(coord[dim]<(*coords)[0] || coord[dim]>(*coords)[N-1]),
Journal_Register( Error_Type,"StgFEM_StandardConditionFunctions_FileN"),
"The range in the file '%s' does not cover this value %g\nIt only covers %g to %g in the %d direction.\n",
- filename,coord[dim],coords[0],coords[N-1],dim);
+ filename,coord[dim],(*coords)[0],(*coords)[N-1],dim);
if(ndims>1)
- Journal_Firewall(!(coord[dim2]<coords[N] || coord[dim2]>coords[N+N2-1]),
+ Journal_Firewall(!(coord[dim2]<(*coords)[N] || coord[dim2]>(*coords)[N+N2-1]),
Journal_Register( Error_Type,"StgFEM_StandardConditionFunctions_FileN"),
"The range in the file '%s' does not cover this value %g\nIt only covers %g to %g in the %d direction.\n",
- filename,coord[dim2],coords[N],coords[N+N2-1],dim2);
+ filename,coord[dim2],(*coords)[N],(*coords)[N+N2-1],dim2);
if(ndims>2)
- Journal_Firewall(!(coord[dim3]<coords[N+N2] || coord[dim3]>coords[N+N2+N3-1]),
+ Journal_Firewall(!(coord[dim3]<(*coords)[N+N2] || coord[dim3]>(*coords)[N+N2+N3-1]),
Journal_Register( Error_Type,"StgFEM_StandardConditionFunctions_FileN"),
"The range in the file '%s' does not cover this value %g\nIt only covers %g to %g in the %d direction.\n",
- filename,coord[dim3],coords[N+N2],coords[N+N2+N3-1],dim2);
+ filename,coord[dim3],(*coords)[N+N2],(*coords)[N+N2+N3-1],dim2);
- i=Binary_Search(coords,0,N-1,coord[dim]);
- factor=(coords[i+1]-coord[dim])/(coords[i+1]-coords[i]);
+ i=Binary_Search(*coords,0,N-1,coord[dim]);
+ factor=((*coords)[i+1]-coord[dim])/((*coords)[i+1]-(*coords)[i]);
if(ndims>1)
{
- j=Binary_Search(coords,N,N+N2-1,coord[dim2]);
- factor2=(coords[j+1]-coord[dim2])/(coords[j+1]-coords[j]);
+ j=Binary_Search(*coords,N,N+N2-1,coord[dim2]);
+ factor2=((*coords)[j+1]-coord[dim2])/((*coords)[j+1]-(*coords)[j]);
j=j-N;
if(ndims>2)
{
- k=Binary_Search(coords,N,N+N2+N3-1,coord[dim3]);
- factor3=(coords[k+1]-coord[dim3])/(coords[k+1]-coords[k]);
+ k=Binary_Search(*coords,N,N+N2+N3-1,coord[dim3]);
+ factor3=((*coords)[k+1]-coord[dim3])/((*coords)[k+1]-(*coords)[k]);
k=k-N-N2;
}
}
@@ -2622,21 +2620,21 @@ void StgFEM_StandardConditionFunctions_F
switch(ndims)
{
case 1:
- *result=data[i]*factor + data[i+1]*(1-factor);
+ *result=(*data)[i]*factor + (*data)[i+1]*(1-factor);
break;
case 2:
- *result=factor*(factor2*data[i+N*j] + (1-factor2)*data[i+N*(j+1)])
- + (1-factor)*(factor2*data[i+1+N*j] + (1-factor2)*data[i+1+N*(j+1)]);
+ *result=factor*(factor2*(*data)[i+N*j] + (1-factor2)*(*data)[i+N*(j+1)])
+ + (1-factor)*(factor2*(*data)[i+1+N*j] + (1-factor2)*(*data)[i+1+N*(j+1)]);
break;
case 3:
- *result=factor*(factor2*(factor3*data[i+N*(j+N2*k)]
- + (1-factor3)*data[i+N*(j+N2*(k+1))])
- + (1-factor2)*(factor3*data[i+N*((j+1)+N2*k)]
- + (1-factor3)*data[i+N*((j+1)+N2*(k+1))]))
- + (1-factor)*(factor2*(factor3*data[i+1+N*(j+N2*k)]
- + (1-factor3)*data[i+1+N*(j+N2*(k+1))])
- + (1-factor2)*(factor3*data[i+1+N*((j+1)+N2*k)]
- + (1-factor3)*data[i+1+N*((j+1)+N2*(k+1))]));
+ *result=factor*(factor2*(factor3*(*data)[i+N*(j+N2*k)]
+ + (1-factor3)*(*data)[i+N*(j+N2*(k+1))])
+ + (1-factor2)*(factor3*(*data)[i+N*((j+1)+N2*k)]
+ + (1-factor3)*(*data)[i+N*((j+1)+N2*(k+1))]))
+ + (1-factor)*(factor2*(factor3*(*data)[i+1+N*(j+N2*k)]
+ + (1-factor3)*(*data)[i+1+N*(j+N2*(k+1))])
+ + (1-factor2)*(factor3*(*data)[i+1+N*((j+1)+N2*k)]
+ + (1-factor3)*(*data)[i+1+N*((j+1)+N2*(k+1))]));
break;
}
}
More information about the CIG-COMMITS
mailing list