632 for(
int i= 0; i <
NSIMD; i++) {
641 if( data->
id[imrk * data->
Npnt] == 0 ) {
642 data->
id[idx] = (
real)p_i->id[i];
643 data->
mileage[idx] = p_i->mileage[i];
644 data->
r[idx] = p_i->r[i];
645 data->
phi[idx] = p_i->phi[i];
646 data->
z[idx] = p_i->z[i];
647 data->
rho[idx] = p_i->rho[i];
648 data->
theta[idx] = p_i->theta[i];
649 data->
B_r[idx] = p_i->B_r[i];
650 data->
B_phi[idx] = p_i->B_phi[i];
651 data->
B_z[idx] = p_i->B_z[i];
655 if(ipoint == data->
Npnt) {
666 if( dt <= 0 || p_f->endcond[i] > 0 ) {
667 idx = imrk * data->
Npnt + ipoint;
668 data->
id[idx] = (
real)p_f->id[i];
669 data->
mileage[idx] = p_f->mileage[i];
670 data->
r[idx] = p_f->r[i];
671 data->
phi[idx] = p_f->phi[i];
672 data->
z[idx] = p_f->z[i];
673 data->
rho[idx] = p_f->rho[i];
674 data->
theta[idx] = p_f->theta[i];
675 data->
B_r[idx] = p_f->B_r[i];
676 data->
B_phi[idx] = p_f->B_phi[i];
677 data->
B_z[idx] = p_f->B_z[i];
681 if(ipoint == data->
Npnt) {
692 for(
int i= 0; i <
NSIMD; i++) {
694 if( p_f->id[i] > 0 && (p_f->mileage[i] != p_i->mileage[i]) ) {
707 idx = imrk * data->
Npnt + ipoint;
708 data->
id[idx] = (
real)p_f->id[i];
709 data->
mileage[idx]= k*p_f->mileage[i]+ d*p_i->mileage[i];
710 data->
r[idx] = k*p_f->r[i] + d*p_i->r[i];
711 data->
phi[idx] = k*p_f->phi[i] + d*p_i->phi[i];
712 data->
z[idx] = k*p_f->z[i] + d*p_i->z[i];
713 data->
rho[idx] = k*p_f->rho[i] + d*p_i->rho[i];
714 data->
theta[idx] = k*p_f->theta[i] + d*p_i->theta[i];
715 data->
B_r[idx] = k*p_f->B_r[i] + d*p_i->B_r[i];
716 data->
B_phi[idx] = k*p_f->B_phi[i] + d*p_i->B_phi[i];
717 data->
B_z[idx] = k*p_f->B_z[i] + d*p_i->B_z[i];
719 data->
pncrdi[idx] = 1 - 2 * (p_f->phi[i] < p_i->phi[i]);
723 if(ipoint == data->
Npnt) {
738 idx = imrk * data->
Npnt + ipoint;
739 data->
id[idx] = (
real)p_f->id[i];
740 data->
mileage[idx]= k*p_f->mileage[i] + d*p_i->mileage[i];
741 data->
r[idx] = k*p_f->r[i] + d*p_i->r[i];
742 data->
phi[idx] = k*p_f->phi[i] + d*p_i->phi[i];
743 data->
z[idx] = k*p_f->z[i] + d*p_i->z[i];
744 data->
rho[idx] = k*p_f->rho[i] + d*p_i->rho[i];
745 data->
theta[idx] = k*p_f->theta[i] + d*p_i->theta[i];
746 data->
B_r[idx] = k*p_f->B_r[i] + d*p_i->B_r[i];
747 data->
B_phi[idx] = k*p_f->B_phi[i] + d*p_i->B_phi[i];
748 data->
B_z[idx] = k*p_f->B_z[i] + d*p_i->B_z[i];
750 data->
pncrdi[idx] = 1 - 2 * (p_f->theta[i] < p_i->theta[i]);
754 if(ipoint == data->
Npnt) {
769 idx = imrk * data->
Npnt + ipoint;
770 data->
id[idx] = (
real)p_f->id[i];
771 data->
mileage[idx]= k*p_f->mileage[i] + d*p_i->mileage[i];
772 data->
r[idx] = k*p_f->r[i] + d*p_i->r[i];
773 data->
phi[idx] = k*p_f->phi[i] + d*p_i->phi[i];
774 data->
z[idx] = k*p_f->z[i] + d*p_i->z[i];
775 data->
rho[idx] = k*p_f->rho[i] + d*p_i->rho[i];
776 data->
theta[idx] = k*p_f->theta[i] + d*p_i->theta[i];
777 data->
B_r[idx] = k*p_f->B_r[i] + d*p_i->B_r[i];
778 data->
B_phi[idx] = k*p_f->B_phi[i] + d*p_i->B_phi[i];
779 data->
B_z[idx] = k*p_f->B_z[i] + d*p_i->B_z[i];
784 if(ipoint == data->
Npnt) {
void diag_orb_update_fo(diag_orb_data *data, particle_simd_fo *p_f, particle_simd_fo *p_i)
Collects orbit diagnostics when marker represents a particle.
void diag_orb_update_ml(diag_orb_data *data, particle_simd_ml *p_f, particle_simd_ml *p_i)
Collects orbit diagnostics when marker represents a field line.
void diag_orb_update_gc(diag_orb_data *data, particle_simd_gc *p_f, particle_simd_gc *p_i)
Collects orbit diagnostics when marker represents a guiding center.
Struct representing NSIMD particle markers.
Struct representing NSIMD guiding center markers.
Struct representing NSIMD field line markers.