Evaluates solution at microphones. Coefficients are read on disk. This function is called when pre_calculate_coefs == 1.
42 int mpi_ncntr,mpi_nelmu;
45 int locRows,locCols,locCRows;
46 int gRows,gCols,gCRows;
57 struct panel4* mpi_elements;
86 int bsymmoffset,csymmoffset;
91 int nrow,nrowi,iloop,nloop,irow,nio,nrlast;
149 pzgemr2d_(&gCRows,&ione,
solution->
vecPsinc,&ione, &ione,descpsiu, psincvec,&ione,&ione,descgpsiu,&
runinfo->
ctxt);
150 pzgemr2d_(&gCRows,&ione,
solution->
vecPhinc,&ione, &ione,descpsiu, phincvec,&ione,&ione,descgpsiu,&
runinfo->
ctxt);
185 fbcoef = fopen(fbname,
"rb"); fccoef = fopen(fcname,
"rb");
188 j12(locRows,nrow,&nrlast,&nloop);
189 for(iloop=0;iloop<nloop;iloop++){
192 if(iloop == nloop-1) nrowi = nrlast;
193 bstride = nrowi*locCols;
194 cstride = nrowi*locCols;
199 for(irow=0;irow<nrowi;irow++){
201 i=
j21(irow ,iloop,nrow);
204 for(j=0;j<locCols;j++){
210 bsymmoffset = is * 2*nrowi*locCols;
211 csymmoffset = is * 3*nrowi*locCols;
212 ielmb = ielmu + is*mpi_nelmu;
215 ic = irow*locCols +j;
220 dd =
micscoefs->
C[ic + cstride + csymmoffset];
221 theta =
micscoefs->
C[ic + cstride*2 + csymmoffset];
223 cexpo =
CEXP(-cfreq*theta);
225 psincval = psincvec[iphiu];
226 phincval = phincvec[iphiu];
232 gamma_over_lambda = gamma/lambda;
233 lambda_over_gamma = lambda/gamma;
244 phitcval = (func+gdotn)/gamma - lambda_over_gamma * psitcval;
245 phiscmval += bb*cexpo*psitcval + (cc + cfreq*dd)*phitcval*cexpo;
248 psitcval = psiscval + psincval;
249 phitcval = (func+gdotn)/gamma - lambda_over_gamma * psitcval;
250 phiscval = phitcval - phincval;
251 phiscmval += bb*cexpo*psiscval + (cc + cfreq*dd)*phiscval*cexpo;
261 phitcval = phiscval + phincval;
265 phiscmval += bb*cexpo*((func+gdotn)/lambda - gamma_over_lambda * phitcval) + (cc + cfreq*dd)*phitcval*cexpo;
267 phiscmval += bb*cexpo*((func+gdotn)/lambda - gamma_over_lambda * phincval - gamma_over_lambda*phiscval - psincval) + (cc+cfreq*dd)*phiscval*cexpo;
274 phitmval = phincmval + phiscmval;
279 prescmval = phiscmval;
290 fclose(fbcoef); fclose(fccoef);
299 #ifdef _ACOUSTO_DEBUG 301 f = fopen(fname,
"w");
302 for(i=0;i<locRows;i++){
304 fprintf(f,
" %d %f %f %f %f %f %f\n",imics,
struct run_info * runinfo
Definition: globals.h:34
#define Vec
Definition: types.h:63
int npcols
Definition: structs.h:113
#define VecDestroy(v)
Definition: allocation.h:111
int ncntr
Definition: structs.h:299
DOUBLE * C
Definition: structs.h:372
#define CREAL(x)
Definition: functions.h:49
void Czgsum2d(int ctxt, char *scope, char *top, int m, int n, COMPLEX *A, int llda, int recr, int recc)
#define MPI_ACOUSTO_COMPLEX
Definition: types.h:56
Vec vecPsinc
Definition: structs.h:580
int myrow
Definition: structs.h:115
void vec_copy(struct vector *vdest, const struct vector vsrc)
Definition: math.c:158
int nprows
Definition: structs.h:111
void get_filename(char *filename, const char *format,...)
Definition: utils.c:59
vector struct to hold triplets.
Definition: structs.h:29
#define CIMAG(x)
Definition: functions.h:50
COMPLEX * lambda
Definition: structs.h:623
int nchief
Definition: structs.h:301
COMPLEX * sol
Definition: structs.h:607
int mics_block_size
Definition: structs.h:124
void pzgemr2d_(int *m, int *n, COMPLEX *A, int *ia, int *ja, int *desca, COMPLEX *B, int *ib, int *jb, int *descb, int *ictxt)
Copies a (m x n) submatrix of A from element (ia,ja) on a submatrix of B from element (ib...
struct bc_struct bc
Definition: globals.h:54
int nelmb
Definition: structs.h:295
#define CEXP(x)
Definition: functions.h:48
DOUBLE * B
Definition: structs.h:370
Vec vecPhinc
Definition: structs.h:578
#define COMPLEX_ZERO
Definition: constants.h:44
int ctxt
Definition: structs.h:109
int knw
Definition: structs.h:446
Definition of a quadrilateral panel.
Definition: structs.h:44
struct vector n
Definition: structs.h:48
DOUBLE rho
Definition: structs.h:476
void descinit_(int *desc, int *m, int *n, int *mb, int *nb, int *ia, int *ja, int *ictxt, int *llda, int *info)
struct solution_struct * solution
Definition: globals.h:52
#define COMPLEX
Definition: types.h:48
Vec vecPhincm
Definition: structs.h:582
BOOL printout
Definition: structs.h:486
struct modsol_info * modsolinfo
Definition: globals.h:44
int nmics
Definition: structs.h:304
DOUBLE z
Definition: structs.h:35
void j12(int i12, int n1, int *i1, int *i2)
Definition: math.c:206
struct vector g
Definition: structs.h:626
DOUBLE vec_dot(struct vector v1, struct vector v2)
Definition: math.c:34
COMPLEX * gamma
Definition: structs.h:624
int j21(int i1, int i2, int n1)
Definition: math.c:202
Vec vecPhium
Definition: structs.h:586
int mycol
Definition: structs.h:117
int nsymm
Definition: structs.h:97
Vec vecPrescm
Definition: structs.h:588
double DOUBLE
Definition: types.h:44
int numroc_(int *m, int *mb, int *p, int *ia, int *npr)
int rank
Definition: globals.h:79
DOUBLE x
Definition: structs.h:31
#define CREATE_VEC(v, lsize)
Definition: allocation.h:90
int col_block_size
Definition: structs.h:121
COMPLEX * func
Definition: structs.h:625
int krow
Definition: structs.h:105
Geometry info structure.
Definition: structs.h:161
struct micscoefs_struct * micscoefs
Definition: globals.h:50
void print_premic_on_master(COMPLEX cfreq)
Definition: pre_mic.c:604
Vec vecPretm
Definition: structs.h:590
#define MAX_PATH
Definition: constants.h:29
int row_block_size
Definition: structs.h:119
#define calloc(n, size)
Definition: allocation.h:37
struct modgeom_info * modgeominfo
Definition: globals.h:38
void sc_l2g(int il, int p, int n, int np, int nb, int *i)
Definition: matutils.c:116
#define VecZeroEntries(V, n)
Definition: allocation.h:99
DOUBLE y
Definition: structs.h:33
int dirneu
Definition: structs.h:444