Function that post processes the moments to obtain final quantities of interest.
! Function where the user enters computes quantities of interest from the solution.
External function to compute user defined post processor routines.
- Author:
- Rochan R. Upadhyay
- Parameters:
-
time | : Time during simulation |
y | : C style vector that contains quadrature points and weights. Contains the moments if called with moments. |
In this example the moments equations are solved and this function is called by passing the quadrature points at a particular time. The quantities of interest in this example are the first four moments. Therefore there is a step where the quadrature weights-points are converted to moments.
- Date:
- 10/12/2010
Open a file called output.txt
FILE *fp;
fp = fopen("output.txt", "a");
if(fp == NULL) {
perror("failed to open output.txt");
return;
}
Print to stdout. Note that the vectors in this example contain the quadrature weights+points in the order [ W_0,...,W_{num_points-1},x_{0,0},...,x_{0,num_points-1}]. The moments are computed and printed out.
Declare and then compute multivariate moments from incoming data. We compute the pure (unmixed) moments 0 to 5 for each variable.
double moms1[6];
double moms2[6];
int index;
for ( size_t i = 0; i < 6; i++ ){
index = i;
moms1[i] = 0.0;
moms2[i] = 0.0;
for ( size_t j = 0; j < num_points; j++ ){
moms1[i] += y[j]*pow(y[j+num_points],index);
moms2[i] += y[j]*pow(y[j+2*num_points],index);}}
Print to stdout.
printf("%.5e %10.5e %10.5e %10.5e %10.5e %10.5e %10.5e %10.5e %10.5e %10.5e %10.5e %10.5e %10.5e \n",
time,moms1[0],moms1[1],moms1[2],moms1[3],moms1[4],moms1[5],moms2[0],moms2[1],moms2[2],moms2[3],moms2[4],moms2[5]);
Print to the same to file output.txt. Note that new lines are added to this file as time progresses. This also means that before a new simulation is started, the file output.txt must be deleted. Otherwise new lines are added at the bottom of the existing file.
fprintf(fp,"%.5e %10.5e %10.5e %10.5e %10.5e %10.5e %10.5e %10.5e %10.5e %10.5e %10.5e %10.5e %10.5e \n",
time,moms1[0],moms1[1],moms1[2],moms1[3],moms1[4],moms1[5],moms2[0],moms2[1],moms2[2],moms2[3],moms2[4],moms2[5]);
fclose(fp);
Return control to the calling routines.