Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329

Открыть новую тему     Написать ответ в эту тему

akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на ФОРТРАН, как общего так и конкретного характера.
Постарайтесь дать как можно больше информации о возникшей проблеме -- это в конце концов в ваших же интересах чтобы вам помогли...

прежде чем просить помощи в задании
платное решение задач

ресурсы этого топика
ссылка на подборку ресурсов, собранных посетителями этого форума
 
то, чем мы решили поделиться
ссылка на страничку программ etc собственного изготовления, которыми любезно делятся наши форумчане


если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим
 
просьба к пишущим и отвечающим все большие листинги оформлять тегом more
и отключать графические смайлики при размещении фортран-кода

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 18:11 14-01-2007 | Исправлено: akaGM, 09:47 01-03-2020
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
knkd

Цитата:
Нуль целых, нуль десятых
это в каком реале, сингле?
странные какие-то звания поусержант, третьмайор...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 00:06 21-03-2013
Igorr

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
XPEHOMET
"Казань - брал, Астрахань - брал, Шпака - не брал"(С)
В Фортране: EQUIVALENCE - знаю, COMMON - знаю, жердочку - не знаю.
EQUIVALENCE - это не "отнесение одного и того же значения к разным переменным", а "отнесение" одного и того же места (адреса) памяти к разным переменным. И как частное - ваше утверждение.

Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 00:15 21-03-2013
knkd

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Уж какие есть...

Всего записей: 196 | Зарегистр. 15-01-2008 | Отправлено: 00:16 21-03-2013
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
использование длиннющих и, порою неоднородных массивов -- нормальная практика прошлого. вместо того, чтобы передaвать под сотню параметров в п/п или возиться с common-проекциями, поступали очень просто:
 
integer, parameter :: addrX1 = 100
integer, parameter :: addrY1 = 200
 
real workArray(100000)
 
ну и работали
 
call sub1(workArray)
z =  F(workArray)
 
адресуясь внутрях константами addrXXX

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 13:29 21-03-2013 | Исправлено: akaGM, 13:30 21-03-2013
knkd

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
использование длиннющих и, порою неоднородных массивов -- нормальная практика прошлого. вместо того, чтобы передaвать под сотню параметров в п/п или возиться с common-проекциями, поступали очень просто:
 
integer, parameter :: addrX1 = 100
integer, parameter :: addrY1 = 200  

Вот только человек слаб...
На самом деле parameter практически нигде не использовался, а просто ставились нужные цифры.
Учитывая же, что это ещё и применялось к подмассивам разного типа...  Магических чисел бывало много.

Всего записей: 196 | Зарегистр. 15-01-2008 | Отправлено: 19:46 21-03-2013
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
На самом деле parameter практически нигде не использовался

ну так он только в 77-ом и появился...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 19:55 21-03-2013
knkd

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM

Цитата:
ну так он только в 77-ом и появился...

А потом выход за границы и: "счастливой отладки, суки"...

Всего записей: 196 | Зарегистр. 15-01-2008 | Отправлено: 20:36 21-03-2013
Andrew10

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
А потом выход за границы и: "счастливой отладки, суки"...
 

Да уж!!!
 
Довелось мне однажды переделывать на Intel Fortran программу, написанную в начале 90-х на Фортране для MSDOS. Так в ней использовался фокус еще похлеще. Значения элементов одного массива менялись путем адресации за пределы другого массива. В объявлениях два эти массива  следовали один за другим и подразумевалось, что при загрузке программы на выполнение они также будут располагаться в памяти. И вся программа вообще без комментариев. Пока нашел, проклял все на свете.

Всего записей: 780 | Зарегистр. 26-02-2005 | Отправлено: 23:39 21-03-2013
mechmath

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подробнее...

Всего записей: 50 | Зарегистр. 21-03-2013 | Отправлено: 23:39 21-03-2013
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mechmath
 
попробуй увеличить размер стека
 
/F:размер
в ifort
 
или
/STACK:размер
в линкере
 
или лучше отправь динамические массивы в кучу вместо стека:
/heap-arrays

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 00:15 22-03-2013 | Исправлено: akaGM, 00:18 22-03-2013
mechmath

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Размер стека 50000000 больше не "кушает"

Всего записей: 50 | Зарегистр. 21-03-2013 | Отправлено: 00:33 22-03-2013
stepanoxus



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Скажите, пожалуйста, как сделать так, чтобы при выводе на печать длинная строка не разрывалась?
Следующий код:

Код:
 
open (101,file="text.txt")
write (101,*) "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz"
close (101)
 

сохраняет в файл следующий текст:

Код:
 
 abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyza
 bcdefghijklmnopqrstuvwxyz
 

Всего записей: 30 | Зарегистр. 27-09-2009 | Отправлено: 00:38 22-03-2013
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mechmath
ну попробуй второе
и ещё понизь точность для проверки: real замени на real*4
 
а вообще это тестовая программа что ли?
 
stepanoxus
 
write(*, '(A\)')
 
