Подпрограмма 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_Ы 1_1 1_1 1_1

! |_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

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >