13 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
26 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
39 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
53 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
66 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
79 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
93 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
106 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
119 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
133 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
147 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
161 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
174 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
187 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
203 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
243 debugfixupaltdeath_bc(prim);
295 int inboundloop[
NDIM];
296 int outboundloop[
NDIM];
297 int innormalloop[
NDIM];
298 int outnormalloop[
NDIM];
317 set_boundloop(boundvartype, inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi, &riin, &riout, &rjin, &rjout, &rkin, &rkout, dosetbc);
334 bound_raddot(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
341 if((dosetbc[
X1DN] || dosetbc[
X1UP]) && (donebc[
X1DN]==0 && donebc[X1UP]==0)){
343 bound_x1_periodic(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
349 if(dosetbc[dir] && donebc[dir]==0){
351 bound_x1dn_outflow(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
356 bound_x1dn_outflow(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
358 bound_staticset(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
362 bound_x1dn_outflow_simple(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
366 bound_x1dn_sym(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
370 bound_x1dn_analytic(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim);
374 bound_x1dn_radbeamflatinflow(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
378 bound_radshadowinflow(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
382 bound_radatmbeaminflow(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
386 bound_radwallinflow(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
390 bound_x1dn_cylaxis(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
394 bound_radcylbeamcart(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
398 dualfprintf(
fail_file,
"No x1dn boundary condition specified: %d\n",
BCtype[dir]);
405 if(dosetbc[dir] && donebc[dir]==0){
407 bound_x1up_outflow_simple(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
411 bound_x1up_outflow(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
416 bound_x1up_outflow(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
418 bound_staticset(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
422 bound_radbeam2dflowinflow(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
426 bound_radatmbeaminflow(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
430 bound_x1up_analytic(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim);
434 bound_radbondiinflow(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
438 bound_radnt(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
442 bound_x1up_radcylbeam(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
446 bound_radcylbeamcart(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
450 bound_waldmono(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
454 bound_x1up_radcyljet(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
458 dualfprintf(
fail_file,
"No x1up boundary condition specified: %d\n",
BCtype[dir]);
465 else if(whichdir==2){
468 if((dosetbc[
X2DN] || dosetbc[
X2UP]) && (donebc[
X2DN]==0 && donebc[X2UP]==0)){
470 bound_x2_periodic(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
477 if(dosetbc[dir] && donebc[dir]==0){
479 bound_x2dn_outflow_simple(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
484 bound_x2dn_polaraxis_full3d(whichcall,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
488 bound_x2dn_polaraxis(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
492 bound_x2dn_analytic(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim);
496 bound_radcylbeamcart(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
500 bound_x2dn_radcyljet(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
504 dualfprintf(
fail_file,
"No x2dn boundary condition specified: %d\n",
BCtype[dir]);
511 if(dosetbc[dir] && donebc[dir]==0){
513 bound_x2up_outflow_simple(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
518 bound_x2up_polaraxis_full3d(whichcall,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
522 bound_x2up_polaraxis(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
526 bound_x2up_analytic(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim);
530 bound_radshadowinflow(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
534 bound_radwallinflow(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
540 bound_x2up_polaraxis(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
543 bound_radnt(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
547 bound_radbeam2dksvertbeaminflow(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
551 bound_radcylbeamcart(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
557 bound_x2up_polaraxis(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
560 bound_waldmono(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
564 dualfprintf(
fail_file,
"No x2dn boundary condition specified: %d\n",
BCtype[dir]);
573 else if(whichdir==3){
577 if((dosetbc[
X3DN] || dosetbc[
X3UP]) && (donebc[
X3DN]==0 && donebc[X3UP]==0)){
579 bound_x3_periodic(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
586 if(dosetbc[dir] && donebc[dir]==0){
588 bound_x3dn_outflow_simple(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
592 bound_x3dn_analytic(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim);
596 bound_radbeam2dbeaminflow(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
600 bound_radcylbeamcart(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
604 dualfprintf(
fail_file,
"No x3dn boundary condition specified: %d\n",
BCtype[dir]);
611 if(dosetbc[dir] && donebc[dir]==0){
613 bound_x3up_outflow_simple(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
617 bound_x3up_analytic(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim);
621 bound_radcylbeamcart(dir,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
625 dualfprintf(
fail_file,
"No x3up boundary condition specified: %d\n",
BCtype[dir]);
636 dualfprintf(
fail_file,
"No such whichdir=%d\n",whichdir);
654 int apply_bc_line(
int nprlocalstart,
int nprlocalend,
int*nprlocallist,
int doinverse,
int iterdir,
int recontype,
int bs,
int be,
FTYPE (*yin)[2][
NBIGM],
FTYPE (*yout)[2][NBIGM],
FTYPE (*youtpolycoef)[
MAXSPACEORDER][NBIGM])
656 int flip_y(
int nprlocalstart,
int nprlocalend,
int*nprlocallist,
int iterdir,
int recontype,
int bs,
int be,
FTYPE (*y)[2][NBIGM]);
659 flip_y(nprlocalstart,nprlocalend,nprlocallist,iterdir, recontype, bs, be, yin);
662 flip_y(nprlocalstart,nprlocalend,nprlocallist,iterdir, recontype, bs, be, yin);
663 flip_y(nprlocalstart,nprlocalend,nprlocallist,iterdir, recontype, bs, be, yout);
671 #include "reconstructeno.h"
673 int flip_y(
int nprlocalstart,
int nprlocalend,
int*nprlocallist,
int iterdir,
int recontype,
int bs,
int be,
FTYPE (*y)[2][NBIGM])
678 #if( WENO_DIR_FLIP_CONS_SIGN_DN ) //flip the sign of the consrved quantities at the cylindrical axis so that they do not have a kink due to multiplication by gdet = |R|
679 if( iterdir == WENO_DIR_FLIP_CONS_SIGN_DN && (recontype ==
CVT_C2A || recontype ==
CVT_A2C) &&
mycpupos[iterdir] == 0 ) {
681 for( myi = bs; myi < 0; myi++ ) {
682 y[pl][0][myi] = - y[pl][0][myi];
687 #if( WENO_DIR_FLIP_CONS_SIGN_UP ) //flip the sign of the consrved quantities at the cylindrical axis so that they do not have a kink due to multiplication by gdet = |R|
690 for( myi =
N1*(iterdir==1) +
N2*(iterdir==2) +
N3*(iterdir==3); myi <= be; myi++ ) {
691 y[pl][0][myi] = - y[pl][0][myi];
701 void remapdq(
int dir,
int idel,
int jdel,
int kdel,
int i,
int j,
int k,
FTYPE (*p2interp)[
NSTORE2][
NSTORE3][NPR2INTERP],
707 void remapplpr(
int dir,
int idel,
int jdel,
int kdel,
int i,
int j,
int k,
717 int bound_prim_user_after_mpi_dir(
int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR])
722 int inboundloop[
NDIM];
723 int outboundloop[
NDIM];
724 int innormalloop[
NDIM];
725 int outnormalloop[
NDIM];
741 set_boundloop(boundvartype, inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi, &riin, &riout, &rjin, &rjout, &rkin, &rkout, dosetbc);
774 bound_x2dn_polaraxis_full3d(2,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
782 bound_x2up_polaraxis_full3d(2,boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
791 if(whichdir==1 &&
N2==1 &&
N3==1 ||
N3==1 && whichdir==2 ||
N3>1 && whichdir==3){
792 bound_checks1(boundstage,finalstep,boundtime,whichdir,boundvartype,dirprim,ispstag,prim,inboundloop,outboundloop,innormalloop,outnormalloop,inoutlohi,riin,riout,rjin,rjout,rkin,rkout,dosetbc,enerregion,localenerpos);
823 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
829 int riin,
int riout,
int rjin,
int rjout,
int rkin,
int rkout,
838 #pragma omp parallel // assume don't require EOS
849 struct of_geom geomdontuse[NPR];
851 struct of_geom rgeomdontuse[NPR];
856 ptrgeom[pl]=&(geomdontuse[pl]);
857 ptrrgeom[pl]=&(rgeomdontuse[pl]);
868 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
897 bl_coord_ijk_2(i,j,k,CENT,X, V);
908 FTYPE ERADINJ=100.0*ERADAMB;
920 FTYPE pradffortho[NPR];
921 FTYPE Fx=0,Fy=0,Fz=0;
923 if(V[2]>.4 && V[2]<.6){
924 Fx=RADBEAMFLAT_FRATIO*ERADINJ;
927 pradffortho[PRAD0] = ERADINJ;
928 pradffortho[PRAD1] = Fx;
929 pradffortho[PRAD2] = Fy;
930 pradffortho[PRAD3] = Fz;
934 pradffortho[PRAD0] = ERADAMB;
935 pradffortho[PRAD1] = Fx;
936 pradffortho[PRAD2] = Fy;
937 pradffortho[PRAD3] = Fz;
941 int whichcoordfluid=
MCOORD;
942 int whichcoordrad=whichcoordfluid;
953 FTYPE uradx=1.0/sqrt(1.0 - RADBEAMFLAT_FRATIO*RADBEAMFLAT_FRATIO);
956 if(V[2]>.4 && V[2]<.6){
972 primefluid_EVrad_to_primeall(&whichvel, &whichcoord, ptrgeom[
RHO],
MAC(prim,i,j,k),
MAC(prim,i,j,k));
983 if(V[2]>.4 && V[2]<.6){
991 FTYPE uradx=1.0/sqrt(1.0 - RADBEAMFLAT_FRATIO*RADBEAMFLAT_FRATIO);
995 pr[URAD1] = uradx/dxdxp[1][1];
1000 pr[URAD0] = ERADAMB;
1027 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
1033 int riin,
int riout,
int rjin,
int rjout,
int rkin,
int rkout,
1042 dualfprintf(
fail_file,
"Shouldn't be in bound_radshadowinflow() with dir=%d -- should be using ASYMM for RADDBLSHADOW\n");
1060 FTYPE NLEFT,angle,TLEFT,BEAMY;
1076 #pragma omp parallel // assume don't require EOS
1083 int i,
j,k,pl,pliter;
1089 FTYPE prescale[NPR];
1091 struct of_geom geomdontuse[NPR];
1093 struct of_geom rgeomdontuse[NPR];
1094 struct of_geom *ptrrgeom[NPR];
1098 ptrgeom[pl]=&(geomdontuse[pl]);
1099 ptrrgeom[pl]=&(rgeomdontuse[pl]);
1112 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
1137 bl_coord_ijk_2(i,j,k,CENT,X, V);
1144 rsq=xx*xx+yy*yy+zz*zz;
1145 rho=(RHOBLOB-RHOAMB)*exp(-sqrt(rsq)/(BLOBW*BLOBW))+RHOAMB;
1147 Trad=TAMB*RHOAMB/rho;
1163 FTYPE Fx=NLEFT*ERAD/sqrt(1+angle*angle);
1164 FTYPE Fy=-NLEFT*ERAD*angle/sqrt(1+angle*angle);
1168 FTYPE pradffortho[NPR];
1169 pradffortho[PRAD0] = ERAD;
1170 pradffortho[PRAD1] = Fx;
1171 pradffortho[PRAD2] = Fy;
1172 pradffortho[PRAD3] = Fz;
1176 int whichcoordfluid=
MCOORD;
1177 int whichcoordrad=whichcoordfluid;
1182 FTYPE gammax=1.0/sqrt(1.0-NLEFT*NLEFT);
1183 FTYPE uradx=NLEFT*gammax/sqrt(1.0+angle*angle);
1184 FTYPE urady=-NLEFT*gammax*angle/sqrt(1.0+angle*angle);
1196 primefluid_EVrad_to_primeall(&whichvel, &whichcoord, ptrgeom[
RHO],
MAC(prim,i,j,k),
MAC(prim,i,j,k));
1222 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
1247 bl_coord_ijk_2(i,j,k,CENT,X, V);
1256 rsq=xx*xx+yy*yy+zz*zz;
1257 rho=(RHOBLOB-RHOAMB)*exp(-sqrt(rsq)/(BLOBW*BLOBW))+RHOAMB;
1259 Trad=TAMB*RHOAMB/rho;
1275 FTYPE Fx=NLEFT*ERAD/sqrt(1+angle*angle);
1276 FTYPE Fy=-NLEFT*ERAD*angle/sqrt(1+angle*angle);
1280 FTYPE pradffortho[NPR];
1281 pradffortho[PRAD0] = ERAD;
1282 pradffortho[PRAD1] = Fx;
1283 pradffortho[PRAD2] = Fy;
1284 pradffortho[PRAD3] = Fz;
1288 int whichcoordfluid=
MCOORD;
1289 int whichcoordrad=whichcoordfluid;
1294 FTYPE gammax=1.0/sqrt(1.0-NLEFT*NLEFT);
1295 FTYPE uradx=NLEFT*gammax/sqrt(1.0+angle*angle);
1296 FTYPE urady=-NLEFT*gammax*angle/sqrt(1.0+angle*angle);
1308 primefluid_EVrad_to_primeall(&whichvel, &whichcoord, ptrgeom[
RHO],
MAC(prim,i,j,k),
MAC(prim,i,j,k));
1339 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
1345 int riin,
int riout,
int rjin,
int rjout,
int rkin,
int rkout,
1354 #pragma omp parallel // assume don't require EOS
1357 int i,
j,k,pl,pliter;
1361 struct of_geom geomdontuse[NPR];
1363 struct of_geom rgeomdontuse[NPR];
1364 struct of_geom *ptrrgeom[NPR];
1368 ptrgeom[pl]=&(geomdontuse[pl]);
1369 ptrrgeom[pl]=&(rgeomdontuse[pl]);
1397 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
1420 PBOUNDLOOP(pliter,pl)
if(pl==URAD3)
if(pr[URAD3]>0.0) pr[URAD3]=0.0;
1428 if(1 &&
startpos[1]+i>=0 && ispstag==0){
1438 struct of_geom geomrealdontuse;
1439 struct of_geom *ptrgeomreal=&geomrealdontuse;
1440 gset(getprim,whichcoord,i,j,k,ptrgeomreal);
1444 bl_coord_ijk_2(i,j,k,CENT,X, V);
1449 if(RADBEAM2D_FLATBACKGROUND){
1456 if(0) ERADAMB=pr[URAD0];
1462 FTYPE mD=RADBEAM2D_PAR_D/(r*r*sqrt(2./r*(1.-2./r)));
1464 Vr=sqrt(2./r)*(1.-2./r);
1467 FTYPE W=1./sqrt(1.-Vr*Vr*ptrgeomreal->gcov[
GIND(1,1)]);
1468 rho=RADBEAM2D_PAR_D/(r*r*sqrt(2./r));
1475 if(0) ERADAMB=pr[URAD0];
1487 FTYPE beamshape=exp(-pow(V[1]-beamcenter,powbeam)/(2.0*pow(beamhalfwidth,powbeam)))*
RADBEAM2D_IFBEAM;
1490 #define INJECTINFLUIDFRAME 0 // need beam to go out as designed, not with fluid, so usually 0
1498 Fz=RADBEAM2D_NLEFT*ERADINJ;
1500 FTYPE pradffortho[NPR];
1501 pradffortho[PRAD0] = ERADAMB + ERADINJ*beamshape;
1502 pradffortho[PRAD1] = Fx*beamshape;
1503 pradffortho[PRAD2] = Fy*beamshape;
1504 pradffortho[PRAD3] = Fz*beamshape;
1508 int whichcoordrad=
MCOORD;
1517 pr[PRAD0]=pr0[PRAD0];
1518 pr[PRAD1]=pr0[PRAD1];
1519 pr[PRAD2]=pr0[PRAD2];
1520 pr[PRAD3]=pr0[PRAD3];
1521 if(pr[PRAD3]>0.0) pr[PRAD3]=0.0;
1533 ucon_calc(&pr[URAD1-
U1],ptrgeom[URAD1],uradcon,othersrad);
1535 FTYPE uradx,urady,uradz;
1538 uradx=uradcon[1]*sqrt(fabs(ptrgeom[URAD1]->
gcov[
GIND(1,1)]))/sqrt(fabs(ptrgeomreal->gcov[
GIND(1,1)]));
1539 urady=uradcon[2]*sqrt(fabs(ptrgeom[URAD2]->
gcov[
GIND(2,2)]))/sqrt(fabs(ptrgeomreal->gcov[
GIND(2,2)]));
1540 uradz=uradcon[3]*sqrt(fabs(ptrgeom[URAD3]->
gcov[
GIND(3,3)]))/sqrt(fabs(ptrgeomreal->gcov[
GIND(3,3)]));
1541 if(uradz>0.0) uradz=0.0;
1544 if(V[1]>RADBEAM2D_BEAML && V[1]<RADBEAM2D_BEAMR && RADBEAM2D_IFBEAM) uradz=1.0/sqrt(1.0 - RADBEAM2D_NLEFT*RADBEAM2D_NLEFT);
1547 PBOUNDLOOP(pliter,pl)
if(pl==URAD0) pr[URAD0] = ERADINJ;
1548 PBOUNDLOOP(pliter,pl)
if(pl==URAD1) pr[URAD1] = uradx;
1549 PBOUNDLOOP(pliter,pl)
if(pl==URAD2) pr[URAD2] = urady;
1550 PBOUNDLOOP(pliter,pl)
if(pl==URAD3) pr[URAD3] = uradz;
1553 primefluid_EVrad_to_primeall(&whichvel, &whichcoord, ptrgeom[
RHO],
MAC(prim,i,j,k),
MAC(prim,i,j,k));
1574 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
1580 int riin,
int riout,
int rjin,
int rjout,
int rkin,
int rkout,
1589 #pragma omp parallel // assume don't require EOS
1592 int i,
j,k,pl,pliter;
1598 FTYPE prescale[NPR];
1600 struct of_geom geomdontuse[NPR];
1602 struct of_geom rgeomdontuse[NPR];
1603 struct of_geom *ptrrgeom[NPR];
1607 ptrgeom[pl]=&(geomdontuse[pl]);
1608 ptrrgeom[pl]=&(rgeomdontuse[pl]);
1633 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
1661 bl_coord_ijk_2(i,j,k,CENT,X, V);
1669 if(RADBEAM2D_FLATBACKGROUND){
1678 FTYPE mD=RADBEAM2D_PAR_D/(r*r*sqrt(2./r*(1.-2./r)));
1680 Vr=sqrt(2./r)*(1.-2./r);
1684 struct of_geom geomrealdontuse;
1685 struct of_geom *ptrgeomreal=&geomrealdontuse;
1686 gset(getprim,whichcoord,i,j,k,ptrgeomreal);
1688 FTYPE W=1./sqrt(1.-Vr*Vr*ptrgeomreal->gcov[
GIND(1,1)]);
1689 rho=RADBEAM2D_PAR_D/(r*r*sqrt(2./r));
1713 FTYPE pradffortho[NPR];
1714 pradffortho[PRAD0] = ERAD;
1715 pradffortho[PRAD1] = Fx;
1716 pradffortho[PRAD2] = Fy;
1717 pradffortho[PRAD3] = Fz;
1727 FTYPE uradx,urady,uradz;
1728 uradx=urady=uradz=0.0;
1739 FAILSTATEMENT(
"bounds.koral.c:bound_radbeam2dflowinflow()",
"bl2ks2ksp2v()", 1);
1761 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
1767 int riin,
int riout,
int rjin,
int rjout,
int rkin,
int rkout,
1779 #pragma omp parallel // assume don't require EOS
1782 int i,
j,k,pl,pliter;
1788 FTYPE prescale[NPR];
1790 struct of_geom geomdontuse[NPR];
1792 struct of_geom rgeomdontuse[NPR];
1793 struct of_geom *ptrrgeom[NPR];
1797 ptrgeom[pl]=&(geomdontuse[pl]);
1798 ptrrgeom[pl]=&(rgeomdontuse[pl]);
1812 FTYPE kappaesperrho=calc_kappaes_user(1,0, 0,0,0);
1813 FTYPE FLUXLEFT=RADATM_FRATIO/kappaesperrho/pow(MINX,2.0);
1816 FTYPE f = (
FTYPE)kappaesperrho*FLUXLEFT*MINX*MINX;
1829 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
1855 bl_coord_ijk_2(i,j,k,CENT,X, V);
1858 coord(i, j, k, CENT, X);
1873 FTYPE Fx=FLUXLEFT*(MINX/xx)*(MINX/xx);
1876 if(RADATM_THINRADATM){
1893 FTYPE pradffortho[NPR];
1894 pradffortho[PRAD0] = ERAD;
1895 pradffortho[PRAD1] = Fx;
1896 pradffortho[PRAD2] = Fy;
1897 pradffortho[PRAD3] = Fz;
1901 int whichcoordfluid=
MCOORD;
1902 int whichcoordrad=whichcoordfluid;
1922 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
1949 bl_coord_ijk_2(i,j,k,CENT,X, V);
1953 coord(i, j, k, CENT, X);
1969 FTYPE Fx=FLUXLEFT*(MINX/xx)*(MINX/xx);
1972 if(RADATM_THINRADATM){
1987 FTYPE pradffortho[NPR];
1988 pradffortho[PRAD0] = ERAD;
1989 pradffortho[PRAD1] = Fx;
1990 pradffortho[PRAD2] = Fy;
1991 pradffortho[PRAD3] = Fz;
1995 int whichcoordfluid=
MCOORD;
1996 int whichcoordrad=whichcoordfluid;
2025 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
2031 int riin,
int riout,
int rjin,
int rjout,
int rkin,
int rkout,
2040 #pragma omp parallel // assume don't require EOS
2048 int i,
j,k,pl,pliter;
2054 FTYPE prescale[NPR];
2056 struct of_geom geomdontuse[NPR];
2058 struct of_geom rgeomdontuse[NPR];
2059 struct of_geom *ptrrgeom[NPR];
2063 ptrgeom[pl]=&(geomdontuse[pl]);
2064 ptrrgeom[pl]=&(rgeomdontuse[pl]);
2075 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
2103 bl_coord_ijk_2(i,j,k,CENT,X, V);
2117 if(pl==URAD0)
MACP0A1(prim,i,j,k,URAD0) = pow(100,4.0);
2118 if(pl==URAD1)
MACP0A1(prim,i,j,k,URAD1) = URFX;
2119 if(pl==URAD2)
MACP0A1(prim,i,j,k,URAD2) = URFY;
2120 if(pl==URAD3)
MACP0A1(prim,i,j,k,URAD3) = 0.;
2123 if(pl==URAD0)
MACP0A1(prim,i,j,k,URAD0) = 1.0;
2124 if(pl==URAD1)
MACP0A1(prim,i,j,k,URAD1) = 0.0;
2125 if(pl==URAD2)
MACP0A1(prim,i,j,k,URAD2) = 0.;
2126 if(pl==URAD3)
MACP0A1(prim,i,j,k,URAD3) = 0.;
2131 if(1)
primefluid_EVrad_to_primeall(&whichvel, &whichcoord, ptrgeom[
RHO],
MAC(prim,i,j,k),
MAC(prim,i,j,k));
2149 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
2177 bl_coord_ijk_2(i,j,k,CENT,X, V);
2190 if(pl==URAD0)
MACP0A1(prim,i,j,k,URAD0) = pow(100,4.0);
2191 if(pl==URAD1)
MACP0A1(prim,i,j,k,URAD1) = URFX;
2192 if(pl==URAD2)
MACP0A1(prim,i,j,k,URAD2) = URFY;
2193 if(pl==URAD3)
MACP0A1(prim,i,j,k,URAD3) = 0.;
2200 if(1)
primefluid_EVrad_to_primeall(&whichvel, &whichcoord, ptrgeom[
RHO],
MAC(prim,i,j,k),
MAC(prim,i,j,k));
2232 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
2238 int riin,
int riout,
int rjin,
int rjout,
int rkin,
int rkout,
2247 #pragma omp parallel // assume don't require EOS
2250 int i,
j,k,pl,pliter;
2256 FTYPE prescale[NPR];
2258 struct of_geom geomdontuse[NPR];
2260 struct of_geom rgeomdontuse[NPR];
2261 struct of_geom *ptrrgeom[NPR];
2265 ptrgeom[pl]=&(geomdontuse[pl]);
2266 ptrrgeom[pl]=&(rgeomdontuse[pl]);
2285 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
2316 bl_coord_ijk_2(i,j,k,CENT,X, V);
2326 int whichcoordfluid=
MCOORD;
2329 struct of_geom geomrealdontuse;
2330 struct of_geom *ptrgeomreal=&geomrealdontuse;
2331 gset(getprim,whichcoordfluid,i,j,k,ptrgeomreal);
2334 FTYPE rho,ERAD,uint;
2335 FTYPE rho0,Tgas0,
ur,Tgas,Trad,r,rcm,prad,pgas,vx,ut;
2343 rho0=-RADBONDI_MDOTPEREDD*RADBONDI_MDOTEDD/(4.*
Pi*r*r*
ur);
2349 ut=sqrt((-1.-ur*ur*ptrgeomreal->gcov[
GIND(1,1)])/ptrgeomreal->gcov[
GIND(0,0)]);
2351 rho=-RADBONDI_MDOTPEREDD*RADBONDI_MDOTEDD/(4.*
Pi*r*r*
ur);
2352 Tgas=Tgas0*pow(rho/rho0,
gam-1.);
2357 prad=RADBONDI_PRADGAS*pgas;
2368 FTYPE pradffortho[NPR];
2369 pradffortho[PRAD0] = ERAD;
2370 pradffortho[PRAD1] = Fx;
2371 pradffortho[PRAD2] = Fy;
2372 pradffortho[PRAD3] = Fz;
2376 int whichcoordrad=whichcoordfluid;
2399 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
2405 int riin,
int riout,
int rjin,
int rjout,
int rkin,
int rkout,
2414 #pragma omp parallel // assume don't require EOS
2430 int i,
j,k,pl,pliter;
2433 struct of_geom geomdontuse[NPR];
2435 struct of_geom rgeomdontuse[NPR];
2436 struct of_geom *ptrrgeom[NPR];
2440 ptrgeom[pl]=&(geomdontuse[pl]);
2441 ptrrgeom[pl]=&(rgeomdontuse[pl]);
2446 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize)) nowait // can nowait since each fluxvec[dir] is set separately
2460 bl_coord_ijk_2(i,j,k,CENT,X, V);
2472 FTYPE pradffortho[NPR];
2474 pradffortho[PRAD1] = 0;
2475 pradffortho[PRAD2] = 0;
2476 pradffortho[PRAD3] = 0;
2482 pradffortho[PRAD2]=RADDOT_FYDOT*pradffortho[PRAD0];
2486 int whichcoordfluid=
MCOORD;
2487 int whichcoordrad=whichcoordfluid;
2508 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
2514 int riin,
int riout,
int rjin,
int rjout,
int rkin,
int rkout,
2523 #pragma omp parallel // assume don't require EOS
2547 int i,
j,k,pl,pliter;
2553 FTYPE prescale[NPR];
2555 struct of_geom geomdontuse[NPR];
2557 struct of_geom rgeomdontuse[NPR];
2558 struct of_geom *ptrrgeom[NPR];
2562 ptrgeom[pl]=&(geomdontuse[pl]);
2563 ptrrgeom[pl]=&(rgeomdontuse[pl]);
2572 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
2601 coord(i, j, k, CENT, X);
2616 struct of_geom geomrealdontuse;
2617 struct of_geom *ptrgeomreal=&geomrealdontuse;
2618 gset(getprim,whichcoord,i,j,k,ptrgeomreal);
2630 if(uconlab[
RR]<=0.0){
2631 pr[
RHO]=RADNT_RHOATMMIN*pow(r/RADNT_ROUT,-1.5);
2632 pr[
UU]=RADNT_UINTATMMIN*pow(r/RADNT_ROUT,-2.5);
2633 set_zamo_velocity(whichvel,ptrgeomreal,pr);
2638 ucon2pr(whichvel,uconlab,ptrgeomreal,pr);
2645 FTYPE pradffortho[NPR];
2648 pradffortho[PRAD1] = 0;
2649 pradffortho[PRAD2] = 0;
2650 pradffortho[PRAD3] = 0;
2652 int whichcoordfluid;
2654 int whichcoordrad=whichcoordfluid;
2661 pr[PRAD0]=RADNT_ERADATMMIN*(rout/r)*(rout/r)*(rout/r)*(rout/r);
2663 FTYPE ut[
NDIM]={0.,-gammamax*pow(r/rout,1.),0.,0.};
2664 SLOOPA(jj) pr[URAD1+jj-1]=ut[jj];
2668 FAILSTATEMENT(
"bounds.koral.c:bound_radnt()",
"bl2ks2ksp2v()", 1);
2694 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
2717 bl_coord_ijk_2(i,j,k,CENT,X, V);
2738 FTYPE pradffortho[NPR];
2743 pradffortho[PRAD1] = 0;
2745 else pradffortho[PRAD2] = -0.5*pradffortho[PRAD0];
2746 pradffortho[PRAD3] = 0;
2754 else pr[
U3]=1./(
a + pow(r,1.5));
2759 int whichcoordfluid;
2765 int whichcoordrad=whichcoordfluid;
2800 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
2806 int riin,
int riout,
int rjin,
int rjout,
int rkin,
int rkout,
2814 #pragma omp parallel // assume don't require EOS
2816 int i,
j,k,pl,pliter;
2822 FTYPE prescale[NPR];
2840 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
2845 if(RADNT_FULLPHI==2.0*
Pi){
2853 if(dirprim[pl]==FACE1 || dirprim[pl]==
CORN3 || dirprim[pl]==
CORN2 || dirprim[pl]==
CORNT ) ri = -
i;
2870 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
2878 if(pl==
U1 || pl==
B1){
2879 if(dirprim[pl]==FACE1 || dirprim[pl]==
CORN3 || dirprim[pl]==
CORN2 || dirprim[pl]==
CORNT ){
2887 if(pl==
U1 || pl==
B1){
2888 MACP0A1(prim,i,j,k,pl) *= -1.;
2897 dualfprintf(
fail_file,
"Shouldn't be here in bounds\n");
2918 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
2924 int riin,
int riout,
int rjin,
int rjout,
int rkin,
int rkout,
2936 #pragma omp parallel // assume don't require EOS
2939 int i,
j,k,pl,pliter;
2945 FTYPE prescale[NPR];
2947 struct of_geom geomdontuse[NPR];
2949 struct of_geom rgeomdontuse[NPR];
2950 struct of_geom *ptrrgeom[NPR];
2954 ptrgeom[pl]=&(geomdontuse[pl]);
2955 ptrrgeom[pl]=&(rgeomdontuse[pl]);
2968 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
2995 bl_coord_ijk_2(i,j,k,CENT,X, V);
2999 coord(i, j, k, CENT, X);
3011 FTYPE Om=RADNT_OMSCALE/(
a+pow(rCYL,1.5));
3018 FTYPE pradffortho[NPR];
3020 pradffortho[PRAD0] = 1.0;
3021 pradffortho[PRAD1] = 0;
3022 pradffortho[PRAD2] = 0;
3023 pradffortho[PRAD3] = 0;
3026 int whichcoordfluid=
MCOORD;
3027 int whichcoordrad=whichcoordfluid;
3052 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
3058 int riin,
int riout,
int rjin,
int rjout,
int rkin,
int rkout,
3071 #pragma omp parallel // assume don't require EOS
3074 int i,
j,k,pl,pliter;
3080 FTYPE prescale[NPR];
3082 struct of_geom geomdontuse[NPR];
3084 struct of_geom rgeomdontuse[NPR];
3085 struct of_geom *ptrrgeom[NPR];
3089 ptrgeom[pl]=&(geomdontuse[pl]);
3090 ptrrgeom[pl]=&(rgeomdontuse[pl]);
3100 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
3127 bl_coord_ijk_2(i,j,k,CENT,X, V);
3131 coord(i, j, k, CENT, X);
3138 FTYPE pradffortho[NPR];
3139 if(RADCYLJET_TYPE==2){
3149 pradffortho[PRAD0] = 1.0;
3150 pradffortho[PRAD1] = 0;
3151 pradffortho[PRAD2] = 0;
3152 pradffortho[PRAD3] = 0;
3154 if(RADCYLJET_TYPE==3){
3164 pradffortho[PRAD0] = 1.0;
3165 pradffortho[PRAD1] = -0.1*pradffortho[PRAD0];
3166 pradffortho[PRAD2] = 0;
3167 pradffortho[PRAD3] = 0;
3172 int whichcoordfluid=
MCOORD;
3173 int whichcoordrad=whichcoordfluid;
3199 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
3205 int riin,
int riout,
int rjin,
int rjout,
int rkin,
int rkout,
3218 #pragma omp parallel // assume don't require EOS
3221 int i,
j,k,pl,pliter;
3227 FTYPE prescale[NPR];
3229 struct of_geom geomdontuse[NPR];
3231 struct of_geom rgeomdontuse[NPR];
3232 struct of_geom *ptrrgeom[NPR];
3236 ptrgeom[pl]=&(geomdontuse[pl]);
3237 ptrrgeom[pl]=&(rgeomdontuse[pl]);
3247 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
3274 int insidejet=
jetbound(i,j,k,CENT,
MAC(prim,i,j,k),
MAC(prim,i,j,k),prim);
3309 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
3315 int riin,
int riout,
int rjin,
int rjout,
int rkin,
int rkout,
3324 #pragma omp parallel // assume don't require EOS
3327 int i,
j,k,pl,pliter;
3333 FTYPE prescale[NPR];
3335 struct of_geom geomdontuse[NPR];
3337 struct of_geom rgeomdontuse[NPR];
3338 struct of_geom *ptrrgeom[NPR];
3342 ptrgeom[pl]=&(geomdontuse[pl]);
3343 ptrrgeom[pl]=&(rgeomdontuse[pl]);
3364 if (RADBEAM2DKSVERT_BEAMNO==1){
3368 else if (RADBEAM2DKSVERT_BEAMNO==2){
3372 else if (RADBEAM2DKSVERT_BEAMNO==3){
3376 else if (RADBEAM2DKSVERT_BEAMNO==4){
3380 else if (RADBEAM2DKSVERT_BEAMNO==5){
3389 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
3409 if(pr[
U2]<0.0) pr[
U2]=0.0;
3410 if(pr[URAD2]<0.0) pr[URAD2]=0.0;
3416 if(1 &&
startpos[1]+i>=0 && ispstag==0){
3422 bl_coord_ijk_2(i,j,k,CENT,X, V);
3429 struct of_geom geomrealdontuse;
3430 struct of_geom *ptrgeomreal=&geomrealdontuse;
3431 gset(getprim,whichcoord,i,j,k,ptrgeomreal);
3434 if(RADBEAM2D_FLATBACKGROUND){
3447 FTYPE mD=PAR_D/(r*r*sqrt(2./r*(1.-2./r)));
3449 Vr=sqrt(2./r)*(1.-2./r);
3452 FTYPE W=1./sqrt(1.-Vr*Vr*ptrgeomreal->gcov[
GIND(1,1)]);
3453 rho=PAR_D/(r*r*sqrt(2./r));
3470 FTYPE beamhalfwidth=0.5*(BEAMR-BEAML);
3471 FTYPE beamcenter=(BEAML+BEAMR)*0.5;
3472 FTYPE beamshape=exp(-pow(V[1]-beamcenter,powbeam)/(2.0*pow(beamhalfwidth,powbeam)))*IFBEAM;
3485 FTYPE pradffortho[NPR];
3486 pradffortho[PRAD0] = ERADAMB + ERADINJ*beamshape;
3487 pradffortho[PRAD1] = Fx*beamshape;
3488 pradffortho[PRAD2] = Fy*beamshape;
3489 pradffortho[PRAD3] = Fz*beamshape;
3493 int whichcoordrad=
MCOORD;
3507 FTYPE uradx,urady,uradz;
3512 ucon_calc(&pr[URAD1-
U1],ptrgeom[URAD1],uradcon,othersrad);
3514 uradx=uradcon[1]*sqrt(fabs(ptrgeom[URAD1]->
gcov[
GIND(1,1)]))/sqrt(fabs(ptrgeomreal->gcov[
GIND(1,1)]));
3515 urady=uradcon[2]*sqrt(fabs(ptrgeom[URAD2]->
gcov[
GIND(2,2)]))/sqrt(fabs(ptrgeomreal->gcov[
GIND(2,2)]));
3516 uradz=uradcon[3]*sqrt(fabs(ptrgeom[URAD3]->
gcov[
GIND(3,3)]))/sqrt(fabs(ptrgeomreal->gcov[
GIND(3,3)]));
3517 if(urady<0.0) urady=0.0;
3523 if(V[1]>BEAML && V[1]<BEAMR && IFBEAM){
3526 urady=-1.0/sqrt(1.0 - NLEFT*NLEFT);
3530 if(pl==URAD0) pr[URAD0] = ERADINJ;
3531 if(pl==URAD1) pr[URAD1] = uradx;
3532 if(pl==URAD2) pr[URAD2] = urady;
3533 if(pl==URAD3) pr[URAD3] = uradz;
3542 if(pl==URAD0) pr[URAD0] = ERADAMB;
3543 if(pl==URAD1) pr[URAD1] = uradx;
3544 if(pl==URAD2) pr[URAD2] = urady;
3545 if(pl==URAD3) pr[URAD3] = uradz;
3582 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
3588 int riin,
int riout,
int rjin,
int rjout,
int rkin,
int rkout,
3600 #pragma omp parallel // assume don't require EOS
3603 int i,
j,k,pl,pliter;
3605 struct of_geom rgeomdontuse[NPR];
3606 struct of_geom *ptrrgeom[NPR];
3608 PALLLOOP(pl) ptrrgeom[pl]=&(rgeomdontuse[pl]);
3612 int get_radcylbeamcart(
int dir,
int *dirprim,
int ispstag,
int ri,
int rj,
int rk,
int i,
int j,
int k,
FTYPE *prref,
FTYPE *
pr);
3623 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
3639 get_radcylbeamcart(dir, dirprim, ispstag,ri,rj,rk,i,j,k,prref,pr);
3656 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
3672 get_radcylbeamcart(dir, dirprim, ispstag,ri,rj,rk,i,j,k,prref,pr);
3691 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
3708 get_radcylbeamcart(dir, dirprim, ispstag,ri,rj,rk,i,j,k,prref,pr);
3724 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
3741 get_radcylbeamcart(dir, dirprim, ispstag,ri,rj,rk,i,j,k,prref,pr);
3756 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
3773 get_radcylbeamcart(dir, dirprim, ispstag,ri,rj,rk,i,j,k,prref,pr);
3789 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
3806 get_radcylbeamcart(dir, dirprim, ispstag,ri,rj,rk,i,j,k,prref,pr);
3830 int get_radcylbeamcart(
int dir,
int *dirprim,
int ispstag,
int ri,
int rj,
int rk,
int i,
int j,
int k,
FTYPE *prref,
FTYPE *
pr)
3839 if(ispstag==1)
return(0);
3846 dualfprintf(
fail_file,
"Shouldn't be here for X3 dir\n");
3859 struct of_geom geomdontuse[NPR];
3862 PALLLOOP(pl) ptrgeom[pl]=&(geomdontuse[pl]);
3868 bl_coord_ijk_2(i,j,k,CENT,X, V);
3875 FTYPE Omx=-RADNT_OMSCALE/(
a+pow(fabs(yy),1.5))*yy;
3876 FTYPE Omy=RADNT_OMSCALE/(
a+pow(fabs(xx),1.5))*xx;
3892 FTYPE pradffortho[NPR];
3894 pradffortho[PRAD0] = 1.0;
3895 pradffortho[PRAD1] = 0;
3896 pradffortho[PRAD2] = 0;
3897 pradffortho[PRAD3] = 0;
3900 int whichcoordfluid=
MCOORD;
3901 int whichcoordrad=whichcoordfluid;
3925 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
3931 int riin,
int riout,
int rjin,
int rjout,
int rkin,
int rkout,
3943 #pragma omp parallel // assume don't require EOS
3946 int i,
j,k,pl,pliter;
3952 FTYPE prescale[NPR];
3954 struct of_geom geomdontuse[NPR];
3956 struct of_geom rgeomdontuse[NPR];
3957 struct of_geom *ptrrgeom[NPR];
3961 ptrgeom[pl]=&(geomdontuse[pl]);
3962 ptrrgeom[pl]=&(rgeomdontuse[pl]);
3971 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
4012 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
4068 int boundstage,
int finalstep,
SFTYPE boundtime,
int whichdir,
int boundvartype,
int *dirprim,
int ispstag,
FTYPE (*prim)[
NSTORE2][
NSTORE3][NPR],
4074 int riin,
int riout,
int rjin,
int rjout,
int rkin,
int rkout,
4083 #pragma omp parallel // assume don't require EOS
4087 int i,
j,k,pl,pliter;
4093 FTYPE prescale[NPR];
4095 struct of_geom geomdontuse[NPR];
4097 struct of_geom rgeomdontuse[NPR];
4098 struct of_geom *ptrrgeom[NPR];
4102 ptrgeom[pl]=&(geomdontuse[pl]);
4103 ptrrgeom[pl]=&(rgeomdontuse[pl]);
4114 #pragma omp for schedule(OPENMPSCHEDULE(),OPENMPCHUNKSIZE(blocksize))
4137 bl_coord_ijk_2(i,j,k,CENT,X, V);