// To test parallelism, I will now start feeding this function with "clean" copies of the parameters, so that they will not be changed by previous iterations, and each one will behave as the first one. Define all (empty) variables here, so they have the correct scope, then they get different definitions depending on thread number
// To test parallelism, I will now start feeding this function with "clean" copies of the parameters, so that they will not be changed by previous iterations, and each one will behave as the first one. Define all (empty) variables here, so they have the correct scope, then they get different definitions depending on thread number
InclusionIterationData*cid_2=NULL;
InclusionIterationData*cid_2=NULL;
VirtualAsciiFile*p_output_2=NULL;
InclusionOutputInfo*p_output_2=NULL;
VirtualBinaryFile*vtppoanp_2=NULL;
VirtualBinaryFile*vtppoanp_2=NULL;
// for threads other than the 0, create distinct copies of all relevant data, while for thread 0 just define new references / pointers to the original ones
// for threads other than the 0, create distinct copies of all relevant data, while for thread 0 just define new references / pointers to the original ones
if(myompthread==0){
if(myompthread==0){
cid_2=cid;
cid_2=cid;
// OMP thread 0 of MPI process 0 holds the pointer to the full output structure
p_output_2=p_output;
p_outarray[0]=p_output_2;
}else{
}else{
// this is not thread 0, so do create fresh copies of all local variables
// this is not thread 0, so do create fresh copies of all local variables
// To test parallelism, I will now start feeding this function with "clean" copies of the parameters, so that they will not be changed by previous iterations, and each one will behave as the first one. Define all (empty) variables here, so they have the correct scope, then they get different definitions depending on thread number
// To test parallelism, I will now start feeding this function with "clean" copies of the parameters, so that they will not be changed by previous iterations, and each one will behave as the first one. Define all (empty) variables here, so they have the correct scope, then they get different definitions depending on thread number
InclusionIterationData*cid_2=NULL;
InclusionIterationData*cid_2=NULL;
VirtualAsciiFile*p_output_2=NULL;
InclusionOutputInfo*p_output_2=NULL;
VirtualBinaryFile*vtppoanp_2=NULL;
VirtualBinaryFile*vtppoanp_2=NULL;
// PLACEHOLDER
// PLACEHOLDER
// for threads other than the 0, create distinct copies of all relevant data, while for thread 0 just define new references / pointers to the original ones
// for threads other than the 0, create distinct copies of all relevant data, while for thread 0 just define new references / pointers to the original ones