422 for(
int i= 0; i <
NSIMD; i++) {
431 if( data->
id[imrk * data->
Npnt] == 0 ) {
432 data->
id[idx] = (
real)(p_i->id[i]);
433 data->
mileage[idx]= p_i->mileage[i];
434 data->
r[idx] = p_i->r[i];
435 data->
phi[idx] = p_i->phi[i];
436 data->
z[idx] = p_i->z[i];
437 data->
ppar[idx] = p_i->ppar[i];
438 data->
mu[idx] = p_i->mu[i];
439 data->
zeta[idx] = p_i->zeta[i];
440 data->
weight[idx] = p_i->weight[i];
441 data->
charge[idx] = p_i->charge[i];
442 data->
rho[idx] = p_i->rho[i];
443 data->
theta[idx] = p_i->theta[i];
444 data->
B_r[idx] = p_i->B_r[i];
445 data->
B_phi[idx] = p_i->B_phi[i];
446 data->
B_z[idx] = p_i->B_z[i];
450 if(ipoint == data->
Npnt) {
462 if( dt <= 0 || p_f->endcond[i] > 0 ) {
463 idx = imrk * data->
Npnt + ipoint;
465 data->
id[idx] = (
real)p_f->id[i];
466 data->
mileage[idx]= p_f->mileage[i];
467 data->
r[idx] = p_f->r[i];
468 data->
phi[idx] = p_f->phi[i];
469 data->
z[idx] = p_f->z[i];
470 data->
ppar[idx] = p_f->ppar[i];
471 data->
mu[idx] = p_f->mu[i];
472 data->
zeta[idx] = p_f->zeta[i];
473 data->
weight[idx] = p_f->weight[i];
474 data->
charge[idx] = p_f->charge[i];
475 data->
rho[idx] = p_f->rho[i];
476 data->
theta[idx] = p_f->theta[i];
477 data->
B_r[idx] = p_f->B_r[i];
478 data->
B_phi[idx] = p_f->B_phi[i];
479 data->
B_z[idx] = p_f->B_z[i];
483 if(ipoint == data->
Npnt) {
494 for(
int i= 0; i <
NSIMD; i++) {
496 if( p_f->id[i] > 0 && (p_f->mileage[i] != p_i->mileage[i]) ) {
509 idx = imrk * data->
Npnt + ipoint;
510 data->
id[idx] = (
real)p_f->id[i];
511 data->
mileage[idx]= k*p_f->mileage[i]+ d*p_i->mileage[i];
512 data->
r[idx] = k*p_f->r[i] + d*p_i->r[i];
513 data->
phi[idx] = k*p_f->phi[i] + d*p_i->phi[i];
514 data->
z[idx] = k*p_f->z[i] + d*p_i->z[i];
515 data->
ppar[idx] = k*p_f->ppar[i] + d*p_i->ppar[i];
516 data->
mu[idx] = k*p_f->mu[i] + d*p_i->mu[i];
517 data->
zeta[idx] = k*p_f->zeta[i] + d*p_i->zeta[i];
518 data->
weight[idx] = k*p_f->weight[i] + d*p_i->weight[i];
519 data->
charge[idx] = p_i->charge[i];
520 data->
rho[idx] = k*p_f->rho[i] + d*p_i->rho[i];
521 data->
theta[idx] = k*p_f->theta[i] + d*p_i->theta[i];
522 data->
B_r[idx] = k*p_f->B_r[i] + d*p_i->B_r[i];
523 data->
B_phi[idx] = k*p_f->B_phi[i] + d*p_i->B_phi[i];
524 data->
B_z[idx] = k*p_f->B_z[i] + d*p_i->B_z[i];
526 data->
pncrdi[idx] = 1 - 2 * (p_f->phi[i] < p_i->phi[i]);
530 if(ipoint == data->
Npnt) {
545 idx = imrk * data->
Npnt + ipoint;
546 data->
id[idx] = (
real)p_f->id[i];
547 data->
mileage[idx]= k*p_f->mileage[i]+ d*p_i->mileage[i];
548 data->
r[idx] = k*p_f->r[i] + d*p_i->r[i];
549 data->
phi[idx] = k*p_f->phi[i] + d*p_i->phi[i];
550 data->
z[idx] = k*p_f->z[i] + d*p_i->z[i];
551 data->
ppar[idx] = k*p_f->ppar[i] + d*p_i->ppar[i];
552 data->
mu[idx] = k*p_f->mu[i] + d*p_i->mu[i];
553 data->
zeta[idx] = k*p_f->zeta[i] + d*p_i->zeta[i];
554 data->
weight[idx] = k*p_f->weight[i] + d*p_i->weight[i];
555 data->
charge[idx] = p_i->charge[i];
556 data->
rho[idx] = k*p_f->rho[i] + d*p_i->rho[i];
557 data->
theta[idx] = k*p_f->theta[i] + d*p_i->theta[i];
558 data->
B_r[idx] = k*p_f->B_r[i] + d*p_i->B_r[i];
559 data->
B_phi[idx] = k*p_f->B_phi[i] + d*p_i->B_phi[i];
560 data->
B_z[idx] = k*p_f->B_z[i] + d*p_i->B_z[i];
562 data->
pncrdi[idx] = 1 - 2 * (p_f->theta[i] < p_i->theta[i]);
566 if(ipoint == data->
Npnt) {
582 idx = imrk * data->
Npnt + ipoint;
583 data->
id[idx] = (
real)p_f->id[i];
584 data->
mileage[idx]= k*p_f->mileage[i]+ d*p_i->mileage[i];
585 data->
r[idx] = k*p_f->r[i] + d*p_i->r[i];
586 data->
phi[idx] = k*p_f->phi[i] + d*p_i->phi[i];
587 data->
z[idx] = k*p_f->z[i] + d*p_i->z[i];
588 data->
ppar[idx] = k*p_f->ppar[i] + d*p_i->ppar[i];
589 data->
mu[idx] = k*p_f->mu[i] + d*p_i->mu[i];
590 data->
zeta[idx] = k*p_f->zeta[i] + d*p_i->zeta[i];
591 data->
weight[idx] = k*p_f->weight[i] + d*p_i->weight[i];
592 data->
charge[idx] = p_i->charge[i];
593 data->
rho[idx] = k*p_f->rho[i] + d*p_i->rho[i];
594 data->
theta[idx] = k*p_f->theta[i] + d*p_i->theta[i];
595 data->
B_r[idx] = k*p_f->B_r[i] + d*p_i->B_r[i];
596 data->
B_phi[idx] = k*p_f->B_phi[i] + d*p_i->B_phi[i];
597 data->
B_z[idx] = k*p_f->B_z[i] + d*p_i->B_z[i];
600 data->
pncrdi[idx] = 1 - 2 * (p_f->rho[i] < p_i->rho[i]);
603 if(ipoint == data->
Npnt) {
630 for(
int i= 0; i <
NSIMD; i++) {
639 if( data->
id[imrk * data->
Npnt] == 0 ) {
640 data->
id[idx] = (
real)p_i->id[i];
641 data->
mileage[idx] = p_i->mileage[i];
642 data->
r[idx] = p_i->r[i];
643 data->
phi[idx] = p_i->phi[i];
644 data->
z[idx] = p_i->z[i];
645 data->
rho[idx] = p_i->rho[i];
646 data->
theta[idx] = p_i->theta[i];
647 data->
B_r[idx] = p_i->B_r[i];
648 data->
B_phi[idx] = p_i->B_phi[i];
649 data->
B_z[idx] = p_i->B_z[i];
653 if(ipoint == data->
Npnt) {
664 if( dt <= 0 || p_f->endcond[i] > 0 ) {
665 idx = imrk * data->
Npnt + ipoint;
666 data->
id[idx] = (
real)p_f->id[i];
667 data->
mileage[idx] = p_f->mileage[i];
668 data->
r[idx] = p_f->r[i];
669 data->
phi[idx] = p_f->phi[i];
670 data->
z[idx] = p_f->z[i];
671 data->
rho[idx] = p_f->rho[i];
672 data->
theta[idx] = p_f->theta[i];
673 data->
B_r[idx] = p_f->B_r[i];
674 data->
B_phi[idx] = p_f->B_phi[i];
675 data->
B_z[idx] = p_f->B_z[i];
679 if(ipoint == data->
Npnt) {
690 for(
int i= 0; i <
NSIMD; i++) {
692 if( p_f->id[i] > 0 && (p_f->mileage[i] != p_i->mileage[i]) ) {
705 idx = imrk * data->
Npnt + ipoint;
706 data->
id[idx] = (
real)p_f->id[i];
707 data->
mileage[idx]= k*p_f->mileage[i]+ d*p_i->mileage[i];
708 data->
r[idx] = k*p_f->r[i] + d*p_i->r[i];
709 data->
phi[idx] = k*p_f->phi[i] + d*p_i->phi[i];
710 data->
z[idx] = k*p_f->z[i] + d*p_i->z[i];
711 data->
rho[idx] = k*p_f->rho[i] + d*p_i->rho[i];
712 data->
theta[idx] = k*p_f->theta[i] + d*p_i->theta[i];
713 data->
B_r[idx] = k*p_f->B_r[i] + d*p_i->B_r[i];
714 data->
B_phi[idx] = k*p_f->B_phi[i] + d*p_i->B_phi[i];
715 data->
B_z[idx] = k*p_f->B_z[i] + d*p_i->B_z[i];
717 data->
pncrdi[idx] = 1 - 2 * (p_f->phi[i] < p_i->phi[i]);
721 if(ipoint == data->
Npnt) {
736 idx = imrk * data->
Npnt + ipoint;
737 data->
id[idx] = (
real)p_f->id[i];
738 data->
mileage[idx]= k*p_f->mileage[i] + d*p_i->mileage[i];
739 data->
r[idx] = k*p_f->r[i] + d*p_i->r[i];
740 data->
phi[idx] = k*p_f->phi[i] + d*p_i->phi[i];
741 data->
z[idx] = k*p_f->z[i] + d*p_i->z[i];
742 data->
rho[idx] = k*p_f->rho[i] + d*p_i->rho[i];
743 data->
theta[idx] = k*p_f->theta[i] + d*p_i->theta[i];
744 data->
B_r[idx] = k*p_f->B_r[i] + d*p_i->B_r[i];
745 data->
B_phi[idx] = k*p_f->B_phi[i] + d*p_i->B_phi[i];
746 data->
B_z[idx] = k*p_f->B_z[i] + d*p_i->B_z[i];
748 data->
pncrdi[idx] = 1 - 2 * (p_f->theta[i] < p_i->theta[i]);
752 if(ipoint == data->
Npnt) {
767 idx = imrk * data->
Npnt + ipoint;
768 data->
id[idx] = (
real)p_f->id[i];
769 data->
mileage[idx]= k*p_f->mileage[i] + d*p_i->mileage[i];
770 data->
r[idx] = k*p_f->r[i] + d*p_i->r[i];
771 data->
phi[idx] = k*p_f->phi[i] + d*p_i->phi[i];
772 data->
z[idx] = k*p_f->z[i] + d*p_i->z[i];
773 data->
rho[idx] = k*p_f->rho[i] + d*p_i->rho[i];
774 data->
theta[idx] = k*p_f->theta[i] + d*p_i->theta[i];
775 data->
B_r[idx] = k*p_f->B_r[i] + d*p_i->B_r[i];
776 data->
B_phi[idx] = k*p_f->B_phi[i] + d*p_i->B_phi[i];
777 data->
B_z[idx] = k*p_f->B_z[i] + d*p_i->B_z[i];
782 if(ipoint == data->
Npnt) {
Struct representing NSIMD particle markers.
Struct representing NSIMD guiding center markers.
Struct representing NSIMD field line markers.