@@ -36,8 +36,13 @@ def regions(grid, mxg=2):
3636 j11 = grid ["jyseps1_1" ]
3737 j12 = grid ["jyseps1_2" ]
3838 j21 = grid ["jyseps2_1" ]
39+
40+ if j12 > j21 :
41+ j12 , j21 = j21 , j12
42+
3943 j22 = grid ["jyseps2_2" ]
4044 ix1 = grid ["ixseps1" ]
45+ ix2 = grid ["ixseps2" ]
4146
4247 nx = grid ["nx" ]
4348 ny = grid ["ny" ]
@@ -46,7 +51,9 @@ def regions(grid, mxg=2):
4651 has_lower_inner_leg = j11 >= 0
4752 has_lower_outer_leg = j22 + 1 < ny
4853
49- assert not double_null
54+ if double_null :
55+ assert ix1 == ix2
56+ # Connected double null
5057
5158 regions = {}
5259 if has_lower_inner_leg :
@@ -65,32 +72,131 @@ def regions(grid, mxg=2):
6572 "inner" : "lower inner pf" ,
6673 "outer" : None ,
6774 "lower" : None ,
68- "upper" : "sol" ,
75+ "upper" : "inner sol" if double_null else " sol" ,
6976 "xfirst" : ix1 ,
7077 "xlast" : nx - 1 - mxg ,
7178 "yfirst" : 0 ,
7279 "ylast" : j11 ,
7380 }
74- regions ["sol" ] = {
75- "inner" : "core" ,
76- "outer" : None ,
77- "lower" : "lower inner sol" if has_lower_inner_leg else None ,
78- "upper" : "lower outer sol" if has_lower_outer_leg else None ,
79- "xfirst" : ix1 ,
80- "xlast" : nx - 1 - mxg ,
81- "yfirst" : j11 + 1 ,
82- "ylast" : j22 ,
83- }
84- regions ["core" ] = {
85- "inner" : None ,
86- "outer" : "sol" ,
87- "lower" : "core" ,
88- "upper" : "core" ,
89- "xfirst" : mxg ,
90- "xlast" : ix1 - 1 ,
91- "yfirst" : j11 + 1 ,
92- "ylast" : j22 ,
93- }
81+ if double_null :
82+ # Connected double null
83+ # "inner sol", "inner core", "outer sol", "outer core"
84+ # "upper inner pf", "upper inner sol", "upper outer pf", "upper outer sol"
85+
86+ ny_inner = grid ["ny_inner" ]
87+
88+ has_upper_inner_leg = ny_inner - 1 > j12
89+ has_upper_outer_leg = j21 > ny_inner - 1
90+
91+ regions ["inner sol" ] = {
92+ "inner" : "inner core" ,
93+ "outer" : None ,
94+ "lower" : "lower inner sol" if has_lower_inner_leg else None ,
95+ "upper" : "upper inner sol" if has_upper_inner_leg else None ,
96+ "xfirst" : ix1 ,
97+ "xlast" : nx - 1 - mxg ,
98+ "yfirst" : j11 + 1 ,
99+ "ylast" : j12 ,
100+ }
101+ regions ["inner core" ] = {
102+ "inner" : None ,
103+ "outer" : "inner sol" ,
104+ "lower" : "outer core" ,
105+ "upper" : "outer core" ,
106+ "xfirst" : mxg ,
107+ "xlast" : ix1 - 1 ,
108+ "yfirst" : j11 + 1 ,
109+ "ylast" : j12 ,
110+ }
111+
112+ if has_upper_inner_leg :
113+ # Upper inner leg
114+ regions ["upper inner pf" ] = {
115+ "inner" : None ,
116+ "outer" : "upper inner sol" ,
117+ "lower" : "upper outer pf" if has_upper_outer_leg else None ,
118+ "upper" : None ,
119+ "xfirst" : mxg ,
120+ "xlast" : ix2 - 1 ,
121+ "yfirst" : j12 + 1 ,
122+ "ylast" : ny_inner - 1 ,
123+ }
124+ regions ["upper inner sol" ] = {
125+ "inner" : "upper inner pf" ,
126+ "outer" : None ,
127+ "lower" : "inner sol" ,
128+ "upper" : None ,
129+ "xfirst" : ix2 ,
130+ "xlast" : nx - 1 - mxg ,
131+ "yfirst" : j12 + 1 ,
132+ "ylast" : ny_inner - 1 ,
133+ }
134+
135+ if has_upper_outer_leg :
136+ # Upper outer leg
137+ regions ["upper outer pf" ] = {
138+ "inner" : None ,
139+ "outer" : "upper inner sol" ,
140+ "lower" : None ,
141+ "upper" : "upper inner pf" if has_upper_inner_leg else None ,
142+ "xfirst" : mxg ,
143+ "xlast" : ix2 - 1 ,
144+ "yfirst" : ny_inner ,
145+ "ylast" : j21 ,
146+ }
147+ regions ["upper outer sol" ] = {
148+ "inner" : "upper inner pf" ,
149+ "outer" : None ,
150+ "lower" : None ,
151+ "upper" : "outer sol" ,
152+ "xfirst" : ix2 ,
153+ "xlast" : nx - 1 - mxg ,
154+ "yfirst" : ny_inner ,
155+ "ylast" : j21 ,
156+ }
157+
158+ regions ["outer sol" ] = {
159+ "inner" : "outer core" ,
160+ "outer" : None ,
161+ "lower" : "upper outer sol" if has_upper_outer_leg else None ,
162+ "upper" : "lower outer sol" if has_lower_outer_leg else None ,
163+ "xfirst" : ix1 ,
164+ "xlast" : nx - 1 - mxg ,
165+ "yfirst" : j21 + 1 ,
166+ "ylast" : j22 ,
167+ }
168+ regions ["outer core" ] = {
169+ "inner" : None ,
170+ "outer" : "outer sol" ,
171+ "lower" : "inner core" ,
172+ "upper" : "inner core" ,
173+ "xfirst" : mxg ,
174+ "xlast" : ix1 - 1 ,
175+ "yfirst" : j21 + 1 ,
176+ "ylast" : j22 ,
177+ }
178+ else :
179+ # Single null
180+ regions ["sol" ] = {
181+ "inner" : "core" ,
182+ "outer" : None ,
183+ "lower" : "lower inner sol" if has_lower_inner_leg else None ,
184+ "upper" : "lower outer sol" if has_lower_outer_leg else None ,
185+ "xfirst" : ix1 ,
186+ "xlast" : nx - 1 - mxg ,
187+ "yfirst" : j11 + 1 ,
188+ "ylast" : j22 ,
189+ }
190+ regions ["core" ] = {
191+ "inner" : None ,
192+ "outer" : "sol" ,
193+ "lower" : "core" ,
194+ "upper" : "core" ,
195+ "xfirst" : mxg ,
196+ "xlast" : ix1 - 1 ,
197+ "yfirst" : j11 + 1 ,
198+ "ylast" : j22 ,
199+ }
94200 if has_lower_outer_leg :
95201 # Lower outer leg
96202 regions ["lower outer pf" ] = {
@@ -106,7 +212,7 @@ def regions(grid, mxg=2):
106212 regions ["lower outer sol" ] = {
107213 "inner" : "lower outer pf" ,
108214 "outer" : None ,
109- "lower" : "sol" ,
215+ "lower" : "outer sol" if double_null else " sol" ,
110216 "upper" : None ,
111217 "xfirst" : ix1 ,
112218 "xlast" : nx - 1 - mxg ,
@@ -320,6 +426,8 @@ def gridcontourf(
320426 ylabel = "Height [m]" ,
321427 separatrix = False ,
322428 log = False ,
429+ alpha = 1.0 ,
430+ antialiased = True ,
323431 remove_xguards = False ,
324432):
325433 """Plots a 2D contour plot, taking into account branch cuts
@@ -470,6 +578,8 @@ def remove_guards(arr2d):
470578 levels ,
471579 cmap = cmap ,
472580 norm = norm ,
581+ alpha = alpha ,
582+ antialiased = antialiased ,
473583 )
474584
475585 yind = [j11 , j22 + 1 ]
@@ -480,6 +590,8 @@ def remove_guards(arr2d):
480590 levels ,
481591 cmap = cmap ,
482592 norm = norm ,
593+ alpha = alpha ,
594+ antialiased = antialiased ,
483595 )
484596
485597 ax .contourf (
@@ -489,6 +601,8 @@ def remove_guards(arr2d):
489601 levels ,
490602 cmap = cmap ,
491603 norm = norm ,
604+ alpha = alpha ,
605+ antialiased = antialiased ,
492606 )
493607 ystart = j11 + 1
494608
@@ -500,6 +614,8 @@ def remove_guards(arr2d):
500614 levels ,
501615 cmap = cmap ,
502616 norm = norm ,
617+ alpha = alpha ,
618+ antialiased = antialiased ,
503619 )
504620
505621 # Inner SOL
@@ -510,6 +626,8 @@ def remove_guards(arr2d):
510626 levels ,
511627 cmap = cmap ,
512628 norm = norm ,
629+ alpha = alpha ,
630+ antialiased = antialiased ,
513631 )
514632 ystart = j21 + 1
515633
@@ -524,6 +642,8 @@ def remove_guards(arr2d):
524642 levels ,
525643 cmap = cmap ,
526644 norm = norm ,
645+ alpha = alpha ,
646+ antialiased = antialiased ,
527647 )
528648 ax .contourf (
529649 R [:, ystart :nin ],
@@ -532,6 +652,8 @@ def remove_guards(arr2d):
532652 levels ,
533653 cmap = cmap ,
534654 norm = norm ,
655+ alpha = alpha ,
656+ antialiased = antialiased ,
535657 )
536658
537659 # Outer leg
@@ -542,6 +664,8 @@ def remove_guards(arr2d):
542664 levels ,
543665 cmap = cmap ,
544666 norm = norm ,
667+ alpha = alpha ,
668+ antialiased = antialiased ,
545669 )
546670 ax .contourf (
547671 R [ix1 :, j12 : (j12 + 2 )],
@@ -550,6 +674,8 @@ def remove_guards(arr2d):
550674 levels ,
551675 cmap = cmap ,
552676 norm = norm ,
677+ alpha = alpha ,
678+ antialiased = antialiased ,
553679 )
554680 ystart = j12 + 1
555681
@@ -561,6 +687,8 @@ def remove_guards(arr2d):
561687 levels ,
562688 cmap = cmap ,
563689 norm = norm ,
690+ alpha = alpha ,
691+ antialiased = antialiased ,
564692 )
565693
566694 yind = [j21 + 1 , j12 ]
@@ -571,6 +699,8 @@ def remove_guards(arr2d):
571699 levels ,
572700 cmap = cmap ,
573701 norm = norm ,
702+ alpha = alpha ,
703+ antialiased = antialiased ,
574704 )
575705 else :
576706 ystart -= 1
@@ -582,6 +712,8 @@ def remove_guards(arr2d):
582712 levels ,
583713 cmap = cmap ,
584714 norm = norm ,
715+ alpha = alpha ,
716+ antialiased = antialiased ,
585717 )
586718
587719 ystart = j22 + 1
@@ -595,6 +727,8 @@ def remove_guards(arr2d):
595727 levels ,
596728 cmap = cmap ,
597729 norm = norm ,
730+ alpha = alpha ,
731+ antialiased = antialiased ,
598732 )
599733 ax .contourf (
600734 R [:, ystart :ny ],
@@ -603,6 +737,8 @@ def remove_guards(arr2d):
603737 levels ,
604738 cmap = cmap ,
605739 norm = norm ,
740+ alpha = alpha ,
741+ antialiased = antialiased ,
606742 )
607743
608744 # X-point
@@ -636,6 +772,8 @@ def remove_guards(arr2d):
636772 levels ,
637773 cmap = cmap ,
638774 norm = norm ,
775+ alpha = alpha ,
776+ antialiased = antialiased ,
639777 )
640778
641779 if add_colorbar :
0 commit comments