This routine evaluates the total incident potential field at the control points and at microphones. If knw=2, it also evaluates the normal derivative of the total incident field at the boundary control points.
59 int ipsiu,isourc,icntr,iplanw,imics;
68 COMPLEX phincval,psincval,phincmval;
117 for(i=0;i<locRows;i++){
122 psincval = 0.0 + I*0.0;
123 phincval = 0.0 + I*0.0;
129 phincval -= (xs.amplitude*
CEXP(-cfreq*theta)/(4.*pi*rad));
131 grgr = -(xs.amplitude*(cfreq/
runinfo->
vsound+1.0/rad)*
CEXP(-cfreq*theta)) / (4.*pi*rad*rad);
133 grg[0] = grgr*(xs.pos.x -
geometry->cntr[ipsiu].x);
134 grg[1] = grgr*(xs.pos.y -
geometry->cntr[ipsiu].y);
135 grg[2] = grgr*(xs.pos.z -
geometry->cntr[ipsiu].z);
137 psincval += grg[0] *
geometry->elements[ipsiu].n.x +
138 grg[1] *
geometry->elements[ipsiu].n.y +
139 grg[2] *
geometry->elements[ipsiu].n.z;
154 phincval += (dip.amplitude*dip.d)*cosdelta*((cfreq/(
runinfo->
vsound*rad)) - (1.0/(rad*rad)))*
CEXP(-cfreq*theta) /(4*pi);
160 grg[0] = grgr*(xs.pos.x -
geometry->cntr[ipsiu].x);
161 grg[1] = grgr*(xs.pos.y -
geometry->cntr[ipsiu].y);
162 grg[2] = grgr*(xs.pos.z -
geometry->cntr[ipsiu].z);
164 psincval += grg[0] *
geometry->elements[ipsiu].n.x +
165 grg[1] *
geometry->elements[ipsiu].n.y +
166 grg[2] *
geometry->elements[ipsiu].n.z;
179 phincval += ws.amplitude*
CEXP(-I*espo);
183 grgr = - I * ws.amplitude *
CEXP(-I*espo);
185 grg[0] = grgr * ws.pos.x;
186 grg[1] = grgr * ws.pos.y;
187 grg[2] = grgr * ws.pos.z;
189 psincval += grg[0] *
geometry->elements[ipsiu].n.x +
190 grg[1] *
geometry->elements[ipsiu].n.y +
191 grg[2] *
geometry->elements[ipsiu].n.z;
201 for(i=0;i<locMRows;i++){
203 phincmval = 0.0 +I*0.0;
209 phincmval -= xs.amplitude*
CEXP(-cfreq*theta) / (4.0*pi*rad);
221 phincmval += (dip.amplitude * dip.d)*cosdelta*((cfreq/(
runinfo->
vsound*rad)) - (1.0/(rad*rad)))*
CEXP(-cfreq*theta) /(4*pi);
231 phincmval += ws.amplitude*
CEXP(-I*espo);
238 #ifdef _ACOUSTO_DEBUG 242 f = fopen(fname,
"w");
243 for(i=0;i<locRows;i++){
245 fprintf(f,
" %d %f %f %f %f %f %f %f \n",icntr,
257 f = fopen(fname,
"w");
258 for(i=0;i<locMRows;i++){
260 fprintf(f,
" %d %f %f \n",imics,
struct run_info * runinfo
Definition: globals.h:34
int ncntr
Definition: structs.h:299
DOUBLE vsound
Definition: structs.h:102
COMPLEX amplitude
Definition: structs.h:537
struct acoustic_point * planw
Definition: structs.h:575
#define CREAL(x)
Definition: functions.h:49
void vec_scale(struct vector *v1, DOUBLE d)
Definition: math.c:170
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
int ndipoles
Definition: structs.h:503
vector struct to hold triplets.
Definition: structs.h:29
int nsourc
Definition: structs.h:448
Definition: structs.h:540
#define CIMAG(x)
Definition: functions.h:50
DOUBLE vec_mod(struct vector v1)
Definition: math.c:121
DOUBLE d
Definition: structs.h:547
int mics_block_size
Definition: structs.h:124
struct dipole * dipoles
Definition: structs.h:563
#define LOG_DIPOLE(ctx, i, v)
Definition: print.h:71
int nelmb
Definition: structs.h:295
#define CEXP(x)
Definition: functions.h:48
Vec vecPhinc
Definition: structs.h:578
int knw
Definition: structs.h:446
struct acoustic_point * sources
Definition: structs.h:561
struct solution_struct * solution
Definition: globals.h:52
#define COMPLEX
Definition: types.h:48
Vec vecPhincm
Definition: structs.h:582
struct modsol_info * modsolinfo
Definition: globals.h:44
int nmics
Definition: structs.h:304
void vec_diff(struct vector *vdest, const struct vector v1, const struct vector v2)
Definition: math.c:52
DOUBLE vec_dot(struct vector v1, struct vector v2)
Definition: math.c:34
#define LOG_DEBUG
Definition: logger.h:27
struct vector dir
Definition: structs.h:542
int mycol
Definition: structs.h:117
struct vector pos
Definition: structs.h:535
double DOUBLE
Definition: types.h:44
int numroc_(int *m, int *mb, int *p, int *ia, int *npr)
#define CREATE_VEC(v, lsize)
Definition: allocation.h:90
COMPLEX amplitude
Definition: structs.h:544
struct vector pos
Definition: structs.h:541
int nplanw
Definition: structs.h:454
Defines an acoustic point as its position and its amplitude.
Definition: structs.h:533
Geometry info structure.
Definition: structs.h:161
#define MAX_PATH
Definition: constants.h:29
int row_block_size
Definition: structs.h:119
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
void delaysc2(struct vector xcn, struct vector xs, DOUBLE *rad, DOUBLE *theta)
Definition: nrwash.c:39