XPEHOMETP
Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору MikhalVasylevich Посмотрел документацию, кое-что стало более понятным. Я просто этой программой не пользовался... В общем, чтение из файла - это неудачная попытка обойти ограничения на число параметров, накладываемых на FCN и FCNJ. Это можно сделать через COMMON-блок, примерно так, как здесь: http://brahms.scs.uiuc.edu/lssrl/software/crystal/Simulation/dim1.f Там, правда, рассматривается крутая задача... В общем, если не влезать в существо дела, а внести чисто косметические поправки, можно было бы сделать так: use msimsl **** External FCN, FCNJ ! FCN, FCNJ - используется в IVPAG, а modify нафиг REAL*8 rho ! (или у Вас *4? Желательно все же считать с двойной точностью ) COMMON /DATA1/rho ****** ! тут начальные условия дифур IDO = 1 ! IDO = 1 старт параметр для IVPAG TEND = 30 ! конечное значение сист. дифур (врямя) step = 0 rho = 1.0 10 Continue step = step + 1 TEND = TEND + step/100 IF (step .LE. 5) THEN ! расчет для 5-ти значений р Call IVPAG (IDO, N, FCN, FCNJ, ... TEND, Y) print *, Y(1), Y(2) ... ! результат расчета дифур. rho = 1.0 + step / 10 IF (step .EQ. 6) IDO = 3 ! IDO = 3 - останавливает IVPAG Go to 10 End IF END Subroutine FCN (N, T, Y, YPRIME) REAL*8 rho COMMON /DATA1/rho YPRIME(1) = .... F(rho) ... ! дифуры в которых зависимость от rho END Subroutine FCNJ (N, T, Y, DYPDY) REAL*8 rho COMMON /DATA1/rho DYPDY(1,1) = ..... F(rho)... ! матрица якоби END | Всего записей: 2489 | Зарегистр. 21-06-2005 | Отправлено: 13:20 29-01-2007 | Исправлено: XPEHOMETP, 13:23 29-01-2007 |
|