так?

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 00:38 22-03-2013 | Исправлено: akaGM, 00:40 22-03-2013
stepanoxus



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Спасибо, работает, только почему-то при следующем выводе на печать с помощью write текст не начинается с новой строки, а продолжается в той же строке.

Всего записей: 30 | Зарегистр. 27-09-2009 | Отправлено: 01:04 22-03-2013
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ну сделай так
write(*, '(A\)') 'hasavavavgvag'
write(*,*)
 
или так
write(*, *) 'hhasavavavgvag' // char(13)

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 01:36 22-03-2013
mechmath

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
 akaGM ну попробуй второе  
и ещё понизь точность для проверки: real замени на real*4  

 
В Proejct ->Свойства->Linker->System->Heap Reserve Size и Heap Commit Size я могу только задать размер и 50000000 - это практически максимум. Большее число не могу ввести - сообщение об ошибке.
 
Не понял. Я пока работаю с одинарной точностью real == real(4) == real*4
 
 

Цитата:
 а вообще это тестовая программа что ли?  

 
Binary - это тестовая задача, с помощью  которой я пробую найти решение проблемы. Кстати этот тест проходит совершенно нормально. А вот в моей программе, подпрограмма вывода контрольной точки и результата на очередном шаге выдачи - вылетает с ошибкой переполнение стека.
 
Сама программа это решение IIId задач газодинамики.

Всего записей: 50 | Зарегистр. 21-03-2013 | Отправлено: 11:41 22-03-2013
Andrew10

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mechmath
Попробуйте изменить Ваш тестовый пример, так, чтобы большой массив объявлялся в основной программе, а вывод  - в подпрограмме, в которую массив передается в виде параметра.  
 
Я помню, в какие-то времена здесь обсуждалась проблема передачи больших массивов через формальные-фактические параметры и переполнение стека. Подробности не помню, но что-то такое было.

Всего записей: 780 | Зарегистр. 26-02-2005 | Отправлено: 12:19 22-03-2013
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mechmath
 
я не знаю что и где выставляется в студии, но опция
 
/heap-arrays
говорит, что все alloc'и надо располагать в куче, а не на стеке (что делается по умолчанию)...
 
Добавлено:
+
 
open(5,...
write(5) u
close(5)  
ну не нравится мне задействование 5-ого канала,
открой 105 для порядка...
 
Добавлено:

Цитата:
работает нормально. Но выдача из реальной программы расчета - не получается.

ха, только что увидел...
а где уверенность, что не косячит что-нибудь другое?

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 13:49 22-03-2013
mechmath

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Andrew10

Цитата:
Попробуйте изменить Ваш тестовый пример, так, чтобы большой массив объявлялся в основной программе, а вывод  - в подпрограмме, в которую массив передается в виде параметра.  

У меня основные массивы объявляются в модуле как динамические, распределяются и  инициализируются в подпрограмме инициализации.  
ТО есть реальной передачи через список формальных и фактических параметров не происходит.
Изменил тестовую программу и запустил, но идет очень медленно.
 
Добавлено:
akaGM

Цитата:
open(5,...  
write(5) u  
close(5)  
ну не нравится мне задействование 5-ого канала,  
открой 105 для порядка...  

 
это у меня от ЕС ЭВМ, в них 5 и 6 резервировались под устройства ввода, вывода.
 
Кстати, там где использую номер устройства вывода 5 - все работает нормально. А в основной программе номер устройства - 77.
 
Изменил  Fortran-> Optimization-> Heap Array - поставил 0. Сейчас  попробую.
 
Добавлено:
akaGM

Цитата:
ха, только что увидел...  
а где уверенность, что не косячит что-нибудь другое?

 
Конечно, никакой уверенности нет. НО программу написал пару лет назад и давно и успешно считал с массивами до 512х512х512 включительно. Все работало, без проблем, результаты нормальные. Не знаю, как вставить трехмерный график.

Всего записей: 50 | Зарегистр. 21-03-2013 | Отправлено: 16:46 22-03-2013
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
mechmath

Цитата:
Heap Array - поставил 0. Сейчас  попробую.
да я уже не уверен, что здесь сбоит...
 integer,parameter:: nx=1024,ny=1024,nz=4096, n=5  
в кач-ве проверки, уменьши здесь все значения и если будет ошибка -- я прав и искать надо в другом месте...
 
а вообще я б гига на 4 (радикально так) увеличил ещё виртуальную память на твоей машине, чтобы уж всё проверить...
 

Цитата:
это у меня от ЕС ЭВМ, в них 5 и 6 резервировались под устройства ввода, вывода.

ну и зачем испытывать судьбу и слать предположительно на консоль бинарник?
 
Добавлено:
 
запусти ещё allocate () со STAT и ERRMSG и глянь что там пишут...

Всего записей: 24056 | Зарегистр. 06-12-2002 | Отправлено: 17:12 22-03-2013 | Исправлено: akaGM, 17:13 22-03-2013
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы программирования на FORTRAN (ФОРТРАН)


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru