--Double rotor generator circuit for 3m diameter Hugh Piggott Wind Turbine newdocument(0) --Dimentions tp=0.073042029 --pole pitch cp=0.097389372 --coil pitch --Magnet size ml=0.046 mw=0.03 mh=0.01 --Air gap size al=ml aw=mw ah=0.01 --Coil size cl=0.07 cw=0.024 ch=0.012 cg=0.025 --coil gap --Rotor size rl=0.081 rw=(3*tp)+mw rh=0.01 --Materials mi_addmaterial("N42", 1.05, 1.05, 943000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) magnet="N42" rotor="416 Stainless Steel" wire="1.6mm" --Set up the magnetostatic analysis mi_probdef( 0, "meters", "planar", 1e-008, 0.8, 30, "succ.approx") --Draw Rotor(lower) mi_addnode(-0.5*(tp-mw),0) mi_addnode(-0.5*(tp-mw),rh) mi_addnode(rw+(0.5*(tp-mw)),0) mi_addnode(rw+(0.5*(tp-mw)),rh) mi_addsegment(-0.5*(tp-mw),0,-0.5*(tp-mw),rh) mi_addsegment(-0.5*(tp-mw),rh,rw+(0.5*(tp-mw)),rh) mi_addsegment(rw+(0.5*(tp-mw)),rh,rw+(0.5*(tp-mw)),0) mi_addsegment(rw+(0.5*(tp-mw)),0,-0.5*(tp-mw),0) --Draw Magnets(lower) mi_addnode(0,rh) mi_addnode(0,rh+mh) mi_addnode(mw,rh) mi_addnode(mw,rh+mh) mi_addsegment(0,rh,0,rh+mh) mi_addsegment(0,rh+mh,mw,rh+mh) mi_addsegment(mw,rh+mh,mw,rh) mi_addsegment(mw,rh,0,rh) mi_addnode(tp,rh) mi_addnode(tp,rh+mh) mi_addnode(tp+mw,rh) mi_addnode(tp+mw,rh+mh) mi_addsegment(tp,rh,tp,rh+mh) mi_addsegment(tp,rh+mh,tp+mw,rh+mh) mi_addsegment(tp+mw,rh+mh,tp+mw,rh) mi_addsegment(tp+mw,rh,tp,rh) mi_addnode(2*tp,rh) mi_addnode(2*tp,rh+mh) mi_addnode((2*tp)+mw,rh) mi_addnode((2*tp)+mw,rh+mh) mi_addsegment(2*tp,rh,2*tp,rh+mh) mi_addsegment(2*tp,rh+mh,(2*tp)+mw,rh+mh) mi_addsegment((2*tp)+mw,rh+mh,(2*tp)+mw,rh) mi_addsegment((2*tp)+mw,rh,2*tp,rh) mi_addnode(3*tp,rh) mi_addnode(3*tp,rh+mh) mi_addnode((3*tp)+mw,rh) mi_addnode((3*tp)+mw,rh+mh) mi_addsegment(3*tp,rh,3*tp,rh+mh) mi_addsegment(3*tp,rh+mh,(3*tp)+mw,rh+mh) mi_addsegment((3*tp)+mw,rh+mh,(3*tp)+mw,rh) mi_addsegment((3*tp)+mw,rh,3*tp,rh) --Draw Coils mi_addnode(0,rh+mh+ah) --1st set mi_addnode(0,rh+mh+ah+ch) mi_addnode(cw,rh+mh+ah) mi_addnode(cw,rh+mh+ah+ch) mi_addsegment(0,rh+mh+ah,0,rh+mh+ah+ch) mi_addsegment(0,rh+mh+ah+ch,cw,rh+mh+ah+ch) mi_addsegment(cw,rh+mh+ah+ch,cw,rh+mh+ah) mi_addsegment(cw,rh+mh+ah,0,rh+mh+ah) mi_addnode(cw+cg,rh+mh+ah) mi_addnode(cw+cg,rh+mh+ah+ch) mi_addnode((2*cw)+cg,rh+mh+ah) mi_addnode((2*cw)+cg,rh+mh+ah+ch) mi_addsegment(cw+cg,rh+mh+ah,cw+cg,rh+mh+ah+ch) mi_addsegment(cw+cg,rh+mh+ah+ch,(2*cw)+cg,rh+mh+ah+ch) mi_addsegment((2*cw)+cg,rh+mh+ah+ch,(2*cw)+cg,rh+mh+ah) mi_addsegment((2*cw)+cg,rh+mh+ah,cw+cg,rh+mh+ah) mi_addnode(cp,rh+mh+ah) --2nd set mi_addnode(cp,rh+mh+ah+ch) mi_addnode(cp+cw,rh+mh+ah) mi_addnode(cp+cw,rh+mh+ah+ch) mi_addsegment(cp,rh+mh+ah,cp,rh+mh+ah+ch) mi_addsegment(cp,rh+mh+ah+ch,cp+cw,rh+mh+ah+ch) mi_addsegment(cp+cw,rh+mh+ah+ch,cp+cw,rh+mh+ah) mi_addsegment(cp+cw,rh+mh+ah,cp,rh+mh+ah) mi_addnode(cp+cw+cg,rh+mh+ah) mi_addnode(cp+cw+cg,rh+mh+ah+ch) mi_addnode(cp+(2*cw)+cg,rh+mh+ah) mi_addnode(cp+(2*cw)+cg,rh+mh+ah+ch) mi_addsegment(cp+cw+cg,rh+mh+ah,cp+cw+cg,rh+mh+ah+ch) mi_addsegment(cp+cw+cg,rh+mh+ah+ch,cp+(2*cw)+cg,rh+mh+ah+ch) mi_addsegment(cp+(2*cw)+cg,rh+mh+ah+ch,cp+(2*cw)+cg,rh+mh+ah) mi_addsegment(cp+(2*cw)+cg,rh+mh+ah,cp+cw+cg,rh+mh+ah) mi_addnode((2*cp),rh+mh+ah) --3rd set mi_addnode((2*cp),rh+mh+ah+ch) mi_addnode((2*cp)+cw,rh+mh+ah) mi_addnode((2*cp)+cw,rh+mh+ah+ch) mi_addsegment((2*cp),rh+mh+ah,(2*cp),rh+mh+ah+ch) mi_addsegment((2*cp),rh+mh+ah+ch,(2*cp)+cw,rh+mh+ah+ch) mi_addsegment((2*cp)+cw,rh+mh+ah+ch,(2*cp)+cw,rh+mh+ah) mi_addsegment((2*cp)+cw,rh+mh+ah,(2*cp),rh+mh+ah) mi_addnode((2*cp)+cw+cg,rh+mh+ah) mi_addnode((2*cp)+cw+cg,rh+mh+ah+ch) mi_addnode((2*cp)+(2*cw)+cg,rh+mh+ah) mi_addnode((2*cp)+(2*cw)+cg,rh+mh+ah+ch) mi_addsegment((2*cp)+cw+cg,rh+mh+ah,(2*cp)+cw+cg,rh+mh+ah+ch) mi_addsegment((2*cp)+cw+cg,rh+mh+ah+ch,(2*cp)+(2*cw)+cg,rh+mh+ah+ch) mi_addsegment((2*cp)+(2*cw)+cg,rh+mh+ah+ch,(2*cp)+(2*cw)+cg,rh+mh+ah) mi_addsegment((2*cp)+(2*cw)+cg,rh+mh+ah,(2*cp)+cw+cg,rh+mh+ah) --Draw Magnets(upper) mi_addnode(0,rh+mh+ah+ch+ah) mi_addnode(0,rh+mh+ah+ch+ah+mh) mi_addnode(mw,rh+mh+ah+ch+ah) mi_addnode(mw,rh+mh+ah+ch+ah+mh) mi_addsegment(0,rh+mh+ah+ch+ah,mw,rh+mh+ah+ch+ah) mi_addsegment(mw,rh+mh+ah+ch+ah,mw,rh+mh+ah+ch+ah+mh) mi_addsegment(mw,rh+mh+ah+ch+ah+mh,0,rh+mh+ah+ch+ah+mh) mi_addsegment(0,rh+mh+ah+ch+ah+mh,0,rh+mh+ah+ch+ah) mi_addnode(tp,rh+mh+ah+ch+ah) mi_addnode(tp,rh+mh+ah+ch+ah+mh) mi_addnode(tp+mw,rh+mh+ah+ch+ah) mi_addnode(tp+mw,rh+mh+ah+ch+ah+mh) mi_addsegment(tp,rh+mh+ah+ch+ah,tp+mw,rh+mh+ah+ch+ah) mi_addsegment(tp+mw,rh+mh+ah+ch+ah,tp+mw,rh+mh+ah+ch+ah+mh) mi_addsegment(tp+mw,rh+mh+ah+ch+ah+mh,tp,rh+mh+ah+ch+ah+mh) mi_addsegment(tp,rh+mh+ah+ch+ah+mh,tp,rh+mh+ah+ch+ah) mi_addnode(2*tp,rh+mh+ah+ch+ah) mi_addnode(2*tp,rh+mh+ah+ch+ah+mh) mi_addnode((2*tp)+mw,rh+mh+ah+ch+ah) mi_addnode((2*tp)+mw,rh+mh+ah+ch+ah+mh) mi_addsegment(2*tp,rh+mh+ah+ch+ah,(2*tp)+mw,rh+mh+ah+ch+ah) mi_addsegment((2*tp)+mw,rh+mh+ah+ch+ah,(2*tp)+mw,rh+mh+ah+ch+ah+mh) mi_addsegment((2*tp)+mw,rh+mh+ah+ch+ah+mh,2*tp,rh+mh+ah+ch+ah+mh) mi_addsegment(2*tp,rh+mh+ah+ch+ah+mh,2*tp,rh+mh+ah+ch+ah) mi_addnode(3*tp,rh+mh+ah+ch+ah) mi_addnode(3*tp,rh+mh+ah+ch+ah+mh) mi_addnode((3*tp)+mw,rh+mh+ah+ch+ah) mi_addnode((3*tp)+mw,rh+mh+ah+ch+ah+mh) mi_addsegment(3*tp,rh+mh+ah+ch+ah,(3*tp)+mw,rh+mh+ah+ch+ah) mi_addsegment((3*tp)+mw,rh+mh+ah+ch+ah,(3*tp)+mw,rh+mh+ah+ch+ah+mh) mi_addsegment((3*tp)+mw,rh+mh+ah+ch+ah+mh,3*tp,rh+mh+ah+ch+ah+mh) mi_addsegment(3*tp,rh+mh+ah+ch+ah+mh,3*tp,rh+mh+ah+ch+ah) --Draw Rotor(upper) mi_addnode(-0.5*(tp-mw),rh+mh+ah+ch+ah+mh) mi_addnode(-0.5*(tp-mw),rh+mh+ah+ch+ah+mh+rh) mi_addnode(rw+(0.5*(tp-mw)),rh+mh+ah+ch+ah+mh) mi_addnode(rw+(0.5*(tp-mw)),rh+mh+ah+ch+ah+mh+rh) mi_addsegment(-0.5*(tp-mw),rh+mh+ah+ch+ah+mh,-0.5*(tp-mw),rh+mh+ah+ch+ah+mh+rh) mi_addsegment(-0.5*(tp-mw),rh+mh+ah+ch+ah+mh+rh,rw+(0.5*(tp-mw)),rh+mh+ah+ch+ah+mh+rh) mi_addsegment(rw+(0.5*(tp-mw)),rh+mh+ah+ch+ah+mh+rh,rw+(0.5*(tp-mw)),rh+mh+ah+ch+ah+mh) mi_addsegment(rw+(0.5*(tp-mw)),rh+mh+ah+ch+ah+mh,-0.5*(tp-mw),rh+mh+ah+ch+ah+mh) --Draw Air Boundaries mi_addnode(-0.5*(tp-mw),-0.15) mi_addnode(rw+0.5*(tp-mw),-0.15) mi_addnode(rw+0.5*(tp-mw),0.25) mi_addnode(-0.5*(tp-mw),0.25) mi_addsegment(-0.5*(tp-mw),rh+mh+ah+ch+ah+mh+rh,rw+0.5*(tp-mw),rh+mh+ah+ch+ah+mh+rh) mi_addsegment(rw+0.5*(tp-mw),rh+mh+ah+ch+ah+mh+rh,rw+0.5*(tp-mw),0.25) mi_addsegment(rw+0.5*(tp-mw),0.25,-0.5*(tp-mw),0.25) mi_addsegment(-0.5*(tp-mw),0.25,-0.5*(tp-mw),rh+mh+ah+ch+ah+mh+rh) mi_addsegment(-0.5*(tp-mw),0,rw+0.5*(tp-mw),0) mi_addsegment(rw+0.5*(tp-mw),0,rw+0.5*(tp-mw),-0.15) mi_addsegment(rw+0.5*(tp-mw),-0.15,-0.5*(tp-mw),-0.15) mi_addsegment(-0.5*(tp-mw),-0.15,-0.5*(tp-mw),0) mi_addsegment(-0.5*(tp-mw),rh,-0.5*(tp-mw),rh+mh+ah+ch+ah+mh) mi_addsegment(rw+0.5*(tp-mw),rh,rw+0.5*(tp-mw),rh+mh+ah+ch+ah+mh) --Add Materials mi_getmaterial("Air") --mi_getmaterial(magnet) mi_getmaterial(rotor) mi_getmaterial(wire) --Add Blocks mi_addblocklabel(0.5*mw,rh+(0.5*mh)) --magnets mi_addblocklabel(0.5*mw,rh+(1.5*mh)+(2*ah)+ch) mi_addblocklabel(tp+(0.5*mw),rh+(0.5*mh)) mi_addblocklabel(tp+(0.5*mw),rh+(1.5*mh)+(2*ah)+ch) mi_addblocklabel((2*tp)+(0.5*mw),rh+(0.5*mh)) mi_addblocklabel((2*tp)+(0.5*mw),rh+(1.5*mh)+(2*ah)+ch) mi_addblocklabel((3*tp)+(0.5*mw),rh+(0.5*mh)) mi_addblocklabel((3*tp)+(0.5*mw),rh+(1.5*mh)+(2*ah)+ch) mi_addblocklabel(0.5*cw,rh+mh+ah+(0.5*ch)) --coils mi_addblocklabel(cg+cw+(0.5*cw),rh+mh+ah+(0.5*ch)) mi_addblocklabel(cp+(0.5*cw),rh+mh+ah+(0.5*ch)) mi_addblocklabel(cg+cw+cp+(0.5*cw),rh+mh+ah+(0.5*ch)) mi_addblocklabel((2*cp)+(0.5*cw),rh+mh+ah+(0.5*ch)) mi_addblocklabel(cg+cw+(2*cp)+(0.5*cw),rh+mh+ah+(0.5*ch)) mi_addblocklabel(0.5*rw,0.5*rh) --iron mi_addblocklabel(0.5*rw,(1.5*rh)+(2*mh)+(2*ah)+ch) mi_addblocklabel(0.5*rw,0.18) --air mi_addblocklabel(0.16,rh+(1.2*mh)) mi_addblocklabel(0.5*rw,-0.075) --Label Blocks mi_selectlabel(0.5*rw,0.18) -- Air mi_setblockprop("Air",0,0,0,0,0,0) mi_clearselected() mi_selectlabel(0.16,rh+(1.2*mh)) mi_setblockprop("Air",0,0,0,0,0,0) mi_clearselected() mi_selectlabel(0.5*rw,-0.075) mi_setblockprop("Air",0,0,0,0,0,0) mi_clearselected() mi_selectlabel(0.5*rw,0.5*rh) -- Rotor mi_setblockprop(rotor,0,0,0,0,0,0) mi_clearselected() mi_selectlabel(0.5*rw,(1.5*rh)+(2*mh)+(2*ah)+ch) mi_setblockprop(rotor,0,0,0,0,0,0) mi_clearselected() mi_selectlabel(0.5*cw,rh+mh+ah+(0.5*ch)) --Coils mi_setblockprop(wire,0,0,0,0,0,0) mi_clearselected() mi_selectlabel(cg+cw+(0.5*cw),rh+mh+ah+(0.5*ch)) mi_setblockprop(wire,0,0,0,0,0,0) mi_clearselected() mi_selectlabel(cp+(0.5*cw),rh+mh+ah+(0.5*ch)) mi_setblockprop(wire,0,0,0,0,0,0) mi_clearselected() mi_selectlabel(cg+cw+cp+(0.5*cw),rh+mh+ah+(0.5*ch)) mi_setblockprop(wire,0,0,0,0,0,0) mi_clearselected() mi_selectlabel((2*cp)+(0.5*cw),rh+mh+ah+(0.5*ch)) mi_setblockprop(wire,0,0,0,0,0,0) mi_clearselected() mi_selectlabel(cg+cw+(2*cp)+(0.5*cw),rh+mh+ah+(0.5*ch)) mi_setblockprop(wire,0,0,0,0,0,0) mi_clearselected() mi_selectlabel(0.5*mw,rh+(0.5*mh)) --Magnets mi_setblockprop(magnet,0,0,0,90,0,0) mi_clearselected() mi_selectlabel(0.5*mw,rh+(1.5*mh)+(2*ah)+ch) mi_setblockprop(magnet,0,0,0,90,0,0) mi_clearselected() mi_selectlabel(tp+(0.5*mw),rh+(0.5*mh)) mi_setblockprop(magnet,0,0,0,270,0,0) mi_clearselected() mi_selectlabel(tp+(0.5*mw),rh+(1.5*mh)+(2*ah)+ch) mi_setblockprop(magnet,0,0,0,270,0,0) mi_clearselected() mi_selectlabel((2*tp)+(0.5*mw),rh+(0.5*mh)) mi_setblockprop(magnet,0,0,0,90,0,0) mi_clearselected() mi_selectlabel((2*tp)+(0.5*mw),rh+(1.5*mh)+(2*ah)+ch) mi_setblockprop(magnet,0,0,0,90,0,0) mi_clearselected() mi_selectlabel((3*tp)+(0.5*mw),rh+(0.5*mh)) mi_setblockprop(magnet,0,0,0,270,0,0) mi_clearselected() mi_selectlabel((3*tp)+(0.5*mw),rh+(1.5*mh)+(2*ah)+ch) mi_setblockprop(magnet,0,0,0,270,0,0) mi_clearselected() -- Create Boundaries mi_addboundprop(periodicairu, 0, 0, 0, 0, 0, 0, 0, 0, 4) mi_addboundprop(periodicrotu, 0, 0, 0, 0, 0, 0, 0, 0, 4) mi_addboundprop(periodicairm, 0, 0, 0, 0, 0, 0, 0, 0, 4) mi_addboundprop(periodicrotl, 0, 0, 0, 0, 0, 0, 0, 0, 4) mi_addboundprop(periodicairl, 0, 0, 0, 0, 0, 0, 0, 0, 4) --Label Boundaries mi_selectsegment(-0.5*(tp-mw),0.25,-0.5*(tp-mw),rh+mh+ah+ch+ah+mh+rh) --left side mi_setsegmentprop('periodicairu',0,1,0,0) mi_clearselected() mi_selectsegment(-0.5*(tp-mw),rh+mh+ah+ch+ah+mh,-0.5*(tp-mw),rh+mh+ah+ch+ah+mh+rh) mi_setsegmentprop('periodicrotu',0,1,0,0) mi_clearselected() mi_selectsegment(-0.5*(tp-mw),rh,-0.5*(tp-mw),rh+mh+ah+ch+ah+mh) mi_setsegmentprop('periodicairm',0,1,0,0) mi_clearselected() mi_selectsegment(-0.5*(tp-mw),0,-0.5*(tp-mw),rh) mi_setsegmentprop('periodicrotl',0,1,0,0) mi_clearselected() mi_selectsegment(-0.5*(tp-mw),-0.15,-0.5*(tp-mw),0) mi_setsegmentprop('periodicairl',0,1,0,0) mi_clearselected() mi_selectsegment(rw+0.5*(tp-mw),0.25,rw+0.5*(tp-mw),rh+mh+ah+ch+ah+mh+rh) --right side mi_setsegmentprop('periodicairu',0,1,0,0) mi_clearselected() mi_selectsegment(rw+0.5*(tp-mw),rh+mh+ah+ch+ah+mh,rw+0.5*(tp-mw),rh+mh+ah+ch+ah+mh+rh) mi_setsegmentprop('periodicrotu',0,1,0,0) mi_clearselected() mi_selectsegment(rw+0.5*(tp-mw),rh,rw+0.5*(tp-mw),rh+mh+ah+ch+ah+mh) mi_setsegmentprop('periodicairm',0,1,0,0) mi_clearselected() mi_selectsegment(rw+0.5*(tp-mw),0,rw+0.5*(tp-mw),rh) mi_setsegmentprop('periodicrotl',0,1,0,0) mi_clearselected() mi_selectsegment(rw+0.5*(tp-mw),-0.15,rw+0.5*(tp-mw),0) mi_setsegmentprop('periodicairl',0,1,0,0) mi_clearselected()