MikhalVasylevich
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору вот тута не работает, modify(x) читает "или подает в FCN" только первое записанное значение 'data1.txt' ! ************************ ! use msimsl **** ! тут данные обявляются и прочее. External FCN, FCNJ, modify ! FCN, FCNJ - используется в IVPAG ****** ! тут начальные условия дифур IDO = 1 ! IDO = 1 старт параметр для IVPAG TEND = 30 ! конечное значение сист. дифур (врямя) step = 0 open(1, file = 'data1.txt') ! data1.txt файл из одного параметра write (1, *), 1.0 ! начальное значение параметра 'p' close (1) 10 Continue step = step + 1 TEND = TEND + step/100 ! почему то без модиф. TEND не работает, но это не важно IF (step .LE. 5) THEN ! тестовый расчет для 5-ти значений параметра р Call IVPAG (IDO, N, FCN, FCNJ, ... TEND, Y) ! это основная ф-ция из библитотеки imsl ! она расчитывает дифуры print *, Y(1), Y(2) ... ! результат расчета дифур. open(1, file = 'data1.txt') write (1, *), 1.0 + step / 10 ! здесь должно бы изменять содержание 'data1.txt' close (1) ! чтоб в modify читал новое значение для х ! но этот (и несколько др. вариантов) не работает ! хотя при просмотре в data1.txt записано 1.4 ??!! IF (step .EQ. 6) IDO = 3 ! IDO = 3 - останавливает IVPAG (работает типа как Stop) Go to 10 End IF END Subroutine modify(x) Real rho, x open(1, file = 'data1.txt') read(1, *) x ! тут определяется х, он должен пробегать значения из data1.txt rho = x ! здесь никак не получается изменять значение параметра, close (1) ! в FCN и FCNJ попадает только rho = 1.0 End Subroutine FCN (N, T, Y, YPRIME) Call modify(rho) ! тут в FCN подается текущее значение rho YPRIME(1) = .... F(rho) ... ! дифуры в которых зависимость от rho END Subroutine FCNJ (N, T, Y, DYPDY) ! похожа на FCN тоже использует значение rho Call modify(rho) ! подается текущее значение rho DYPDY(1,1) = ..... F(rho)... ! матрица якоби END |