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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 330

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

akaGM

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

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

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


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

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



Newbie
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Добил, работает :) Причём не только в Mathcad, но и в SMath Studio. В общем-то меня интересовала работа именно в SMath Studio, где с помощью специального плагина можно подключать Mathcad библиотеки.
 
Есть однако несколько минусов. Пока шаблон интерфейса для функции жёсткий, т.е. если нужно будет подключить другую функцию, с другим количеством параметров или типов, то нужно будет специально для неё описывать свой интерфейс. Ещё я не победил простое описание сишных строк, прошлось пока через указатели извернуться.
 
Вот исходник:  
 
Шаблон Mathcad User Dll на Fortran
 
В этом примере в библиотеке находится функция на фортране TestFunc1(), которая работает просто как эхо - возвращает комплексное число, которое было передано в качестве аргумента.  
 
Особая прелесть использования фортрана в данном случае состоит в том, что встроенный тип double complex совпадает со структурой COMPLEXSCALAR. Т.е. это делает прозрачным комплексные вычисления в отличие от исходников на других языках.
 
Вот как выглядит отладка кода при вызове функции из Mathcad 15:
 

 
Пока для примитивных функций сойдёт. Главное, что вообще работает такой подход.

Всего записей: 31 | Зарегистр. 12-09-2006 | Отправлено: 02:17 19-08-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
unni
Ну а я что говорил?
Цитата:
молодец
будешь теперь местным спецом по связям с общественностью мат-пакетами...
я в своё время хотел также с матлабом замутить, но так и остановился на файлообмене...
главное, чтоб скорострельности и гибкости такого подхода хватало...
 
и вот ещё интересно, в каком подполье ты
Цитата:
Всего записей: 25 | Зарегистр. 12-09-2006
ровно 6 лет просидел :)
 
удачи

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 02:48 19-08-2012
BagaBaga

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Интересный (по крайней мере для меня) фактик:
скачал демку Intel Fortran под Win, скомпилировал модель. Так вот, при запуске и под виндой появляется та же самая ошибка чтения (что и под линуксом).
FPS4 это нормально компилирует, а исполняемый файл читает без ошибок.
Таким образом, хотя ifort и компилирует с опцией /fpscomp:all (вроде как для полной совместимости с FPS4), дело именно в компиляторе (точнее, что файл создавался программой, откомпилированной с другим компилятором).

Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 23:18 19-08-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BagaBaga
ну выложи где-нито свой многострадальный файл и скажи чтО в нём предполагаемо живёт...

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 23:28 19-08-2012
BagaBaga

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вот образец бинарного файла (осторожно, 80 Мб):
http://vestnik.mstu.edu.ru/a/mod4
 
В двух словах - сначала идёт небольшой заголовок (4*1024 байт, записывалось как real*4), затем метка GLOBAL MODEL, затем значения типа real*4 (описание , что же эта цифирь значит как раз и указано в заголовке).
 
Если важно (думаю - нет), величины в СГС/СГСМ/СГСЭ
PS
Более "нормальное" описание дам чуть позже - я блок ввода-вывода исполльзовал как "чёрный ящик", полезу в код уточнять реализацию, чтобы не соврать.

Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 21:28 20-08-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
а поменьше или пожать для теста нельзя было?
 
Добавлено:

Цитата:
 сначала идёт небольшой заголовок (4*1024 байт, записывалось как real*4), затем метка GLOBAL MODEL
ну не знаю, не знаю...
"GLOBAL MODEL" начинается в файле со смещения ff0 (4080), что не соответствует 4*1024
разница в 16 байт или 4 риала, как объяснишь?

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 02:07 21-08-2012
BagaBaga

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Тем, что я заврался: метка модели входит в состав первой (информационной) записи, и состоит из 4х байт - 'GLOB' (один реал) 'AL M' (второй реал) 'ODEL ' (третий реал) плюс ещё один реал (в котором в формате real*4 записана версия файла данных модели). Так что теперь всё сходится.
 
