@@ -3776,91 +3776,92 @@ def __mutual_inductance(
37763776 """
37773777
37783778 jj = np .r_ [ii + 1 : self .total_elements_current_carriers ]
3779- ll = lmod [jj ]
3780- mm = lmod [ii ]
3781- len_jj = self .total_elements_current_carriers - (ii + 1 )
3782- rr = dict (
3783- end_end = np .zeros (len_jj ),
3784- end_start = np .zeros (len_jj ),
3785- start_start = np .zeros (len_jj ),
3786- start_end = np .zeros (len_jj ),
3787- )
3788-
3789- for key in rr .keys ():
3790- rr [key ] = self .__vertex_to_vertex_distance (key , ii , jj )
3791- # End for key
3792-
3793- # Additional parameters
3794- alpha2 = (
3795- rr ["start_end" ] ** 2
3796- - rr ["start_start" ] ** 2
3797- + rr ["end_start" ] ** 2
3798- - rr ["end_end" ] ** 2
3799- )
3779+ # ll = lmod[jj]
3780+ # mm = lmod[ii]
3781+ # len_jj = self.total_elements_current_carriers - (ii + 1)
3782+ # rr = dict(
3783+ # end_end=np.zeros(len_jj),
3784+ # end_start=np.zeros(len_jj),
3785+ # start_start=np.zeros(len_jj),
3786+ # start_end=np.zeros(len_jj),
3787+ # )
38003788
3801- cos_eps = np .minimum (np .maximum (alpha2 / (2 * ll * mm ), - 1.0 ), 1.0 )
3802- sin_eps = np .sin (np .arccos (cos_eps ))
3789+ # for key in rr.keys():
3790+ # rr[key] = self.__vertex_to_vertex_distance(key, ii, jj)
3791+ # # End for key
38033792
3804- dd = 4 * ll ** 2 * mm ** 2 - alpha2 ** 2
3805- mu = (
3806- ll
3807- * (
3808- 2 * mm ** 2 * (rr ["end_start" ] ** 2 - rr ["start_start" ] ** 2 - ll ** 2 )
3809- + alpha2 * (rr ["start_end" ] ** 2 - rr ["start_start" ] ** 2 - mm ** 2 )
3810- )
3811- / dd
3812- )
3813- nu = (
3814- mm
3815- * (
3816- 2 * ll ** 2 * (rr ["start_end" ] ** 2 - rr ["start_start" ] ** 2 - mm ** 2 )
3817- + alpha2 * (rr ["end_start" ] ** 2 - rr ["start_start" ] ** 2 - ll ** 2 )
3818- )
3819- / dd
3820- )
3821- d2 = rr ["start_start" ] ** 2 - mu ** 2 - nu ** 2 + 2 * mu * nu * cos_eps
3822-
3823- # avoid rounding for segments in a plane
3824- d2 [d2 < abstol ** 2 ] = 0
3825- d0 = np .sqrt (d2 )
3793+ # # Additional parameters
3794+ # alpha2 = (
3795+ # rr["start_end"] ** 2
3796+ # - rr["start_start"] ** 2
3797+ # + rr["end_start"] ** 2
3798+ # - rr["end_end"] ** 2
3799+ # )
38263800
3827- # solid angles
3828- omega = (
3829- np .arctan (
3830- (d2 * cos_eps + (mu + ll ) * (nu + mm ) * sin_eps ** 2 )
3831- / (d0 * rr ["end_end" ] * sin_eps )
3832- )
3833- - np .arctan (
3834- (d2 * cos_eps + (mu + ll ) * nu * sin_eps ** 2 )
3835- / (d0 * rr ["end_start" ] * sin_eps )
3836- )
3837- + np .arctan (
3838- (d2 * cos_eps + mu * nu * sin_eps ** 2 )
3839- / (d0 * rr ["start_start" ] * sin_eps )
3840- )
3841- - np .arctan (
3842- (d2 * cos_eps + mu * (nu + mm ) * sin_eps ** 2 )
3843- / (d0 * rr ["start_end" ] * sin_eps )
3844- )
3845- )
3846- omega [d0 == 0.0 ] = 0.0
3801+ # cos_eps = np.minimum(np.maximum(alpha2 / (2 * ll * mm), -1.0), 1.0)
3802+ # sin_eps = np.sin(np.arccos(cos_eps))
3803+
3804+ # dd = 4 * ll ** 2 * mm ** 2 - alpha2 ** 2
3805+ # mu = (
3806+ # ll
3807+ # * (
3808+ # 2 * mm ** 2 * (rr["end_start"] ** 2 - rr["start_start"] ** 2 - ll ** 2)
3809+ # + alpha2 * (rr["start_end"] ** 2 - rr["start_start"] ** 2 - mm ** 2)
3810+ # )
3811+ # / dd
3812+ # )
3813+ # nu = (
3814+ # mm
3815+ # * (
3816+ # 2 * ll ** 2 * (rr["start_end"] ** 2 - rr["start_start"] ** 2 - mm ** 2)
3817+ # + alpha2 * (rr["end_start"] ** 2 - rr["start_start"] ** 2 - ll ** 2)
3818+ # )
3819+ # / dd
3820+ # )
3821+ # d2 = rr["start_start"] ** 2 - mu ** 2 - nu ** 2 + 2 * mu * nu * cos_eps
3822+
3823+ # # avoid rounding for segments in a plane
3824+ # d2[d2 < abstol ** 2] = 0
3825+ # d0 = np.sqrt(d2)
3826+
3827+ # # solid angles
3828+ # omega = (
3829+ # np.arctan(
3830+ # (d2 * cos_eps + (mu + ll) * (nu + mm) * sin_eps ** 2)
3831+ # / (d0 * rr["end_end"] * sin_eps)
3832+ # )
3833+ # - np.arctan(
3834+ # (d2 * cos_eps + (mu + ll) * nu * sin_eps ** 2)
3835+ # / (d0 * rr["end_start"] * sin_eps)
3836+ # )
3837+ # + np.arctan(
3838+ # (d2 * cos_eps + mu * nu * sin_eps ** 2)
3839+ # / (d0 * rr["start_start"] * sin_eps)
3840+ # )
3841+ # - np.arctan(
3842+ # (d2 * cos_eps + mu * (nu + mm) * sin_eps ** 2)
3843+ # / (d0 * rr["start_end"] * sin_eps)
3844+ # )
3845+ # )
3846+ # omega[d0 == 0.0] = 0.0
38473847
3848- # contribution
3849- pp = np .zeros ((len_jj , 5 ), dtype = float )
3850- pp [:, 0 ] = (ll + mu ) * np .arctanh (mm / (rr ["end_end" ] + rr ["end_start" ]))
3851- pp [:, 1 ] = - nu * np .arctanh (ll / (rr ["end_start" ] + rr ["start_start" ]))
3852- pp [:, 2 ] = (mm + nu ) * np .arctanh (ll / (rr ["end_end" ] + rr ["start_end" ]))
3853- pp [:, 3 ] = - mu * np .arctanh (mm / (rr ["start_start" ] + rr ["start_end" ]))
3854- pp [:, 4 ] = d0 * omega / sin_eps
3848+ # # contribution
3849+ # pp = np.zeros((len_jj, 5), dtype=float)
3850+ # pp[:, 0] = (ll + mu) * np.arctanh(mm / (rr["end_end"] + rr["end_start"]))
3851+ # pp[:, 1] = -nu * np.arctanh(ll / (rr["end_start"] + rr["start_start"]))
3852+ # pp[:, 2] = (mm + nu) * np.arctanh(ll / (rr["end_end"] + rr["start_end"]))
3853+ # pp[:, 3] = -mu * np.arctanh(mm / (rr["start_start"] + rr["start_end"]))
3854+ # pp[:, 4] = d0 * omega / sin_eps
38553855
3856- # filter odd cases (e.g. consecutive segments)
3857- pp [np .isnan (pp )] = 0.0
3858- pp [np .isinf (pp )] = 0.0
3856+ # # filter odd cases (e.g. consecutive segments)
3857+ # pp[np.isnan(pp)] = 0.0
3858+ # pp[np.isinf(pp)] = 0.0
38593859
38603860 # Mutual inductances
38613861 matrix [ii , jj ] = (
3862- 2 * cos_eps * (pp [:, 0 ] + pp [:, 1 ] + pp [:, 2 ] + pp [:, 3 ])
3863- - cos_eps * pp [:, 4 ]
3862+ 5.0e-8 # Mutual inductance imposed by Zappatore input file
3863+ # 2 * cos_eps * (pp[:, 0] + pp[:, 1] + pp[:, 2] + pp[:, 3])
3864+ # - cos_eps * pp[:, 4]
38643865 )
38653866 return matrix
38663867
@@ -3920,23 +3921,24 @@ def __self_inductance_mode1(self, lmod: np.ndarray) -> np.ndarray:
39203921
39213922 for ii , obj in enumerate (self .inventory ["StrandComponent" ].collection ):
39223923 self_inductance [ii :: self .inventory ["StrandComponent" ].number ] = (
3923- 2
3924- * lmod [ii :: self .inventory ["StrandComponent" ].number ]
3925- * (
3926- np .arcsinh (
3927- lmod [ii :: self .inventory ["StrandComponent" ].number ]
3928- / obj .radius
3929- )
3930- - np .sqrt (
3931- 1.0
3932- + (
3933- obj .radius
3934- / lmod [ii :: self .inventory ["StrandComponent" ].number ]
3935- )
3936- ** 2
3937- )
3938- + obj .radius / lmod [ii :: self .inventory ["StrandComponent" ].number ]
3939- )
3924+ 1.0e-7
3925+ # 2
3926+ # * lmod[ii :: self.inventory["StrandComponent"].number]
3927+ # * (
3928+ # np.arcsinh(
3929+ # lmod[ii :: self.inventory["StrandComponent"].number]
3930+ # / obj.radius
3931+ # )
3932+ # - np.sqrt(
3933+ # 1.0
3934+ # + (
3935+ # obj.radius
3936+ # / lmod[ii :: self.inventory["StrandComponent"].number]
3937+ # )
3938+ # ** 2
3939+ # )
3940+ # + obj.radius / lmod[ii :: self.inventory["StrandComponent"].number]
3941+ # )
39403942 )
39413943 return self_inductance
39423944
@@ -3953,25 +3955,26 @@ def __self_inductance_mode2(self, lmod: np.ndarray) -> np.ndarray:
39533955 for ii , obj in enumerate (self .inventory ["StrandComponent" ].collection ):
39543956
39553957 self_inductance [ii :: self .inventory ["StrandComponent" ].number ] = (
3956- 2 * (
3957- lmod [ii :: self .inventory ["StrandComponent" ].number ]
3958- * np .log (
3959- (
3960- lmod [ii :: self .inventory ["StrandComponent" ].number ]
3961- + np .sqrt (
3962- lmod [ii :: self .inventory ["StrandComponent" ].number ] ** 2
3963- + obj .radius ** 2
3964- )
3965- )
3966- / obj .radius
3967- )
3968- - np .sqrt (
3969- lmod [ii :: self .inventory ["StrandComponent" ].number ] ** 2
3970- + obj .radius ** 2
3971- )
3972- + lmod [ii :: self .inventory ["StrandComponent" ].number ] / 4
3973- + obj .radius
3974- ))
3958+ 1.0e-7
3959+ # 2 * (
3960+ # lmod[ii :: self.inventory["StrandComponent"].number]
3961+ # * np.log(
3962+ # (
3963+ # lmod[ii :: self.inventory["StrandComponent"].number]
3964+ # + np.sqrt(
3965+ # lmod[ii :: self.inventory["StrandComponent"].number] ** 2
3966+ # + obj.radius ** 2
3967+ # )
3968+ # )
3969+ # / obj.radius
3970+ # )
3971+ # - np.sqrt(
3972+ # lmod[ii :: self.inventory["StrandComponent"].number] ** 2
3973+ # + obj.radius ** 2
3974+ # )
3975+ # + lmod[ii :: self.inventory["StrandComponent"].number] / 4
3976+ # + obj.radius
3977+ )
39753978
39763979 return self_inductance
39773980
0 commit comments