Multiphysics - Zugriff auf die Module ME und TH

Das Beispiel zeigt die Verwendung von Funktionen aus verschiedenen Modulen. Die exe-Dateien von FEMAG-ME und FEMAG-TH liegen in den Verzeichnissen “C:/FEMAG/FEMAG-ME/” bzw. “C:/FEMAG/FEMAG-TH/”. Für die einwandfreie Funktion muss das Skript aus FEMAG-DC heraus gestartet werden.

Skript-Datei


--[[
Modell eines BLDC-Motor mit Oberflaechenmagneten
Script erzeugen das Modell und führt daran
magnetische, mechanische und thermische
Berechnungen durch.
--]]
---------------------------------------------
-- Allgemeine Einstellungen -----------------
---------------------------------------------

exit_on_error = false       -- Verhalten nach Fehler
exit_on_end = false         -- Verhalten nach Skriptausfuehrung
verbosity = 2               -- Grad der Bildschirmmeldungen

---------------------------------------------
-- Zugriff auf externe Module ---------------
---------------------------------------------

--point_to_dc("wfemagw64.exe")                    -- Zugriff auf Funktionen von FEMAG-DC
point_to_me("C:/FEMAG/FEMAG-ME/wmefemag64.exe") -- Zugriff auf Funktionen von FEMAG-ME
point_to_th("C:/FEMAG/FEMAG-TH/wthfemag64.exe") -- Zugriff auf Funktionen von FEMAG-TH

---------------------------------------------
-- Modellerstellung -------------------------
---------------------------------------------

model_name = "test_access"
comment = "BLDC with surface magnets"
new_model_force(model_name,comment)

global_unit('mm')         -- Globale Einheit (m; cm; mm)
pickdist(0.001)        -- Abstand Schnappen auf Knotenpunkt

cosys('polar')

--  FE-contr-data

--  Version 8.1.x

m.hc_min          =         95.000 --   Limit demagnetisa > 0:[%]Hc;<0:[kA/m]
m.con_hdcopy      =          1.000 --   Hc-copy:Name:auto:0;intact:1; none:-1
m.b_max           =          2.400 --   Max Induction [T] in colorgradation
m.b_min           =          0.000 --   Move inside: 0 ; Move outside: > 0
m.calc_fe_loss    =          1.000 --   Calc. FE-Loss:0:no; 1:yes; 2:m-output
m.eval_force      =          0.000 --   Eval. force density > 0; no <= 0
m.allow_draw      =          1.000 --   Draw Graphics :> 0: yes; 0:  no
m.fline_dens      =          0.000 --   F-Lines: 1: small; 2: medium; 3:thick
m.num_flines      =          0.000 --   Number of Field-lines:      < 100 > 2
m.name_bch_log    =          0.000 --   Name bch-file in Logfile:> 0:yes;0:no
m.st_size_move    =          0.000 --   Step size move: r/ph:[degr]; x/y:[mm]
m.num_nonl_it     =        300.000 --   Number of nonlinear Iterations   < 99
m.perm_mode       =          0.000 --   Permeability mode:>0:restore;0:actual
m.error_perm      =          0.010 --   Rel. Permeability error < 0.1     [%]
m.allow_demagn    =          0.000 --   Allow Demagnetisation:= 1:yes;= 0:no
m.maenergy        =          0.000 --   Force from magn energy 1 :yes;= 0:no
m.el_order_ag     =          1.000 --   El. order in air gap: lin=1: quadr=2
m.export_scrpt    =          0.000 --   Export parameters in script: yes > 0

 pre_models("FE-contr-data");


-- Simulation Data:

-- Version 8.1.x

slots      =         12.000 --   Number of STATOR SLOTS        (>= 1)
slots_gen  =          3.000
poles      =          4.000 --   Number of Poles 2p            (>= 2)
poles_gen  =          1.000 --   Number of Poles simulated     (>= 1)

das = 50
dis = 29
dar = 28
dir = 12.0
diw = 6.0
airgap = (dis-dar)/2
airgapradius = (dis+dar)/4
length = 30
slot_width = 3
slot_height = 7.5
tooth_width = 5.6


m.tot_num_slots   = slots          --   Number of STATOR SLOTS        (>= 1)
m.num_slots       = slots_gen      --   Number of STATOR SLOTS        (>= 1)
m.num_poles       = poles          --   Number of Poles 2p            (>= 2)
m.npols_gen       = poles_gen      --   Number of Poles simulated     (>= 1)

m.fc_radius       = airgapradius
m.arm_length      = length
m.skew_angle      = 0.0
m.num_par_wdgs    = 1

 pre_models("basic_modpar");


-- CAD-Parameter Data:

--  STATOR_3

--  Version 8.1.x

