Главная Журналы Глава 8 ПРИМЕРЫ ПРИМЕНЕНИЯ ПРОГРАММЫ CONDUCT ДЛЯ РЕШЕНИЯ ЗАДАЧ ТЕПЛОПРОВОДНОСТИ Познакомившись с деталями неизменяемой части CONDUCT и с основами структуры адаптируемой части, присту1И1м к созданию конкретных версий ADAPT для решения частных задач. Представленные в книге примеры созяаит ADAPT служат иллюстрацией некоторых аспектов математической формулировки задачи и связанного с этим программирования. В каждом примере рассмотрим постановку задачи, соответствующее построение подпрограммы ADAPT, список новых имен, вводимых на ФОРТРАНе, листинг получившейся подпрограммы ADAPT, результаты вычислений и приведем некоторые комментарии к ним. В процессе ознакомления с описанием ADAPT придется часто обращаться к листингу этой подпрограммы. Закончив тщательное изучение представленных примеров, вы сможете самостоятельно разработать приложения программы к другим задачам. 8.1. СТАЦИОНАРНАЯ ТЕПЛОПРОВОДНОСТЬ ПРИ НАЛИЧИИ ВНУТРЕННИХ ИСТОЧНИКОВ ТЕПЛА (ПРИМЕР 1) 8.1.1. Постановка задачи Начнем с очень простой задачи о стационарной теплопроводности в плоском теле квадратной формы. Как показано на рис. 8.1, на границе задана температура Тело имеет постоянную теплопроводность к, мощность источника тепла также постоянна и равна S. Будем использовать следующие значения параметров: Г„ = 0;А:= 1;S = 5. (8.1) Нашей целью является расчет Рис. 8.1. к задаче о стационарной теплопроводности при наличии внутрен- стационарного поля температуры. источников тепла В данном примере часто будут использоваться значения параметров, задаваемые по умолчанию, поэтому итоговая подпрограмма ADAPT будет довольно короткой. 8.1.2. Построение подпрограммы ADAPT GRID. Построим равномерную сетку, задав размеры области xl и yl, число контрольных объемов по каждой оси сделаем равным пяти. Здесь по умолчанию mode = 1. Также по умолчанию используем заданные величины powerx и powery. В результате равномерная сетка создается вызовом процедуры ezgrid. BEGIN. Обозначив выбранную переменную через nf = 1, зададим числовые значения в соответствии с (8.1). Затем заполним массив т(1, j) значениями tw, задав таким образом граничные условия в граничных точках и приемлемое начальное условие во внутренних точках. OUTPUT. На каждой итерации выведем на печать значения температуры в трех характерных точках. Этот вывод результатов поможет проверить сходимость решения. На последней итерации выведем на печать поле температуры т (i, j), вызвав print. PHI. Зададим значения Г и 5. По умолчанию Sp = 0. Так как на всей границе задана температура, не нужно менять значения индикатора КВС. 8.1.3. Дополнительные имена на ФОРТРАНе cond - теплопроводность [см. (8.1)]; source - мощность источника тепла в единице объема S [см. (8.1)]; t(i,j) - температура 7; tw - температура на границе [см. (8.1)]. 8.1.4. Листинг подпрограммы ADAPT С ссссссссссссссссссссссссссссссссссссссссссссссссс subroutine adapt С---- с- example 1 - steady conduction with heat generation С------- $include:common dimension t(ni,nj) equivalence (f(1,1,1),t(1,1)) Q Jr + + + + + + Jr -A- + + -A- + Jr + + . + + + *- + A- + + entry grid HEADER=STEADY CONDUCTION WITH HEAT GENERATION PRINTF=PRINTl PLOTF=PLOTl CALL DATA2(XL,1.,YL,1•) CALL INTA2(NCVLX,5,NCVLY,5) CALL EZGRID RETURN ENTRY BEGIN TITLE(1)= TEMPERATURE CALL IMTA4(KSOLVE(1),1,KPRINT(1),1,KPLOT(1),1,LAST,3) CALL DATA3(TW,0.,COND,1.,SOURCE,5.) DO 100 J-1,M1 DO 100 1=1,Ll T(I,J)=TW 100 CONTINUE RETURN Q + + + .k- + + Jr + + + + * -A- -A- -A- >r -A- -A- -A- -A- -A- .k- ENTRY OUTPUT DO 200 IUNIT=IU1,IU2 IF(ITER.EQ.0) WRITE(lUNIT,210) 210 FORMAT (2X, ITER,3X, T(2,2) ,4X, 4(4,2) ,4X, 1 T(6,3) ) WRITE(I UNIT,2 20) ITER,T(2,2),T(4,2),T(6,3) 220 FORMAT(2X,12,2X,1P3E10.2) 200 CONTINUE IF(ITER.EQ.LAST) THEN CALL PRINT CALL PLOT ENDIF RETURN Q->t > + + + + . + + + -A- + . -A- + „ + -A- + - + + + + + ENTRY PHI DO 300 J=2,M2 DO 300 1=2,L2 GAM(I,J)=COND SC(I,J)=SOURCE 300 CONTINUE RETURN END ccccccccccccccccccccccccccccccccccccccccccccccccccc 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 [ 38 ] 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 |