/out,rslotsta,out
fini
/prep7
/uis,msgpop,3
_error=0
/nerr,1,1e6
*get,_mod_id,parm,stat_id,type
*if,_mod_id,eq,3,then
*if,stat_id,ne,'rslotsta',then
/nerr,1,1e6
/out
*msg,error,stat_id
The model type ( %c ) does not correspond to a slotted stator
/out,rslotsta,out,,append
_error=1
*endif
*else
/out
_error=1
*msg,error
The model type identifier specified is not a "character" type parameter&
or it was not specified
/out,rslotsta,out,,append
*endif
/nerr,0,1e6
*if,_error,eq,1,:err
/nerr,1,-1
_error=0
_nm_vn=7
*set,_nm_vv
*dim,_nm_vv,,_nm_vn
_nm_vv(1)=r3,r4,r5,spc,tr1,nsp,gap
*set,_nm_v
*dim,_nm_v,char,_nm_vn
_nm_v(1)='r3','r4','r5','spc','tr1','nsp','gap'
*do,_i,1,_nm_vn
*if,_nm_vv(_i),eq,0,then
*if,_i,ne,6,then
*msg,error,_nm_v(_i)
Parameter { %c } is negative or zero.
_error=_error+1
*endif
*endif
*enddo
*if,_nm_vv(6),lt,0,then
*msg,error,_nm_v(6)
Parameter { %c } is negative.
_error=_error+1
*endif
*if,_error,eq,0,then
*if,r5,lt,r4,then
_error=_error+1
*msg,error
The backiron outer radius must be larger than the back&
iron inner radius
*endif
*if,r4,lt,r3,then
_error=_error+1
*msg,error
The backiron inner radius must be larger than the tooth&
face radius
*endif
*if,r4+rs,gt,r5,then
_error=_error+1
*msg,error
The backiron inner radius + rear slot radius must be&
smaller than the outer backiron radius.
*endif
*if,tht1,gt,90,then
_error=_error+1
*msg,error
The tooth angle (THT1) is equal to or greater than 90.
*endif
*endif
*if,_error,eq,0,then
/nerr,0,1e4
*if,arg2,eq,0,then
arg2=2
*endif
_cd1=1
*get,_elmtyp,etyp,,num,max
*if,_elmtyp,eq,0,then
_elmtyp=1
*endif
_elctyp=_elmtyp+1
*if,arg3,eq,0,then
et,_elmtyp,13
*else
et,_elmtyp,53
*endif
*if,arg5,eq,0,then
et,_elctyp,13
*else
et,_elctyp,53
*endif
*if,arg6,eq,1,then
et,_elctyp,53,3
*endif
*if,gen_app,eq,1,then
ncons=1
*endif
immed
esel,none
nsel,none
asel,none
ksel,none
lsel,none
cmsel,,stator
cedel,all,,,any
cpdel,all,,,any
ddel,all,all
acle,all
adel,all,,,1
ldel,all,,,1
kdel,all
edel,all
ndel,all
numc,elem
numc,node
esel,all
*get,_elmx,elem,,num,max
_rl_strt=0
*if,_elmx,ne,0,then
*set,_mskv
*dim,_mskv,,_elmx
*vget,_mskv(1),elem,1,esel
*set,_r_e
*dim,_r_e,,_elmx
*vmask,_mskv(1)
*vget,_r_e(1),elem,1,attr,real
*vmask,_mskv(1)
*vscfun,_rl_strt,max,_r_e(1)
_zz=100*nint(_rl_strt/100)
*if,_zz,lt,_rl_strt,then
_rl_strt=_zz+51
*else
_rl_strt=_zz
*endif
_zz=
_rl_strt=0
*set,_mskv
*set,_r_e
esel,none
*endif
_mxkp=22
*set,_kp_n_
*dim,_kp_n,,_mxkp
_60=180
*set,_x
*dim,_x,,_mxkp
*set,_y
*dim,_y,,_mxkp
*afun,deg
_x(1)=r3-gap/2
_y(1)=0
_tht2=180/nsp
_tht4=180/nsp-asin(spc/2/r3)
_x(2)=(r3-gap/2)*cos(_tht2)
_y(2)=(r3-gap/2)*sin(_tht2)
_x(3)=r3
_y(3)=0
_x(4)=r3*cos(_tht4)
_y(4)=r3*sin(_tht4)
_x(5)=r3*cos(_tht2)
_y(5)=r3*sin(_tht2)
_x(8)=_x(4)+tr1*cos(_tht4+tht1)
_y(8)=_y(4)+tr1*sin(_tht4+tht1)
_rd8=sqrt(_x(8)**2+_y(8)**2)
_x(9)=_rd8*cos(_tht2)
_y(9)=_rd8*sin(_tht2)
_x(17)=r4*cos(_tht2)
_y(17)=r4*sin(_tht2)
_x(16)=_x(17)+sw/2*sin(_tht2)
_y(16)=_y(17)-sw/2*cos(_tht2)
_x(20)=(r4-sh)*cos(_tht2)
_y(20)=(r4-sh)*sin(_tht2)
_x(7)=_x(20)+sw/2*sin(_tht2)
_y(7)=_y(20)-sw/2*cos(_tht2)
_x(12)=(r4-sh/2-gt/2)*cos(_tht2)
_y(12)=(r4-sh/2-gt/2)*sin(_tht2)
_x(15)=(r4-sh/2+gt/2)*cos(_tht2)
_y(15)=(r4-sh/2+gt/2)*sin(_tht2)
_xq=.5*(_x(7)+_x(16))
_yq=.5*(_y(7)+_y(16))
_x(11)=_xq-gt/2*cos(_tht2)
_y(11)=_yq-gt/2*sin(_tht2)
_x(14)=_xq+gt/2*cos(_tht2)
_y(14)=_yq+gt/2*sin(_tht2)
_x(10)=_x(11)
_x(13)=_x(14)
_y(10)=0
_y(13)=0
_y(6)=0
_x(6)=_x(7)
*if,rbc,le,0,then
rbc=r3-gap/2
*endif
_x(21)=rbc*cos(_tht4)
_y(21)=rbc*sin(_tht4)
_x(18)=r5
_y(18)=0
_x(19)=r5*cos(_tht2)
_y(19)=r5*sin(_tht2)
_x(22)=_x(16)
_y(22)=0
csys
ksel,none
*do,_ikp,1,_mxkp
/gopr
k,,_x(_ikp),_y(_ikp)
_kp_n(_ikp)=kp(_x(_ikp),_y(_ikp),0)
*enddo
cm,sta_k,kp
asel,none
cm,sta_a,area
lsel,none
csys,1
l,_kp_n(3),_kp_n(4)
csys
l,_kp_n(4),_kp_n(8)
l,_kp_n(7),_kp_n(8)
l,_kp_n(3),_kp_n(6)
l,_kp_n(6),_kp_n(7)
al,all
aatt,5,5,_elmtyp
cm,sta_a,area
asel,none
ksel,,,,_kp_n(7)
ksel,a,,,_kp_n(6)
ksel,a,,,_kp_n(10)
ksel,a,,,_kp_n(11)
ksel,a,,,_kp_n(13)
ksel,a,,,_kp_n(14)
ksel,a,,,_kp_n(16)
ksel,a,,,_kp_n(22)
lslk,,1
csys
a,_kp_n(6),_kp_n(7),_kp_n(11),_kp_n(10)
a,_kp_n(10),_kp_n(11),_kp_n(14),_kp_n(13)
a,_kp_n(13),_kp_n(14),_kp_n(16),_kp_n(22)
aatt,5,5,_elmtyp
cmsel,a,sta_a
cm,sta_a,area
ksel,all
lsel,none
asel,none
csys,1
ksel,,,,_kp_n(16)
ksel,a,,,_kp_n(17)
ksel,a,,,_kp_n(19)
ksel,a,,,_kp_n(18)
ksel,a,,,_kp_n(22)
l,_kp_n(16),_kp_n(17)
lslk,,1
a,_kp_n(22),_kp_n(16),_kp_n(17),_kp_n(19),_kp_n(18)
aatt,5,5,_elmtyp
cmsel,a,sta_a
cm,sta_a,area
lsel,none
asel,none
ksel,all
a,_kp_n(7),_kp_n(20),_kp_n(12),_kp_n(11)
*get,_armx1,area,,num,max
asel,none
a,_kp_n(11),_kp_n(12),_kp_n(15),_kp_n(14)
*get,_armx2,area,,num,max
asel,none
a,_kp_n(14),_kp_n(15),_kp_n(17),_kp_n(16)
*get,_armx3,area,,num,max
asel,a,,,_armx1
asel,a,,,_armx2
cmsel,a,sta_a
cm,sta_a,area
*if,ncons,eq,1,then
asel,,,,_armx1
asel,a,,,_armx2
asel,a,,,_armx3
aatt,6,1+_rl_strt,_elctyp
*else
asel,,,,_armx1
aatt,6,1+_rl_strt,_elctyp
asel,,,,_armx3
aatt,6,2+_rl_strt,_elctyp
*endif
asel,,,,_armx2
aatt,1,6,_elmtyp
ksel,all
asel,none
csys,1
l,_kp_n(1),_kp_n(21)
l,_kp_n(21),_kp_n(2)
l,_kp_n(2),_kp_n(5)
l,_kp_n(5),_kp_n(4)
l,_kp_n(21),_kp_n(4)
l,_kp_n(1),_kp_n(2)
asel,none
a,_kp_n(1),_kp_n(21),_kp_n(4),_kp_n(3)
a,_kp_n(21),_kp_n(2),_kp_n(5),_kp_n(4)
*get,_argp1,area,,num,min
*get,_argp2,area,,num,max
aatt,1,6,_elmtyp
cmsel,a,sta_a
cm,sta_a,area
asel,none
a,_kp_n(4),_kp_n(5),_kp_n(9),_kp_n(8)
a,_kp_n(7),_kp_n(8),_kp_n(9),_kp_n(20)
aatt,1,6,_elmtyp
cmsel,a,sta_a
cm,sta_a,area
*set,_gapd
*dim,_gapd,,5
_gapd(1)=1,2,3,4,5
*set,_asprg
*dim,_asprg,,5
_asprg(1)=3,2,1,1,1
*set,_kpz1
*dim,_kpz1,,5
_kpz1(1)=3,2.5,1.5,1.2,1
*set,_kpz2
*dim,_kpz2,,5
_kpz2(1)=7,6,5,3,2
*set,_kpz3
*dim,_kpz3,,5
_kpz3(1)=10,8,4,2,2
*set,_kpz4
*dim,_kpz4,,5
_kpz3(1)=3,1.4,1.2,1.,.8
/gopr
ksel,,,,_kp_n(1)
ksel,a,,,_kp_n(21)
lslk,,1
lesi,all,1*_asprg(arg2)*gap/_gapd(arg2)
*get,_lsmx1,line,,num,max
*get,_ldv1,line,_lsmx1,attr,ndiv
*get,_lnga,line,_lsmx1,leng
_se_gp=_lnga/_ldv1
llis
ksel,,,,_kp_n(2)
ksel,a,,,_kp_n(21)
lslk,,1
lesi,all,.5*_asprg(arg2)*gap/_gapd(arg2)
*get,_lsmx2,line,,num,max
*get,_ldv2,line,_lsmx2,attr,ndiv
ksel,,,,_kp_n(4)
ksel,a,,,_kp_n(3)
lslk,,1
lesi,all,,,_ldv1
ksel,,,,_kp_n(4)
ksel,a,,,_kp_n(5)
lslk,,1
lesi,all,,,_ldv2,,1
ksel,,,,_kp_n(1)
ksel,a,,,_kp_n(3)
lslk,,1
lesi,all,,,_gapd(arg2),,1
ksel,,,,_kp_n(21)
ksel,a,,,_kp_n(4)
lslk,,1
lesi,all,,,_gapd(arg2),,1
ksel,,,,_kp_n(2)
ksel,a,,,_kp_n(5)
lslk,,1
lesi,all,,,_gapd(arg2),,1
ksel,,,,_kp_n(9)
ksel,a,,,_kp_n(10)
lslk,,1
lesi,all,_asprg(arg2)*gap/_gapd(arg2)
ksel,,,,_kp_n(9)
ksel,a,,,_kp_n(5)
lslk,,1
lesi,all,_asprg(arg2)*gap/_gapd(arg2)
ksel,,,,_kp_n(4)
ksel,a,,,_kp_n(10)
lslk,,1
lesi,all,_asprg(arg2)*gap/_gapd(arg2)
ksel,,,,_kp_n(13)
ksel,a,,,_kp_n(10)
lslk,,1
lesi,all,,,1,,1
ksel,,,,_kp_n(11)
ksel,a,,,_kp_n(14)
lslk,,1
lesi,all,,,1,,1
ksel,,,,_kp_n(12)
ksel,a,,,_kp_n(15)
lslk,,1
lesi,all,,,1,,1
cmsel,,sta_a
lsla
ksll
kesi,_kp_n(6),_se_gp*_kpz1(arg2)
kesi,_kp_n(7),_se_gp*_kpz1(arg2)
kesi,_kp_n(9),_se_gp*_kpz1(arg2)
kesi,_kp_n(20),_se_gp*_kpz1(arg2)
kesi,_kp_n(10),_se_gp*_kpz1(arg2)*1.2
kesi,_kp_n(11),_se_gp*_kpz1(arg2)*1.2
kesi,_kp_n(12),_se_gp*_kpz1(arg2)*1.2
kesi,_kp_n(13),_se_gp*_kpz1(arg2)
kesi,_kp_n(14),_se_gp*_kpz1(arg2)
kesi,_kp_n(15),_se_gp*_kpz1(arg2)
kesi,_kp_n(16),_se_gp*_kpz1(arg2)*2
kesi,_kp_n(17),_se_gp*_kpz1(arg2)
kesi,_kp_n(18),_se_gp*_kpz1(arg2)*2.5
kesi,_kp_n(19),_se_gp*_kpz1(arg2)*2.5
kesi,_kp_n(22),_se_gp*_kpz1(arg2)*2
_gap_d=gap/_gapd(arg2)
esha
cmsel,,sta_a
_alrms=0
*if,arg3,eq,0,then
asel,,,_argp1
asel,a,,,_argp2
esha,2
ames,all
esha
_alrms=1
cmsel,,sta_a
esha
asel,r,type,,_elmtyp
ames,all
*endif
*if,arg5,eq,0,then
asel,r,type,,_elctyp
ames,all
*endif
cmsel,,sta_a
*if,_alrms,eq,0,then
asel,,,_argp1
asel,a,,,_argp2
esha,2
ames,all
*endif
esha
ames,all
cmsel,,sta_a
esla
nsle
lsla
ksll
cm,sta_l,line
cm,sta_e,elem
cm,sta_n,node
cmgrp,stator,sta_e,sta_n,sta_a,sta_l,sta_k
dsys
esel,r,mat,,6
cm,s_coil,elem
cmsel,,stator
*if,arg4,ne,0,then
polegen,arg4,gen_app,'s_coil',0,1,'stator',2,ggeom
*endif
cmsel,,stator
csys,1
nsel,,ext
*get,_rdmx,node,,mxloc,x
nsel,r,loc,x,_rdmx-.0001,_rdmx+.0001
d,all,az
/pbc,a,1
cmsel,,stator
csys
*get,_xmn,node,,mnloc,x
*get,_xmx,node,,mxloc,x
*get,_ymn,node,,mnloc,y
*get,_ymx,node,,mxloc,y
_dify=_ymx-_ymn
_difx=_xmx-_xmn
_eify=_ymx+_ymn
_eifx=_xmx+_xmn
_rmx=_dify
*if,_difx,gt,_dify,then
_rmx=_difx
*endif
/foc,1,_eifx/2,_eify/2
/dis,1,1.05*_rmx/2
_xmn= $ _xmx= $ _ymn= $ _ymx= $ _dify=
_difx= $ _eifx= $ _eify=
/pnum,mat,1
/num,1
eplo
immed,1
cmsel,,stator
esel,r,mat,,5
cm,s_iron,elem
cmsel,,stator
:end
:err
/out