m.yoke_diam       = das            --   Outer diameter yoke   DAS        [mm]
m.inside_diam     = dis            --   Inner diameter        DIS        [mm]
m.slot_height     = slot_height    --   Total slot height     HSL        [mm]
m.slot_h1         =          1.000 --   Slot opening height   H1S        [mm]
m.slot_h2         =          2.500 --   Slot head height      H2S        [mm]
m.slot_width      = slot_width     --   Slot width SWI;< 0 groove in Slot[mm]
m.slot_r1         =          1.000 --   Upper Radius          R1S        [mm]
m.slot_r2         =          1.000 --   Lower Radius          R2S        [mm]
m.wedge_width1    =          0.000 --   Distance middlepoints B1S        [mm]
m.wedge_width2    =          0.000 --   Distance middlepoints B2S        [mm]
m.nodedist        =          5.000 --   Rel.nod-dist > 0 begin tooth;< 0 slot
m.middle_line     =          0.000 --   Layers: 0;vert:1;horiz:2;vert+horiz:3
m.tooth_width     = tooth_width    --   Tooth width TW (replaces B1; B2) [mm]
m.slot_top_sh     =          0.000 --   Top of slot: corner=2; line=1; arc=0
m.airgap          = 2./3.*airgap   --   Airgap 2/3 height:>0; <0:no ndchn[mm]
m.tot_num_sl      = slots          --    Total number of teeth on 2pi
m.num_sl_gen      = slots_gen      --    Number of teeth be generated
m.zeroangl        =          0.000 --   Reference angle to x-axis [grad]

 m.rlength     =         100.000   --    rel. length fe in z-dir [%]

 m.mcvkey_yoke =   'dummy'

m.delta_angle_ndchn =          1.0 --   angle nodechain airgap in [degr]

post_models("nodedistance","b")

-- DELTA_KNOTEN       = b[1] in [m]     distance nodes stator surface
-- DELTA_KNOTEN_ANGLE = b[2] in [degr]  angle nodechain airgap

 pre_models("STATOR_3");


-- CAD-Parameter Data:

--  Magnet-Sector

--  Version 8.1.x

m.magn_rad        = dar/2          --   Radius Magnet airgap side    RA  [mm]
m.yoke_rad        = dir/2          --   Radius iron yoke inside      RI  [mm]
m.magn_height     =          3.000 --   Magnet height                HM  [mm]
m.magn_width      =         70.000 --   Magnet width: > 0: [%]; < 0:[mm]
m.airgap          = 2./3.*airgap   --   Mesh height (2/3 airgap)         [mm]
m.nodedist        =          5.000 --   Rel. Node distance > 0.5 ..
m.condshaft_r     = diw/2          --   Conduct. Shaft Radius:< yoke_rad [mm]
m.magn_num        =          1.000 --   Number Magnet sections:   > = 1
m.magn_perm       =         11.000 --   Radius Iron RFE between magnets  [mm]
m.magn_l          =        100.000 --   Magnet Length: < 150 % air gap length
m.magn_ori        =          1.000 --   Magnet:par = +/-1;Pol = 2;halb = +/-3
m.magn_type       =          2.000 --   MagnType:Ac:1;Acp:2;Rc:3; Rcp:4;AAp:5
m.magn_shape      =          0.000 --   Magnet surface radius <= RA    HA[mm]
m.br_height       =          0.000 --   Iron bridge height: = 0: none  BH[mm]
m.br_width        =          0.000 --   Iron bridge width : = 0: none  BW[mm]
m.num_poles       = poles          --    Total number of poles on 2pi
m.npols_gen       = poles_gen      --    Number of poles be generated
m.zeroangl        =          0.000 --   Reference angle to x-axis [grad]

 m.cond_shaft  =           0.000   --   El. Conductivity of shaft [S/m]

 m.mcvkey_yoke =   'dummy'

 m.mcvkey_mshaft = 'dummy'

 pre_models("Magnet-Sector");


-- Simulation Data:

--  connect_models

--  Version 8.1.x

 pre_models("connect_models");


-- Simulation Data:

--  Gen_winding

--  Version 8.1.x

m.tot_num_slot    = slots          --   Total Number of slots Q
m.num_poles       = poles          --   Number of Poles 2p
m.num_phases      =          3.000 --   Number of Phases m  <= 500
m.num_layers      =          1.000 --   Number of Layers (slot sides)per slot
m.num_wires       =         10.000 --   Number of wires per slot side
m.current         =         50.000 --   Wdg-Current [A] or flux [Vs/mm];peak
m.coil_span       =          3.000 --   Coil span Y  >= 1
m.num_slots       = slots_gen      --   Number of slots in Model (Rot-Mot)
m.mat_type        =          1.000 --   Ma-type:1=Rot;21=lin-x;22=lin-y
m.wind_type       =          1.000 --   W-typ:1=w&cur;2=w&flux;3=bar&cur
m.win_asym        =          1.000 --   asy. slot pitch: 1=sym.; <1=asym.
m.wdg_location    =          1.000 --   Windg location:1: stator; 2: rotor
m.curr_inp        =          1.000 --   Curent:Const:0; Q-axis:1; D-axis:-1
m.dq_offset       =          0.000 --   Offset to D-axis:>=0 Compl;<0 only Re
m.npols_gen       = poles_gen      --   Number of Poles simulated      (>= 1)
m.xcoil_1         =          0.000 --   center coordinate of 1. coil side [mm]
m.ycoil_1         =          0.000 --   center coordinate of 1. coil side [mm]
m.xcoil_2         =          0.000 --   center coordinate of 2. coil side [mm]
m.ycoil_2         =          0.000 --   center coordinate of 2. coil side [mm]

 pre_models("Gen_winding");


