Решение задач электромеханики на ЭВМ

Лабораторные работы по курсу
«Универсальные методы расчета полей и процессов в электрических машинах»

Лабораторная работа № 1
Расчет магнитного поля в зазоре электрической машины методом конечных разностей для различных способов намагничивания

Методические указания. Описание программы расчета.

Программа составлена на языке Fortran 5.1 фирмы Microsoft.

Вначале в качестве исходных данных вводят следующие величины:

Затем выделяют память под рабочие массивы согласно заявленным размерам расчетной области

ALLOCATE (u(1:dim_y,1:dim_x),res(1:dim_y,1:dim_x),b(1:dim_y),STAT=ier)

Начальные значения

DO i = 1,dim_y
  
DO j = 1,dim_x
     
u(i,j) = 0.0
     
res(i,j) = 0.0
  
END DO
END DO

Задание граничных условий первого рода

k1 = delta+1
l2 = bz/2+1+1
l3 = l2+bp

гладкая поверхность:

DO j = 1,dim_x
  
u(i,j) = h_1
END DO

центральный зубец:

DO j = 1,12
  
u(k1,j) = h_z_1
END DO
DO i = k1,dim_y

  
u(i,l2) = h_z_1
END DO

соседний зубец:

DO j = l3,dim_x
  
u(k1,j) = h_z_2
END DO
DO i = k1,dim_y

  
u(i,l3) = h_z_2
END DO

Инициализация счетчика итераций и начало итерационного цикла

iter = 1
DO WHILE( .TRUE. )

Обнуление контролируемой величины максимального остатка на текущей итерации

r = 0.0

Задание граничных условий второго рода

DO i = 1,k1-1
  
u(i,1) = u(i,3)
  
u(i,dim_x) = u(i,dim_x-2)
END DO
DO j = l2+1,l3-1

  
u(dim_y,j) = u(dim_y-2,j)
END DO

Расчет скалярных потенциалов методом конечных разностей

DO i = 2,dim_y-1
  
DO j = 2,dim_x-1
     
IF (i .GE. k1) THEN      ! исключение из расчетной
       
 IF (j .LE. l2) CYCLE   ! области массивов централь-
        
IF (j .GE. l3) CYCLE   ! ного и соседнего зубцов
     
END IF
     
res(i,j) = u(i-1,j)+u(i+1,j)+u(i,j-1)+u(i,j+1)-4*u(i,j)
     
u(i,j) = u(i,j) + omega*res(i,j)/4
     
IF (ABS(res(i,j)) .GT. r) r = ABS(res(i,j))
  
END DO
END DO

Проверка достигнутой точности

IF (r .LE. eps) EXIT
iter = iter+1

Проверка на максимум итераций

IF (iter .GT. max_iter) EXIT

Завершение итерационного цикла

END DO

Расчет индукции на гладкой поверхности

DO j = 2,dim_x-1
  
b(j) = (-11*u(2,j)+18*u(3,j)-9*u(4,j)+2*u(5,j))/6
END DO

Затем идет вывод результатов расчета на экран и возможное сохранение в файле числовой и графической информации.

Перед завершением программы следует освободить занимаемую память от рабочих массивов для следующего расчета

DEALLOCATE (u,res,b,STAT=ier)