10 #define GAMMIESTARTI (0)
11 #define GAMMIEENDI (0)
14 #define JONENDI (NPRDUMP-1)
29 #define MINVECTOR (SMALL)
40 int image_dump(
long dump_cnt)
42 int startpl,endpl,starts,ends,startl,endl,startv,endv;
43 int whichpl,limits,scale,vartype;
116 for(vartype=startv;vartype<=endv;vartype++){
117 for(limits=startl;limits<=endl;limits++){
118 for(scale=starts;scale<=ends;scale++){
119 for (whichpl = startpl; whichpl <= endpl; whichpl++) {
124 if(image(dump_cnt,whichpl,scale,limits,vartype)>=1)
return(1);
135 int imagedefs(
int whichpl,
int scale,
int limits,
int vartype)
137 int i = 0,
j = 0, k = 0, l = 0, col = 0, floor;
143 FTYPE minptr[NPR], maxptr[NPR], sumptr[NPR];
152 struct of_geom *ptrgeom=&geomdontuse;
156 if(omp_in_parallel()){
157 dualfprintf(
fail_file,
"imagedefs() called in parallel region\n");
176 if(whichpl==
RHO || whichpl==
UU || pl==PRAD0 ||
SCALARPL(pl)){
177 bl_coord_ijk_2(i,
j,k,
CENT,X,V);
180 if(whichpl==0) GLOBALMACP0A1(pimage,i,
j,k,whichpl)=GLOBALMACP0A1(pdump,i,
j,k,whichpl)/(
RHOMIN*pow(r,-1.5));
181 if(whichpl==1) GLOBALMACP0A1(pimage,i,
j,k,whichpl)=GLOBALMACP0A1(pdump,i,
j,k,whichpl)/(
UUMIN*pow(r,-2.5));
184 if(scale==
LINEAR) GLOBALMACP0A1(pimage,i,
j,k,whichpl)=GLOBALMACP0A1(pdump,i,
j,k,whichpl);
185 else if(scale==
LOG) GLOBALMACP0A1(pimage,i,
j,k,whichpl)=fabs(GLOBALMACP0A1(pdump,i,
j,k,whichpl))+
MINVECTOR;
198 PALLLOOP(pl) U[pl]=GLOBALMACP0A1(udump,i,
j,k,pl);
200 if(scale==
LINEAR) GLOBALMACP0A1(pimage,i,j,k,whichpl)=U[whichpl];
201 else if(scale==
LOG) GLOBALMACP0A1(pimage,i,j,k,whichpl)=fabs(U[whichpl]/ptrgeom->
gdet)+
MINVECTOR;
206 if(scale==
LINEAR) GLOBALMACP0A1(pimage,i,j,k,whichpl)=(
FTYPE)
GLOBALMACP0A3(failfloorcount,i,j,k,0,
IMAGETS,floor);
207 else if(scale==
LOG) GLOBALMACP0A1(pimage,i,j,k,whichpl)=fabs((
FTYPE)
GLOBALMACP0A3(failfloorcount,i,j,k,0,
IMAGETS,floor)+1);
215 if(whichpl==
RHO || whichpl==
UU || pl==PRAD0 ||
SCALARPL(pl)) GLOBALMACP0A1(pimage,i,j,k,whichpl)=GLOBALMACP0A1(pdump,i,j,k,whichpl);
217 if(scale==
LINEAR) GLOBALMACP0A1(pimage,i,j,k,whichpl)=GLOBALMACP0A1(pdump,i,j,k,whichpl);
218 else if(scale==
LOG) GLOBALMACP0A1(pimage,i,j,k,whichpl)=fabs(GLOBALMACP0A1(pdump,i,j,k,whichpl))+
MINVECTOR;
231 PALLLOOP(pl) U[pl]=GLOBALMACP0A1(udump,i,j,k,pl);
233 if(scale==
LINEAR) GLOBALMACP0A1(pimage,i,j,k,whichpl)=U[whichpl];
234 else if(scale==
LOG) GLOBALMACP0A1(pimage,i,j,k,whichpl)=fabs(U[whichpl]/ptrgeom->
gdet)+MINVECTOR;
239 if(scale==
LINEAR) GLOBALMACP0A1(pimage,i,j,k,whichpl)=(
FTYPE)
GLOBALMACP0A3(failfloorcount,i,j,k,0,
IMAGETS,floor);
240 else if(scale==
LOG) GLOBALMACP0A1(pimage,i,j,k,whichpl)=fabs((
FTYPE)
GLOBALMACP0A3(failfloorcount,i,j,k,0,
IMAGETS,floor)+1);
244 #if(DO_VORTICITY_IMAGE)
248 compute_vorticity(pglobal,pimage,4);
272 #define ZOOMFACTOR (10000)
274 prminmaxsum(
GLOBALPOINT(pimage),whichpl,1,maxptr,minptr,sumptr);
280 #if( DO_VORTICITY_IMAGE && (TESTNUMBER == 26 || TESTNUMBER == 27) )
281 if( vartype==2 && whichpl==4 && limits == 0 && scale ==
LINEAR ) {
284 if( debugfail >= 1) trifprintf(
"Vorticity: old: min = %lg, max = %lg", min, max );
287 if( debugfail >= 1) trifprintf(
", new: min = %lg, max = %lg\n", min, max );
293 if(whichpl==
RHO || whichpl==
UU || pl==PRAD0 ||
SCALARPL(pl)){
309 logsfprintf(
"whichpl: %d scale: %d limits: %d : min,max,avg: %21.15g %21.15g %21.15g\n",whichpl,scale,limits,min,max,sum/
totalzones);
314 }
else if(scale==
LINEAR) {
319 dualfprintf(
fail_file,
"no such scale=%d\n",scale);
324 aa = 256. / (lmax - lmin);
342 int image(
long dump_cnt,
int whichpl,
int scale,
int limits,
int vartype)
344 MPI_Datatype datatype;
352 if(omp_in_parallel()){
353 dualfprintf(
fail_file,
"image() called in parallel region\n");
359 trifprintf(
"begin dumping image# %ld whichpl: %d scale: %d limits: %d vartype: %d\n ",dump_cnt,whichpl,scale,limits,vartype);
370 datatype=MPI_UNSIGNED_CHAR;
374 sprintf(fileprefix,
"images/im");
377 if(vartype==0) sprintf(fileprefix,
"images/im%1dp%1ds%1dl", whichpl, scale, limits);
378 else if(vartype==1) sprintf(fileprefix,
"images/im%1dc%1ds%1dl", whichpl, scale, limits);
379 else if(vartype==2) sprintf(fileprefix,
"images/im%1df%1ds%1dl", whichpl, scale, limits);
381 strcpy(fileformat,
"%04ld");
382 strcpy(filesuffix,
".r8");
385 if(imagedefs(whichpl,scale,limits,vartype)>=1)
return(1);
389 if(dump_gen(
WRITEFILE,dump_cnt,
MIXEDOUTPUT,whichdump,datatype,fileprefix,fileformat,filesuffix,image_header,image_content)>=1)
return(1);
391 trifprintf(
"end dumping image# %ld whichpl: %d scale: %d limits: %d vartype: %d\n ",dump_cnt,whichpl,scale,limits,vartype);
398 int image_header(
int whichdump,
int whichdumpversion,
int numcolumns,
int bintxt, FILE *headerptr)
400 int realtotalsize[
NDIM];
418 fprintf(headerptr,
"\n");
420 if( (realtotalsize[1]>1)&&(realtotalsize[2]>1)&&(realtotalsize[3]>1)){
421 fprintf(headerptr,
"%i %i\n255\n", realtotalsize[1],realtotalsize[2]*realtotalsize[3]);
424 if( (realtotalsize[2]>1)&&(realtotalsize[3]>1)){
425 fprintf(headerptr,
"%i %i\n255\n", realtotalsize[2],realtotalsize[3]);
427 else if( (realtotalsize[1]>1)&&(realtotalsize[3]>1)){
428 fprintf(headerptr,
"%i %i\n255\n", realtotalsize[1],realtotalsize[3]);
430 else if( (realtotalsize[1]>1)&&(realtotalsize[2]>1)){
431 fprintf(headerptr,
"%i %i\n255\n", realtotalsize[1],realtotalsize[2]);
434 if(realtotalsize[1]>1){
435 fprintf(headerptr,
"%i %i\n255\n", realtotalsize[1],1);
437 else if(realtotalsize[2]>1){
438 fprintf(headerptr,
"%i %i\n255\n", realtotalsize[2],1);
440 else if(realtotalsize[3]>1){
441 fprintf(headerptr,
"%i %i\n255\n", realtotalsize[3],1);
444 dualfprintf(
fail_file,
"Shouldn't reach here: %d %d %d\n",realtotalsize[1],realtotalsize[2],realtotalsize[3]);
451 dualfprintf(
fail_file,
"Shouldn't be trying to write binary header to image file\n");
464 extern void set_image_content_dnumcolumns_dnumversion(
int *numcolumns,
int *numversion)
477 int image_content(
int i,
int j,
int k, MPI_Datatype datatype,
void *writebuf)
491 liq = aa * (iq - lmin);
497 liqb=(
unsigned char)(liq);
499 myset(datatype,&liqb,0,1,writebuf);