Подпрограмма KRD PLOSK KAT.
Координаты центров элементарных витков
If (otl) then; !Если на входе otl=.true., то производится печать координат нитев.витк. write (8," ('ln KRD_PLOSK_KAT RAD=')"); write (8/,((lp/el0.3))M) RAD (nacho:konkat) write (8/" ('ln KRD_PLOSK_KAT Z=')"); write (8,M ((lp, el0.3)n Z (nacho:konkat) endif END. Nacho-начальный номер элементарной площадки (м.б. 1 или любое др. число) для ! которой заданы координаты (радиус и г-коорд.)центра нитев… Читать ещё >
Подпрограмма KRD PLOSK KAT. Координаты центров элементарных витков (реферат, курсовая, диплом, контрольная)
Вызов: CALL KRD_PLOSK_KAT (RAD/Z, ndimrz/nacho, nrr, nrz/shz/shr &, tizwwR, otl, nrzbkat)
{SUBROUTINE KRD_PLOSK_KAT (RAD, Z, ndimrz, nacho, nrr, nrz, shz, shr, tizwwR, otl, nrzbkat) Подпрограмма заполняет массивы RAD и Z координатами нитевидных контуров, прохо- ! дящих в центрах элементарных площадок в витках плоской катушки:
! IZ.
! I__.
! I I I I I I I II.
! I_Ы 11 11 11.
! |_R.
! ВНИМАНИЕ: Программа рассчитывает правильно, если разбивка поперечного ! сечения ВСЕХ витков плоской катушки ВЫПОЛНЕНА С ПОСТОЯННЫМ ШАГОМ ПО СЕЧЕНИЮ ! ВИТКА И НУМЕРАЦИЯ ЭЛЕМЕНТАРНЫХ ПЛОЩАДОК ДЛЯ СЕЧЕНИЯ, ЛЕЖАЩЕГО СПРАВА ОТ ! ОСИ Z, ВЫПОЛНЕНА СЛЕВА НАПРАВО И СНИЗУ ВВЕРХ .
! ПРИМЕР ПРАВИЛЬНОГО РАЗБИЕНИЯ И НУМЕРАЦИИ ПОПЕРЕЧНОГО СЕЧЕНИЯ ВИТКА:
! I Z _.
! 1111 Уровень nrz.
!. | 10 | 11 | 12 |.
! | _ Попереч.сечен.витка разбито.
! | 1111 слева направо и снизу вверх.
! | 7 | 8 | 9 | Шаг разб. по рад. одинаковый.
!Осевая | _ Шаг разб. вдоль Z одинаковый.
!линия Z | | | | I.
! I 4 | 5 | б | Уровень 2; shz.
! | _.
! I I I I I.
! | 1 | 2 | 3 | Уровень 1; shz.
! | _.
! I Поз.1 Поз.2 пгг.
! | shr shr shr.
! _R.
!Ha ВХОДЕ должны быть заданы:
! ndimrz — размерность массивов RAD и Z (ВНИМАНИЕ: должно быть.
! ndimrz > nacho+nrzbkat-1 или ndimrz = nacho+nrzbkat-1).
! nacho-начальный номер элементарной площадки (м.б. 1 или любое др. число) для ! которой заданы координаты (радиус и г-коорд.)центра нитев. контура в ней.
! Координаты содержатся в ячейках массивов RAD (nacho), Z (nacho).
! nrr, nrz, shz, shr — число разбиений и шаги сечения по радиусу и по координате Z ! в витке слоя (следов-но, одинаковые для всех витков слоя).
! tizwwRтолщина изоляции между витками катушки (вдоль оси R).
! otlлогич. переменная; управляет печатью для отладки.
! nrzbkatчисло разбиен. катушки (колич. элементарных площадок всей катушки).
! ВЫХОД:
! RAD, Z — массивы, заполненные координатами центров элементарных площадок во ! всех витках слоя.
SUBROUTINE KRD_PLOSK_KAT (RAD, Z, ndimrz, nacho, nrr, nrz, shz, shr, tizwwR, otl, nrzbkat) implicit none.
integer: nacho, nrr, nrz, ndimrz, konkat, nrrml, nrrzbw, nrzbkat, nwkat &.
j, nrrkat, jn, jv, jnpred, jvpred, konwtk real (8): RAD (ndimrz), Z (ndimrz), shz, shr, tizwwR, r, dobRad logical: otl.
nrrzbw=nrr*nrz; konwtk=nacho+nrrzbw-l !Кол.разб. витка;Конеч.ном.в витке r=RAD (nacho);nrrml=nrr-l; konkat=nacho+nrzbkat-l Skonkat-кон.ном.площ-ки в кат. nrrkat=nrzbkat/nrz; nwkat=nrrkat/nrr;
dobRad=shr*nrr+tizwwR !Добавка к радиусу при переходе от предыд. к послед. витку {Заполняется массив Z z-коорд-ми центров элемент. площадок во всей катушке: !jn=nacho; jv=jn+nrrzbw-l — Нижний и верхний пределы для j в цикле do do j=nacho, nacho+nrrzbw-1, nrr if (j==nacho) then;
Z (j:j+nrrml)=Z (nacho) !заполн. 1-го уровня 1-го витка z-координатами else; Z (j:j+nrrml)=Z (j-l)+shz !заполн.след-их уровней 1-го вит. z-коорд. endif enddo.
doj=nacho, nacho+nrrml if (j==nacho) then.
RAD (j:konwtk:nrr)=RAD (nacho) !Заполнение первой поз.1-го витка г-коорд. else; RAD (j:konwtk:nrr)=RAD (j-l)+shr !заполн.след-их поз.1-го вит. г-коорд. endif enddo.
jn=nacho; jv=nacho+nrrzbw-l !Нижн. и верхи, переменные пределы для] в цикле do IF (nwkat>l) THEN; jnpred=jn; jvpred=jv !Цикл по остальным виткам DO j=2,nwkat; jn=jn+nrrzbw; jv=jv+nrrzbw Z (jn:jv)=Z (jnpred:jvpred)!Зaпoлн.z-кoopд-ми остальных витков RAD (jn:jv)=RAD (jnpred:jvpred)+dobRad !Заполн.г-коорд-ми остальных витков jnpred=jn; jvpred=jv ENDDO ENDIF.
if (otl) then; !Если на входе otl=.true., то производится печать координат нитев.витк. write (8," ('ln KRD_PLOSK_KAT RAD=')"); write (8/,((lp/el0.3))M) RAD (nacho:konkat) write (8/" ('ln KRD_PLOSK_KAT Z=')"); write (8,M((lp, el0.3)n Z (nacho:konkat) endif END.