@@ -664,6 +664,9 @@ def insert_node(
664664 elif factor is None and location is not None :
665665 assert location is not None
666666 location_vertex = Vertex (location )
667+ length1 = (location_vertex - element_to_split .vertex_1 ).modulus ()
668+ length2 = (element_to_split .vertex_2 - location_vertex ).modulus ()
669+ factor = length1 / (length1 + length2 )
667670 else :
668671 raise FEMException (
669672 "Invalid parameters" ,
@@ -713,18 +716,26 @@ def insert_node(
713716
714717 # Copy the q-loads from the old element to the new elements
715718 if element_id_to_split in self .loads_q :
719+ q_load_start = element_to_split .q_load [0 ]
720+ q_load_end = element_to_split .q_load [1 ]
721+ q_perp_load_start = element_to_split .q_perp_load [0 ]
722+ q_perp_load_end = element_to_split .q_perp_load [1 ]
723+ location_q_load = factor * (q_load_end - q_load_start ) + q_load_start
724+ location_q_perp_load = (
725+ factor * (q_perp_load_end - q_perp_load_start ) + q_perp_load_start
726+ )
716727 assert element_to_split .q_angle is not None
717728 self .q_load (
718- q = element_to_split . q_load ,
729+ q = [ - q_load_start , - location_q_load ] ,
719730 element_id = element_id1 ,
720- rotation = np .degrees (np . pi + element_to_split .q_angle ),
721- q_perp = element_to_split . q_perp_load ,
731+ rotation = np .degrees (element_to_split .q_angle ),
732+ q_perp = [ q_perp_load_start , location_q_perp_load ] ,
722733 )
723734 self .q_load (
724- q = element_to_split . q_load ,
735+ q = [ - location_q_load , - q_load_end ] ,
725736 element_id = element_id2 ,
726- rotation = np .degrees (np . pi + element_to_split .q_angle ),
727- q_perp = element_to_split . q_perp_load ,
737+ rotation = np .degrees (element_to_split .q_angle ),
738+ q_perp = [ location_q_perp_load , q_perp_load_end ] ,
728739 )
729740
730741 # Remove the old element from everywhere it's referenced
0 commit comments