@@ -569,7 +569,7 @@ def test_3to4_equilibrium_boundary():
569569 ts .boundary_separatrix .gap .resize (1 )
570570 if i == 3 :
571571 # Fill second_separatrix
572- ts .boundary_secondary_separatrix .psi = - 1.0
572+ ts .boundary_secondary_separatrix .psi = - 1.1
573573 # Use limiter for time_slice[1], otherwise divertor:
574574 ts .boundary_secondary_separatrix .outline .r = [0.9 , 3.1 , 2.1 , 0.9 ]
575575 ts .boundary_secondary_separatrix .outline .z = [0.9 , 2.1 , 3.1 , 0.9 ]
@@ -588,10 +588,11 @@ def test_3to4_equilibrium_boundary():
588588 assert len (eq4 .time_slice ) == 5
589589 for i , ts in enumerate (eq4 .time_slice ):
590590 node = ts .contour_tree .node
591- assert len (node ) == [1 , 2 , 2 , 3 , 2 ][i ]
591+ assert len (node ) == [1 , 2 , 2 , 3 , 3 ][i ]
592592 # Test magnetic axis
593593 assert node [0 ].critical_type == 0
594594 assert node [0 ].r == node [0 ].z == 2.0
595+ assert node [0 ].psi == - 1.0
595596 assert len (node [0 ].levelset .r ) == len (node [0 ].levelset .z ) == 0
596597 # boundary_separatrix
597598 if i == 1 : # node[1] is boundary for limiter plasma
@@ -602,18 +603,33 @@ def test_3to4_equilibrium_boundary():
602603 assert node [1 ].critical_type == 1
603604 assert node [1 ].r == node [1 ].z == 1.0
604605 if i > 0 :
606+ assert node [1 ].psi == 1.0
605607 assert numpy .array_equal (node [1 ].levelset .r , [1.0 , 3.0 , 2.0 , 1.0 ])
606608 assert numpy .array_equal (node [1 ].levelset .z , [1.0 , 2.0 , 3.0 , 1.0 ])
607609 # boundary_secondary_separatrix
608610 if i == 3 :
609611 assert node [2 ].critical_type == 1
610612 assert node [2 ].r == 2.1
611613 assert node [2 ].z == 3.1
614+ assert node [2 ].psi == 1.1
612615 assert numpy .array_equal (node [2 ].levelset .r , [0.9 , 3.1 , 2.1 , 0.9 ])
613616 assert numpy .array_equal (node [2 ].levelset .z , [0.9 , 2.1 , 3.1 , 0.9 ])
617+ # Second x-point from boundary_separatrix
618+ if i == 4 :
619+ assert node [2 ].critical_type == 1
620+ assert node [2 ].r == 2.0
621+ assert node [2 ].z == 3.0
622+ assert node [2 ].psi == node [1 ].psi == 1.0
623+ # Levelset is only filled for the main x-point (node[1])
624+ assert not node [2 ].levelset .r .has_value
625+ assert not node [2 ].levelset .z .has_value
614626
615627 # not deepcopied, should share numpy arrays
616- assert (
617- eq342 .time_slice [1 ].boundary_separatrix .outline .r .value
618- is eq4 .time_slice [1 ].contour_tree .node [1 ].levelset .r .value
628+ slice1_outline_r = eq342 .time_slice [1 ].boundary_separatrix .outline .r .value
629+ assert slice1_outline_r is eq4 .time_slice [1 ].contour_tree .node [1 ].levelset .r .value
630+
631+ # deepcopy should create a copy of the numpy arrays
632+ eq4_cp = convert_ids (eq342 , "4.0.0" , deepcopy = True )
633+ assert not numpy .may_share_memory (
634+ slice1_outline_r , eq4_cp .time_slice [1 ].contour_tree .node [1 ].levelset .r .value
619635 )
0 commit comments