AcouSTO  version 2.0

◆ print_premic_on_master()

void print_premic_on_master ( COMPLEX  cfreq)
605 {
606  FILE *f;
607  char fname[MAX_PATH];
608 
609  int imics;
610  COMPLEX phiscmval,phincmval;
611 
612  Vec gPhiscm = NULL;
613  Vec gPhincm = NULL;
614 
615  int locRows;
616  int gRows;
617  int mm,nn;
618  int descl[9];
619  int descg[9];
620  int izero=0;
621  int ione=1;
622  int info;
623  COMPLEX rho_s;
624 
625  rho_s = cfreq*modsolinfo->rho;
626  if (0 == rank) {
627  gPhiscm = calloc(modgeominfo->nmics,sizeof(COMPLEX));
628  gPhincm = calloc(modgeominfo->nmics,sizeof(COMPLEX));
629  }
630 
631  gRows = modgeominfo->nmics;
632  locRows = numroc_(&gRows ,&runinfo->mics_block_size,&runinfo->myrow,&izero,&runinfo->nprows);
633 
634  // Gathering vectors on node 0
635  mm = gRows;// * runinfo->nprows;
636  nn = runinfo->npcols;
637  descinit_(descl, &gRows,&ione, &runinfo->mics_block_size ,&ione, &izero, &izero, &runinfo->ctxt, &gRows, &info);
638  descinit_(descg, &mm ,&ione, &gRows ,&ione, &izero, &izero, &runinfo->ctxt, &gRows, &info);
639 
640  pzgemr2d_(&gRows,&ione,solution->vecPhium ,&ione, &ione,descl, gPhiscm ,&ione,&ione,descg,&runinfo->ctxt);
641  pzgemr2d_(&gRows,&ione,solution->vecPhincm ,&ione, &ione,descl, gPhincm ,&ione,&ione,descg,&runinfo->ctxt);
642 
643  /* Printing pressures */
644  if(0== rank){
645 
646  // defining output file name
647  get_filename(fname,"%s-mics-%.4fHz.out",rundetails->title,(double)HZFREQ(cfreq));
648  f = fopen(fname,"w");
649 
650  fprintf(f, "# Run name = %s\n",rundetails->title);
651  fprintf(f, "# Run owner = %s\n",rundetails->owner);
652  fprintf(f, "# Cfg file = %s\n",rundetails->cfg_filename);
653  fprintf(f, "# Frequency = %f + i*%f (%8.4f Hz)\n",(double)CREAL(cfreq),(double)CIMAG(cfreq), (double)HZFREQ(cfreq));
654  fprintf(f, "#\n");
655  fprintf(f, "# 1 2 3 4 5 6 7 8 9 10 11 12 13 \n");
656  fprintf(f, "# imic xm ym zm re(inc) im(inc) abs(inc) re(scat) im(scat) abs(scat) re(tot) im(tot) abs(tot)\n");
657  for(imics=0;imics<modgeominfo->nmics;imics++){
658  phiscmval = gPhiscm[imics];
659  phincmval = gPhincm[imics];
660 
661  fprintf(f,f1I12F,
662  /*1*/imics, // MIC NODES INFO
663  /*2*/geometry->mics[imics].x,
664  /*3*/geometry->mics[imics].y,
665  /*4*/geometry->mics[imics].z,
666 
667 
668  /*5*/CREAL(phincmval), // INCIDENT
669  /*6*/CIMAG(phincmval),
670  /*7*/CABS(phincmval) ,
671 
672  /*8*/CREAL( phiscmval ), // SCATTERING
673  /*9*/CIMAG( phiscmval ),
674  /*10*/CABS( phiscmval ),
675 
676  /*11*/CREAL(phincmval + phiscmval), // TOTAL
677  /*12*/CIMAG(phincmval + phiscmval),
678  /*13*/CABS (phincmval + phiscmval)
679 
680  );
681  }
682  fclose(f);
683 
684  VecDestroy(gPhincm);
685  VecDestroy(gPhiscm);
686  }
687 }
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
const char * title
Definition: structs.h:135
#define CREAL(x)
Definition: functions.h:49
const char * owner
Definition: structs.h:133
char * cfg_filename
Definition: structs.h:137
int myrow
Definition: structs.h:115
int nprows
Definition: structs.h:111
void get_filename(char *filename, const char *format,...)
Definition: utils.c:59
#define CIMAG(x)
Definition: functions.h:50
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...
int ctxt
Definition: structs.h:109
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
#define CABS(x)
Definition: functions.h:51
struct modsol_info * modsolinfo
Definition: globals.h:44
int nmics
Definition: structs.h:304
#define HZFREQ(x)
Definition: functions.h:28
Vec vecPhium
Definition: structs.h:586
int numroc_(int *m, int *mb, int *p, int *ia, int *npr)
int rank
Definition: globals.h:79
struct run_details * rundetails
Definition: globals.h:36
#define f1I12F
Definition: formats.h:80
Geometry info structure.
Definition: structs.h:161
#define MAX_PATH
Definition: constants.h:29
#define calloc(n, size)
Definition: allocation.h:37
struct modgeom_info * modgeominfo
Definition: globals.h:38