-- Simulation Data:

--  gen_pocfile

--  Version 8.1.x

 pre_models("gen_pocfile");


---------------------------------------------
-- Magnetisches Modell berechnen ------------
---------------------------------------------

 calc_field_single();

 color_gradation(0,0,tot,Babs,0,2.4,model_name.."_mag.ps")

 sleep(1)

---------------------------------------------
-- Mechanisches Modell berechnen ------------
---------------------------------------------
-- Material des Rotors:
 x1,y1 = pd2c(dir/2+1,45)
 x2,y2 = pd2c(dir/2-1,45)
 def_mat_mech(x1,y1,"darkblue",7600.0,210.0e9,0.3,0.0,0.0,0.13e-4)
 def_mat_mech(x2,y2,"blue",7600.0,205.0e9,0.3,0.0,0.0,0.128e-4)

 def_temp_mech(x1,y1,"darkred", 80)
 def_temp_mech(x2,y2,"red", 80)

-- Randbedingungen:
 del_bcond( )
 def_nccond_dphio(0,0, 0,das/2)
 def_nccond_dphio(0,0, das/2,0)

-- Geschwindigkeit:
 set_speed(30000)

-- Presssitz:
 x1,y1 = pd2c(dir/2,45)
 set_overlap(x1, y1, 0.015)

 calc_mech_pressfit()

 color_displacement(0,0,tot,0,0,0,model_name.."_mech.ps")

 sleep(1)

---------------------------------------------
-- Thermisches Modell berechnen -------------
---------------------------------------------
--Eisen
 lossdensity_fe = 50000
 x,y =  pd2c(das/2-1,30)
 def_mat_therm(x,y, "darkblue", 7700, 24, 480, 1)
 def_loss_density(x,y, "darkblue", lossdensity_fe)
 x,y =  pd2c(dis/2+1,30)
 def_mat_therm(x,y, "darkblue", 7700, 24, 480, 1)
 def_loss_density(x,y, "darkblue", lossdensity_fe)
 x,y =  pd2c(dir/2+1,30)
 def_mat_therm(x,y, "darkblue", 7700, 24, 480, 1)
 x,y =  pd2c(dir/2-1,30)
 def_mat_therm(x,y, "darkblue", 7700, 24, 480, 1)

--Magnete
 x,y =  pd2c(dar/2-1,45)
 def_mat_therm(x,y, "darkgreen", 7500, 8, 440, 1)

--Wicklung
 lossdensity_cu = 500000
 x,y =  pd2c(dis/2+slot_height/2,15)
 def_mat_therm(x,y, "darkyellow", 3500, 4, 150, 1)
 def_loss_density(x,y, "darkyellow", lossdensity_cu)
 x,y =  pd2c(dis/2+slot_height/2,45)
 def_mat_therm(x,y, "darkyellow", 3500, 4, 150, 1)
 def_loss_density(x,y, "darkyellow", lossdensity_cu)
 x,y =  pd2c(dis/2+slot_height/2,75)
 def_mat_therm(x,y, "darkyellow", 3500, 4, 150, 1)
 def_loss_density(x,y, "darkyellow", lossdensity_cu)

--Isolation
 x,y =  dis/2+slot_height/2, tooth_width/2+0.5
 def_insulation(x,y, "darkred", 0.1, 1430, 0.31, 1100)

-- Luftspalt
 x,y =  pd2c(airgapradius,45)
 def_mat_therm(x,y, "skyblue", 1.2, 0.2, 1005, 1)
 x,y =  pd2c(airgapradius+airgap/3,45)
 def_mat_therm(x,y, "skyblue", 1.2, 0.2, 1005, 1)
 x,y =  pd2c(airgapradius-airgap/3,45)
 def_mat_therm(x,y, "skyblue", 1.2, 0.2, 1005, 1)

 x,y =  pd2c(dar/2-1,1)
 def_mat_therm(x,y, "skyblue", 1.2, 0.2, 1005, 1)
 x,y =  pd2c(dar/2-1,89)
 def_mat_therm(x,y, "skyblue", 1.2, 0.2, 1005, 1)

-- Wärmeübergang
 x,y =  pd2c(das/2+0.5,45)
 def_heat_transfer(x,y, "magenta", 25.0, 20.0)

-- Randbedinungen
 del_bcond()
 x1,y1 =  pd2c(diw/2,0)
 x2,y2 =  pd2c(das/2+1,0)
 x3,y3 =  pd2c(das/2+1,90)
 x4,y4 =  pd2c(diw/2,90)
 def_bcond_to(x2,y2, x3,y3)
 def_bcond_to(x4,y4, x1,y1)
 def_bcond_tp(x1,y1, x2,y2, x3,y3, x4,y4, 4)

 calc_therm_field(100, 1.0e-9)
 color_gradation_th(0,0,tot,Temp,0,0,model_name.."_therm.ps")

save_model('cont')