>а поменьше или пожать для теста нельзя было?  
Виноват. По-меньше под рукой не было (правда, там размер от сетки зависит, и другие не сильно меньше). А пожать как-то не сообразил (хотя жмётся ровно в два раза Если нужно - и ещё не позно - могу выложить и пожатый).

Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 09:45 22-08-2012 | Исправлено: BagaBaga, 09:46 22-08-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BagaBaga
ну хорошо...
прочитал я информационный заголовок, в нём какие-нибудь поля надо выделять?
и что дальше с оставшимися 76 МБ делать?

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 11:22 22-08-2012
BagaBaga

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Извиняюсь за молчание - я пока сам пытаюсь расковырять это дело "ручками". Описание заголовка, если интересно, прячу под катом (но оно большое).
Подробнее...
Программа работает с т.н. "логическими файлами" (я так понимаю, это удачный или не очень перевод фортрановского logical unit) внутри одного mod4. Т.е есть массив, который говорит (числовым кодом), какой параметр в каком "куске" лежит, плюс, там три момента - прошедший, настоящий, будущий (рассчитываемый). Чтобы сократить количество операций ввода-вывода (есть "прошлые значения", "настоящие значения", и те, которые только что вычислены), то есть массив соответствий, куда прописывается метка для данных ("прошедшие" просто меткой переводятся в свободные, "настоящие" в "прошедшие", т.е. не надо перезаписывать кусок, а "рассчитанные" - пишутся "по-честному").  
Собственно, я пытаюсь в память прочитать значения с позиций, прописанных в этом заголовке (а для начала пытаюсь понять, почему такая "адресация" вдруг перестала работать в Intel Fortran)...

Всего записей: 463 | Зарегистр. 14-11-2005 | Отправлено: 16:13 22-08-2012 | Исправлено: BagaBaga, 16:23 22-08-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BagaBaga
не...
описание я ниасилю, тока конкретику...
типа:
Цитата:
Собственно, я пытаюсь в память прочитать значения с позиций, прописанных в этом заголовке
с какой, сколько?
 

Цитата:
а для начала пытаюсь понять, почему такая "адресация" вдруг перестала работать в Intel Fortran
да всё там работает, даже с дефолтной компиляцией...
"на, бабка, трахайся сама" :)

Код:
implicit none
 
  integer*4, parameter :: FP = 100
  integer*4, parameter :: N = 1024
  integer*4, parameter :: SIZEBUF = 4*N
  real*4 headBuf(N)
  character*1 modelLabel(12)
  real*4 fileVersion
 
  equivalence (headBuf(N-3), modelLabel)
  equivalence (headBuf(N), fileVersion)
 
  open(FP, file='mod4.bin', status='old', form='binary')
 
  read(FP) headBuf
 
  close(FP)
 
  write(*,*) modelLabel
  write(*,*) fileVersion
 
end

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 17:19 22-08-2012 | Исправлено: akaGM, 01:59 23-08-2012
belsen85

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

Всего записей: 26 | Зарегистр. 11-07-2012 | Отправлено: 20:12 24-08-2012
adasiko



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
belsen85
воспользоваться профилировкой, но это уже зависит от используемого инструментария

Всего записей: 1807 | Зарегистр. 30-06-2008 | Отправлено: 20:29 24-08-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
belsen85
глянь профайлеры и ссылки вот здесь:
http://forum.ru-board.com/topic.cgi?forum=33&topic=11984#1

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 20:56 24-08-2012
Igorr

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
belsen85
Можно воспользоваться функциями времени и записывать временные точки отслеживания в файл.

Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 21:20 24-08-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Igorr
молодец, а я постеснялся :)
 
belsen85
то есть "обрамляешь" райтами проблемные исследуемые участки/блоки кода time-start/time-stop
по крайней мере, такой способ не требует привлечения никакого стороннего монструозного ПО

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 12:25 25-08-2012
belsen85

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

Всего записей: 26 | Зарегистр. 11-07-2012 | Отправлено: 13:42 29-08-2012
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
удачи...
только если руками дойдёшь, ногами не делай :)

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 18:23 29-08-2012
belsen85

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
такой вопрос - при первой прогонке кода все считается отлично, но если делать несколько повтор циклов (просто через do), то со второго цикла в одной из array некоторые значения меняются на другие (бесконечность), хотя никаких вообще изменений быть не должно.
Может у кого есть "быстрый" ответ? (вест код больше 4000 строк, делать пример для показа долго)
 
все, нашел где напортачил. Просто эта таблица нигде не запоминалась между вызовами итераций.

Всего записей: 26 | Зарегистр. 11-07-2012 | Отправлено: 14:15 06-09-2012 | Исправлено: belsen85, 15:36 06-09-2012
akaGM

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

Всего записей: 24116 | Зарегистр. 06-12-2002 | Отправлено: 17:13 06-09-2012
belsen85

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Такой вопрос: я записываю данные из фортрана в double precision. Потом читаю их Python. какой надо задавать формат переменных тогда в Питоне?

Всего записей: 26 | Зарегистр. 11-07-2012 | Отправлено: 19:06 09-09-2012
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 330

Компьютерный форум 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