@@ -935,50 +935,56 @@ function local_error_norm end
935935
936936function local_error_norm (f_loworder:: MPISharedArray{mk_float,2} ,
937937 f:: MPISharedArray{mk_float,2} , rtol, atol; method= " Linf" ,
938- skip_r_inner= false , skip_z_lower= false , error_sum_zero= 0.0 )
938+ skip_r_inner, skip_r_outer, skip_z_lower= false ,
939+ error_sum_zero= 0.0 )
940+ nr = size (f, 2 )
939941 if method == " Linf"
940942 f_max = - Inf
941943 @loop_r_z ir iz begin
944+ if (skip_r_inner[iz] && ir == 1 ) || (skip_r_outer[iz] && ir == nr)
945+ continue
946+ end
942947 error_norm = abs (f_loworder[iz,ir] - f[iz,ir]) / (rtol* abs (f[iz,ir]) + atol)
943948 f_max = max (f_max, error_norm)
944949 end
945950 return f_max
946951 elseif method == " L2"
947952 L2sum = error_sum_zero
948953 @loop_r_z ir iz begin
949- if (skip_r_inner && ir == 1 ) || (skip_z_lower && iz == 1 )
954+ if (skip_r_inner[iz] && ir == 1 ) || (skip_r_outer[iz] && ir == nr) ||
955+ (skip_z_lower && iz == 1 )
950956 continue
951957 end
952958 error_norm = ((f_loworder[iz,ir] - f[iz,ir]) / (rtol* abs (f[iz,ir]) + atol))^ 2
953959 L2sum += error_norm
954960 end
955961 # Will sum results from different processes in shared memory block after returning
956962 # from this function.
957- nz, nr = size (f_loworder)
958- if skip_r_inner
959- nr -= 1
960- end
961- if skip_z_lower
962- nz -= 1
963- end
964963 return L2sum
965964 else
966965 error (" Unrecognized method '$method '" )
967966 end
968967end
969968function local_error_norm (f_loworder:: MPISharedArray{mk_float,3} ,
970969 f:: MPISharedArray{mk_float,3} , rtol, atol, neutral= false ;
971- method= " Linf" , skip_r_inner= false , skip_z_lower= false ,
970+ method= " Linf" , skip_r_inner, skip_r_outer , skip_z_lower= false ,
972971 error_sum_zero= 0.0 )
972+ nr = size (f, 2 )
973973 if method == " Linf"
974974 f_max = - Inf
975975 if neutral
976976 @loop_sn_r_z isn ir iz begin
977+ if (skip_r_inner[iz] && ir == 1 ) || (skip_r_outer[iz] && ir == nr)
978+ continue
979+ end
977980 error_norm = abs (f_loworder[iz,ir,isn] - f[iz,ir,isn]) / (rtol* abs (f[iz,ir,isn]) + atol)
978981 f_max = max (f_max, error_norm)
979982 end
980983 else
981984 @loop_s_r_z is ir iz begin
985+ if (skip_r_inner[iz] && ir == 1 ) || (skip_r_outer[iz] && ir == nr)
986+ continue
987+ end
982988 error_norm = abs (f_loworder[iz,ir,is] - f[iz,ir,is]) / (rtol* abs (f[iz,ir,is]) + atol)
983989 f_max = max (f_max, error_norm)
984990 end
@@ -988,15 +994,17 @@ function local_error_norm(f_loworder::MPISharedArray{mk_float,3},
988994 L2sum = error_sum_zero
989995 if neutral
990996 @loop_sn_r_z isn ir iz begin
991- if (skip_r_inner && ir == 1 ) || (skip_z_lower && iz == 1 )
997+ if (skip_r_inner[iz] && ir == 1 ) || (skip_r_outer[iz] && ir == nr) ||
998+ (skip_z_lower && iz == 1 )
992999 continue
9931000 end
9941001 error_norm = ((f_loworder[iz,ir,isn] - f[iz,ir,isn]) / (rtol* abs (f[iz,ir,isn]) + atol))^ 2
9951002 L2sum += error_norm
9961003 end
9971004 else
9981005 @loop_s_r_z is ir iz begin
999- if (skip_r_inner && ir == 1 ) || (skip_z_lower && iz == 1 )
1006+ if (skip_r_inner[iz] && ir == 1 ) || (skip_r_outer[iz] && ir == nr) ||
1007+ (skip_z_lower && iz == 1 )
10001008 continue
10011009 end
10021010 error_norm = ((f_loworder[iz,ir,is] - f[iz,ir,is]) / (rtol* abs (f[iz,ir,is]) + atol))^ 2
@@ -1005,108 +1013,117 @@ function local_error_norm(f_loworder::MPISharedArray{mk_float,3},
10051013 end
10061014 # Will sum results from different processes in shared memory block after returning
10071015 # from this function.
1008- nz, nr, nspecies = size (f_loworder)
1009- if skip_r_inner
1010- nr -= 1
1011- end
1012- if skip_z_lower
1013- nz -= 1
1014- end
10151016 return L2sum
10161017 else
10171018 error (" Unrecognized method '$method '" )
10181019 end
10191020end
10201021function local_error_norm (f_loworder:: MPISharedArray{mk_float,4} ,
10211022 f:: MPISharedArray{mk_float,4} , rtol, atol; method= " Linf" ,
1022- skip_r_inner= false , skip_z_lower= false , error_sum_zero= 0.0 )
1023+ skip_r_inner, skip_r_outer, skip_z_lower= false ,
1024+ error_sum_zero= 0.0 )
1025+ nr = size (f, 4 )
10231026 if method == " Linf"
10241027 f_max = - Inf
1025- @loop_r_z_vperp_vpa ir iz ivperp ivpa begin
1026- error_norm = abs (f_loworder[ivpa,ivperp,iz,ir] - f[ivpa,ivperp,iz,ir]) /
1027- (rtol* abs (f[ivpa,ivperp,iz,ir]) + atol)
1028- f_max = max (f_max, error_norm)
1028+ @loop_r_z ir iz begin
1029+ if (skip_r_inner[iz] && ir == 1 ) || (skip_r_outer[iz] && ir == nr)
1030+ continue
1031+ end
1032+ @loop_vperp_vpa ivperp ivpa begin
1033+ error_norm = abs (f_loworder[ivpa,ivperp,iz,ir] - f[ivpa,ivperp,iz,ir]) /
1034+ (rtol* abs (f[ivpa,ivperp,iz,ir]) + atol)
1035+ f_max = max (f_max, error_norm)
1036+ end
10291037 end
10301038 return f_max
10311039 elseif method == " L2"
10321040 L2sum = error_sum_zero
1033- @loop_r_z_vperp_vpa ir iz ivperp ivpa begin
1034- if (skip_r_inner && ir == 1 ) || (skip_z_lower && iz == 1 )
1041+ @loop_r_z ir iz begin
1042+ if (skip_r_inner[iz] && ir == 1 ) || (skip_r_outer[iz] && ir == nr) ||
1043+ (skip_z_lower && iz == 1 )
10351044 continue
10361045 end
1037- error_norm = ((f_loworder[ivpa,ivperp,iz,ir] - f[ivpa,ivperp,iz,ir]) /
1038- (rtol* abs (f[ivpa,ivperp,iz,ir]) + atol))^ 2
1039- L2sum += error_norm
1046+ @loop_vperp_vpa ivperp ivpa begin
1047+ error_norm = ((f_loworder[ivpa,ivperp,iz,ir] - f[ivpa,ivperp,iz,ir]) /
1048+ (rtol* abs (f[ivpa,ivperp,iz,ir]) + atol))^ 2
1049+ L2sum += error_norm
1050+ end
10401051 end
10411052 # Will sum results from different processes in shared memory block after returning
10421053 # from this function.
1043- nvpa, nvperp, nz, nr = size (f_loworder)
1044- if skip_r_inner
1045- nr -= 1
1046- end
1047- if skip_z_lower
1048- nz -= 1
1049- end
10501054 return L2sum
10511055 else
10521056 error (" Unrecognized method '$method '" )
10531057 end
10541058end
10551059function local_error_norm (f_loworder:: MPISharedArray{mk_float,5} ,
10561060 f:: MPISharedArray{mk_float,5} , rtol, atol; method= " Linf" ,
1057- skip_r_inner= false , skip_z_lower= false , error_sum_zero= 0.0 )
1061+ skip_r_inner, skip_r_outer, skip_z_lower= false ,
1062+ error_sum_zero= 0.0 )
1063+ nr = size (f, 4 )
10581064 if method == " Linf"
10591065 f_max = - Inf
1060- @loop_s_r_z_vperp_vpa is ir iz ivperp ivpa begin
1061- error_norm = abs (f_loworder[ivpa,ivperp,iz,ir,is] - f[ivpa,ivperp,iz,ir,is]) /
1062- (rtol* abs (f[ivpa,ivperp,iz,ir,is]) + atol)
1063- f_max = max (f_max, error_norm)
1066+ @loop_s_r_z is ir iz begin
1067+ if (skip_r_inner[iz] && ir == 1 ) || (skip_r_outer[iz] && ir == nr)
1068+ continue
1069+ end
1070+ @loop_vperp_vpa ivperp ivpa begin
1071+ error_norm = abs (f_loworder[ivpa,ivperp,iz,ir,is] - f[ivpa,ivperp,iz,ir,is]) /
1072+ (rtol* abs (f[ivpa,ivperp,iz,ir,is]) + atol)
1073+ f_max = max (f_max, error_norm)
1074+ end
10641075 end
10651076 return f_max
10661077 elseif method == " L2"
10671078 L2sum = error_sum_zero
1068- @loop_s_r_z_vperp_vpa is ir iz ivperp ivpa begin
1069- if (skip_r_inner && ir == 1 ) || (skip_z_lower && iz == 1 )
1079+ @loop_s_r_z is ir iz begin
1080+ if (skip_r_inner[iz] && ir == 1 ) || (skip_r_outer[iz] && ir == nr) ||
1081+ (skip_z_lower && iz == 1 )
10701082 continue
10711083 end
1072- error_norm = ((f_loworder[ivpa,ivperp,iz,ir,is] - f[ivpa,ivperp,iz,ir,is]) /
1073- (rtol* abs (f[ivpa,ivperp,iz,ir,is]) + atol))^ 2
1074- L2sum += error_norm
1084+ @loop_vperp_vpa ivperp ivpa begin
1085+ error_norm = ((f_loworder[ivpa,ivperp,iz,ir,is] - f[ivpa,ivperp,iz,ir,is]) /
1086+ (rtol* abs (f[ivpa,ivperp,iz,ir,is]) + atol))^ 2
1087+ L2sum += error_norm
1088+ end
10751089 end
10761090 # Will sum results from different processes in shared memory block after returning
10771091 # from this function.
1078- nvpa, nvperp, nz, nr, nspecies = size (f_loworder)
1079- if skip_r_inner
1080- nr -= 1
1081- end
1082- if skip_z_lower
1083- nz -= 1
1084- end
10851092 return L2sum
10861093 else
10871094 error (" Unrecognized method '$method '" )
10881095 end
10891096end
10901097function local_error_norm (f_loworder:: MPISharedArray{mk_float,6} ,
10911098 f:: MPISharedArray{mk_float,6} , rtol, atol; method= " Linf" ,
1092- skip_r_inner= false , skip_z_lower= false , error_sum_zero= 0.0 )
1099+ skip_r_inner, skip_r_outer, skip_z_lower= false ,
1100+ error_sum_zero= 0.0 )
1101+ nr = size (f, 5 )
10931102 if method == " Linf"
10941103 f_max = - Inf
1095- @loop_sn_r_z_vzeta_vr_vz isn ir iz ivzeta ivr ivz begin
1096- error_norm = abs (f_loworder[ivz,ivr,ivzeta,iz,ir,isn] - f[ivz,ivr,ivzeta,iz,ir,isn]) /
1097- (rtol* abs (f[ivz,ivr,ivzeta,iz,ir,isn]) + atol)
1098- f_max = max (f_max, error_norm)
1104+ @loop_sn_r_z isn ir iz begin
1105+ if (skip_r_inner[iz] && ir == 1 ) || (skip_r_outer[iz] && ir == nr)
1106+ continue
1107+ end
1108+ @loop_vzeta_vr_vz ivzeta ivr ivz begin
1109+ error_norm = abs (f_loworder[ivz,ivr,ivzeta,iz,ir,isn] - f[ivz,ivr,ivzeta,iz,ir,isn]) /
1110+ (rtol* abs (f[ivz,ivr,ivzeta,iz,ir,isn]) + atol)
1111+ f_max = max (f_max, error_norm)
1112+ end
10991113 end
11001114 return f_max
11011115 elseif method == " L2"
11021116 L2sum = error_sum_zero
1103- @loop_sn_r_z_vzeta_vr_vz isn ir iz ivzeta ivr ivz begin
1104- if (skip_r_inner && ir == 1 ) || (skip_z_lower && iz == 1 )
1117+ @loop_sn_r_z isn ir iz begin
1118+ if (skip_r_inner[iz] && ir == 1 ) || (skip_r_outer[iz] && ir == nr) ||
1119+ (skip_z_lower && iz == 1 )
11051120 continue
11061121 end
1107- error_norm = ((f_loworder[ivz,ivr,ivzeta,iz,ir,isn] - f_loworder[ivz,ivr,ivzeta,iz,ir,isn]) /
1108- (rtol* abs (f[ivz,ivr,ivzeta,iz,ir,isn]) + atol))^ 2
1109- L2sum += error_norm
1122+ @loop_vzeta_vr_vz ivzeta ivr ivz begin
1123+ error_norm = ((f_loworder[ivz,ivr,ivzeta,iz,ir,isn] - f_loworder[ivz,ivr,ivzeta,iz,ir,isn]) /
1124+ (rtol* abs (f[ivz,ivr,ivzeta,iz,ir,isn]) + atol))^ 2
1125+ L2sum += error_norm
1126+ end
11101127 end
11111128 # Will sum results from different processes in shared memory block after returning
11121129 # from this function.
0 commit comments