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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
и отключать графические смайлики при размещении фортран-кода

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

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

Цитата:
MPI

ссылки дашь?

Цитата:
Однако, я не считаю себя достаточно квалифицированном здесь, чтобы посоветовать какие нужны ресурсы добавить для этой темы.

я тоже...
поэтому добавляем любые...

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 21:07 28-01-2009
Vskazka

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
На вскидку, что-то у меня осталось из того, что смотрел, когда пришлось написать пару задач для суперэвм
_http://linux-cluster.org.ru/
_http://www.keldysh.ru/dvm/dvmhtm1107/publishr/cldvm2002web.htm
_http://parallel.ru
_http://oldunesco.kemsu.ru/mps/
На этих сайтах можно также найти примеры программ и учебников, например
_http://parallel.ru/info/parallel/antonov/
Ну и дальнейшие ссылки там можно поискать, если кто заинтересуется.  
Приведены только русскоязычные ссылки, мне их, по сути, хватило.  
Если экспериментировать дома. Все-таки приятнее сначала на персоналке отладить, а потом выйти на суперэвм. Да и дома стоит чаще всего винды.  
Можно посмотреть сюда
_http://go.microsoft.com/fwlink/?LinkId=55931

Всего записей: 382 | Зарегистр. 24-11-2003 | Отправлено: 08:11 29-01-2009
akaGM

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

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 15:07 29-01-2009 | Исправлено: akaGM, 16:44 29-01-2009
Vskazka

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
_http://go.microsoft.com/fwlink/?LinkId=55931 - здесь хоть и написано про
Цитата:
что-то от MS для 2003-серверов
но на самом деле тут документашка и там же есть ссылка на загрузку  
Microsoft Compute Cluster Pack SDK. Он работает не только под 2003 server, что естественно, так как многопроцесоррные задачи  и нужно считать на серверах, но так же и под XP. И может эмулировать многопроцессорность с любым количеством процессоров. Почему я и написал, что это удобно для отладки программы на персоналках, да и дома.  

Всего записей: 382 | Зарегистр. 24-11-2003 | Отправлено: 18:08 29-01-2009
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vskazka
говорю ж: отпинают...
 
поправил...

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 18:22 29-01-2009
akuaku

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте.
Я - аспирант. Решаю научную задачу на Фортране. Но как-то коряво выходит, т. к. не знаю, ЧТО из современных возможностей Фортрана ЦЕЛЕСООБРАЗНО применять в случае моей задачи (решения диф. и интегр. уравнений) для облегчения "стиля" программирования.
 
Хочу спросить Вашего совета, есть ли где-нибудь в Москве курсы по повышению квалификации программирования на Фортране?
 
Работаю один, коллег (понимающих в современном Фортране) - нет.
 
Или может быть кто-нибудь из уважаемых форумчан мог бы проконсультировать меня, оценив уже написанную программу и в каком направлении её дальше развивать (о вознаграждении договоримся :)
 
Читал книгу А.М. Горелик, но мне сложно самостоятельно, без "аудита" специалиста в этой области, принять решение, стоит ли переписывать всё заново, или постепенно заменять устаревшие неудобные конструкции более эффективными.

Всего записей: 95 | Зарегистр. 09-06-2005 | Отправлено: 00:27 11-02-2009 | Исправлено: akuaku, 00:29 11-02-2009
KChernov



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

Цитата:
Но как-то коряво выходит, т. к. не знаю, ЧТО из современных возможностей Фортрана ЦЕЛЕСООБРАЗНО применять в случае моей задачи (решения диф. и интегр. уравнений) для облегчения "стиля" программирования.  

А программа очень большая?
А то можно попробовать начать с выкладывания проблемных кусков (желательно законченных: модуль, процедура и тп), если конечно это всё не секрет.
 

Цитата:
постепенно заменять устаревшие неудобные конструкции

Надеюсь речь не о фиксированном формате фортрана?
 
п.с.: Вообще если задача действительно большая и сложная, и при этом она не завязана на фортрановские библиотеки, я бы писал её на более подходящем языки (хотя бы и на С++).

Всего записей: 2471 | Зарегистр. 20-04-2004 | Отправлено: 09:47 11-02-2009
akuaku

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
KChernov
Программа не маленькая, но и не очень большая, кода сейчас примерно 200 КБ.
 
Завязана на некоторые математические функции и методы, написанные на Фортране.
 
Формат НЕ фиксированный.
 
Проблема в том, что я не знаю, как лучше разделить программу на модули, процедуры, так, чтобы они были цельными, строго были описаны их функции и интерфейс с только необходимыми входными и выходными величинами.
 
В программе ещё частично осталась старая идеология common-блоков, часть я поменял на Pointer-ы.
 
Я прочитал книжку А.М. Горелик, но так и не понял, можно ли на Фортране реализовать удобное взаимодействие структурных единиц программы между собой. Если да, то может ли кто-нибудь дать рекомендации по разработке такой структуры программы на Фортране, с использованием новых возможностей.
Например "если надо реализовать такую взаимосвязь блоков программы, тогда используем такую структуру языка".
 
Есть ли целесообразность по времени всё реализовывать на C++.

Всего записей: 95 | Зарегистр. 09-06-2005 | Отправлено: 10:46 11-02-2009 | Исправлено: akuaku, 10:48 11-02-2009
akaGM

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

Цитата:
Есть ли целесообразность по времени всё реализовывать на C++.
нет...

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

как правило, структура программы определяется самой задачей, если ты слабо представляешь последнюю, то и с первой у тебя будут проблемы...
возьми и нарисуй на бумажке блок-схему программы...
причём, не алгоритмическую (типа [if A] [делай B] [else C] (это делается "во-вторых"), а функциональную, т.е. что-то вроде развёрнутого плана...

Цитата:
Формат НЕ фиксированный.  

да какая разница?
ты ещё скажи какой редактор кода используешь...
 
если б ты прочитал этот топик весь, то нашёл бы ответ на вопрос "как правильно и безболезненно оказаться от коммон-блоков и использовать модули для глобальных переменных"
не надо лезть ни в какие дебри фортрана,  вполне достаточно стандарта 77 и стуктур данных, уверяю тебя...

Цитата:
(решения диф. и интегр. уравнений)

используй готовые решения (например, ту же IMSL)

Цитата:
Или может быть кто-нибудь из уважаемых форумчан мог бы проконсультировать меня, оценив уже написанную программу и в каком направлении её дальше развивать (о вознаграждении договоримся  

давай, выкладывай...

Всего записей: 24055 | Зарегистр. 06-12-2002 | Отправлено: 15:42 11-02-2009 | Исправлено: akaGM, 15:44 11-02-2009
akuaku

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

Цитата:
если б ты прочитал этот топик весь, то нашёл бы ответ на вопрос "как правильно и безболезненно оказаться от коммон-блоков и использовать модули для глобальных переменных"  
не надо лезть ни в какие дебри фортрана,  вполне достаточно стандарта 77 и стуктур данных, уверяю тебя...  

Я не ленивый, и эту тему читаю уже давно.
Можно по-простому объяснить ещё раз, чем правильно заменить common-блоки на аналоги.
 

Цитата:
давай, выкладывай...

Как выкладывать? Всё - много, какую-нибудь часть - будет что-нибудь понятно?
 

Цитата:
как правило, структура программы определяется самой задачей, если ты слабо представляешь последнюю, то и с первой у тебя будут проблемы...  
возьми и нарисуй на бумажке блок-схему программы...  
причём, не алгоритмическую (типа [if A] [делай B] [else C] (это делается "во-вторых"), а функциональную, т.е. что-то вроде развёрнутого плана...  

Это понятно. Другой вопрос в том, что например в программе дифуры решаются на сетке, решения ищутся стартуя с асимптотик. У этой сетки есть массив значений координат в точках, шаг сетки и число точек. Все эти дополнительные параметры не имеют отношения к постановке физической задачи, поэтому они не должны быть в числе физических аргументов функциональных единиц на схеме программы. Но эти параметры сетки должны быть почти в каждой процедуре. Т. е. их надо передавать и хранить как глобальные переменные. Вопрос, как тогда их учесть на функциональной схеме?

Всего записей: 95 | Зарегистр. 09-06-2005 | Отправлено: 16:13 14-02-2009
Igorr

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

Цитата:
Можно по-простому объяснить ещё раз, чем правильно заменить common-блоки на аналоги.


Код:
MODULE Mod
  INTREGER                i
  DOUBLE PRECISION  dp
    ....
END MODULE Mod
!---------------------------------------------
SUBROUTINE SB
  USE Mod
....
    i = 3
    dp = 1.23456789D10
    CALL SB2
...
END SUBROUTINE SB
!---------------------------------------------
SUBROUTINE SB2
  USE Mod
  DOUBLE PRECISION  dpr
....
    dpr = dp**i
...
END SUBROUTINE SB2

Но если вы не собираетесь заглядывать в help, то продвижение по пути модернизации может быть оочень долгим

Всего записей: 2003 | Зарегистр. 01-05-2002 | Отправлено: 17:22 14-02-2009
AZA_N

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akuaku, про модули, на которые нужно заменить common-блоки, Вам уже написали. Т.е. параметры сетки (или саму сетку, в зависимости от конкретики) - в module, массивы - динамические. Что касается вычислений значений на сетке, то можно использовать IMSL, если не нужно вычислять кучи производных и бороться за скорость и точность. Если нужно запихивать в память jочень большие сетки, и неохота сшивать их по областям,  то нужна ОС и компилятор 64bit. Иногда бывает быстрее обращаться к элементам массива, чем что-то там бесконечное число раз пересчитывать.
  Самое главное (imho, т.к. я самоучка и общаться по поводу фортрана ни с кем не приходилось) хорошо продумать структуру программы, структуру вводимых и выводимых данных и не отступать от стандарта (я в свое время много шишек на этом набила при переходе с транслятора на транслятор).
  Что касается того, преписывать или "латать" программу. Если изменения в структуре, то лучше, как мне кажется, переписать. Если просто в устаревших конструкциях - подлатать. И еще смотря сколько у Вас на это времени.  

Всего записей: 853 | Зарегистр. 10-11-2007 | Отправлено: 22:27 14-02-2009 | Исправлено: AZA_N, 22:30 14-02-2009
Nag

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AZA_N
 
Согласен, целиком и полностью.
 
Единственный вопрос (больше политический) - насколько вообще живуч фортран ? не стоит ли вообще от него отказаться ? Просто потому что постоянно его компиляторы продаются-перепродаются как ненужный актив. Создается впечатление, что производить и поддерживать его невыгодно, стало быть, есть вариант в некий момент остаться без привычной версии.

Всего записей: 631 | Зарегистр. 05-02-2003 | Отправлено: 08:56 15-02-2009
Vskazka

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

Цитата:
Единственный вопрос (больше политический) - насколько вообще живуч фортран ?

Хоть здесь это и офтопик, попробую высказать свои мысли. Сие не политический вопрос, а чисто человеческий. До тех пор, пока людям, профессионально связанными с  математическими вычислениями, будет проще писать на фортране, то все так и будет. И компиляторы будут поддерживаться. А то, что в нагрузку даются... Это, пока еще как сказать. С год назад, для некоторого эксперимента пришла в голову блажь посмтреть разницу между наговской библиотекой на фортране и С. Так, заказав триальную сишную библиотеку, получил всяческие (завуалированные, правда) удивления от них (почему потребовалось именно С) и  настоятельные попытки заставить приобрести ее. Последнее немудрено, но ради фортрановской версии так не стараются там. Она - обычная.
Да и, кроме того, хорошие компиляторы для определенного железа здорово помогают продавать сие железо (Для больших машин). А там сишные или фортрановские - не суть важно. Во всяком случае для вычислительных программ.  Эвон, на первых юниксах вообще все через f2c компилировалось. Да и сейчас так, зачастую, для f77.
 

Всего записей: 382 | Зарегистр. 24-11-2003 | Отправлено: 09:37 15-02-2009
AZA_N

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Nag,
Цитата:
остаться без привычной версии
не грозит, пока есть WMvare и т.п. Если некогда обкатывать старую программу на новом компиляторе, а задачи не очень ресурсоемкие, то можно просто поставить старую ОС и старый компилятор на виртуалку. А если программа написана как структура из "черных ящиков" (на стандарте языка), в которые исходные данные попадают из файлов, а результаты выводятся в файлы, то и переписывать особо не придется (проблемы могут быть, если файлы не текстовые). Т.е. убрать из чисто расчетных блоков всякие там обращения к аппаратным средствам (особенно графику) и проблем почти не останется. А думать о смерти фортрана (если он умрет раньше меня)  надо будет тогда, когда стандарт перестанет развиваться.
 

Всего записей: 853 | Зарегистр. 10-11-2007 | Отправлено: 16:11 15-02-2009
akuaku

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

Цитата:
массивы - динамические

? - Т. е.

Код:
real, dimension(:), pointer :: a
...
allocate (a(100))
...
deallocate (a(100))

 
Как разделять переменные по смыслу (главные и все вспомогательные) - по разным модулям? Бывает, что вспомогательные переменные нужны в нескольких подпрограммах, т. е. они не могут быть локальными.
 
Может ли кто-нибудь выложить пример своей программы в описываемом современном подходе, для изучения подобных ноу-хау и правильному структурированию проргаммы?
 
По книжке я понял, что в модулях можно размещать не только переменные, но и подпрограммы и процедуры.

Код:
MODULE Mod
    INTEGER i
    DOUBLE PRECISION dp
 
    SUBROUTINE SB2
    ...
    END SUBROUTINE SB2
 
    MODULE PROCEDURE Proc_1
    ...
    END MODULE PROCEDURE Proc_1
 
END MODULE Mod
!---------------------------------------------
SUBROUTINE SB
    USE Mod
...
END SUBROUTINE SB
 

Вопрос для чего и в каких случаях это целесообразно делать?

Всего записей: 95 | Зарегистр. 09-06-2005 | Отправлено: 16:16 15-02-2009 | Исправлено: akuaku, 16:46 15-02-2009
AZA_N

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akuaku, на gen.lib.rus.ec (там много книг по Фортрану) лежит книга "Описание языка программирования Фортран 90" Меткалф и Рид. Есть еще "Introduction to programming with Fortran 77, 90, 95, 2003"(Springer, 2006), к ней есть "Introduction to Fortran 77, 90, 95, 2003 - code examples" (Chivers, Sleightholme). Я ее сама не смотрела - только собиралась. Если аксакалы этой темы одобрят, то почему бы не порыться в примерах из литературы и не подобрать "под себя". Ведь специфику своей задачи знаете только Вы сами. И еще из рекомендаций - не забывать implicit none (это я как самоучка самоучке).
 
Кстати, никто не поделится А.М.Горелик "Программирование на современном Фортране" (именно этой, а не ООП, она везде в нете лежит). У кого есть в эл. виде или ссылка - киньте в тему книжек по Фортрану.
 

Всего записей: 853 | Зарегистр. 10-11-2007 | Отправлено: 17:09 15-02-2009 | Исправлено: AZA_N, 17:21 15-02-2009
akuaku

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

Цитата:
а не ООП, она везде в нете лежит

Где можно взять?

Всего записей: 95 | Зарегистр. 09-06-2005 | Отправлено: 18:47 15-02-2009
FuzzyLogic



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

Цитата:
? - Т. е.
Код:
real, dimension(, pointer :: a
...
allocate (a(size))
...
deallocate (a(size))
 

 
где size это переменная которую потом вы присваиваете по необходимости, в зависимости от размеров сетки или чего ещё. Таким образом вам не надо будет компилировать программу каждый раз под разные размеры.
 

Цитата:
Как разделять переменные по смыслу (главные и все вспомогательные) - по разным модулям? Бывает, что вспомогательные переменные нужны в нескольких подпрограммах, т. е. они не могут быть локальными.  

Делите всё логически akaGM уже упоминал про то что не мешало бы нарисовать схему.
Да и просто - положите куда-нибудь свою программу, каждую мелочь я думаю вряд-ли кто-то вам будет вылизывать. Но поверхностно посмотрим, достаточно ведь указать на наличие 4-5 моментов, а остальное по аналогии сделаете сами.
Выделяйте в отдельные модули то что можно потом использовать в других программах. Ну например... у меня есть модуль с методами которые относятся только к геометрии (ну вроде разных методов просчёта длин отрезков в разных системах координат), или модуль с разными методами интерполяции. Они сделаны универсальными и используются во многих программах. Есть модуль с физ. константами, итд. Когда это сделаете можно делать следующую итерацию и дробить уже в зависимости от логики программы.

Всего записей: 1920 | Зарегистр. 27-07-2002 | Отправлено: 19:33 15-02-2009
AZA_N

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akuaku, см. ссылку в соответствующей теме (она из Google).
 
А еще нажмите СЮДА

Всего записей: 853 | Зарегистр. 10-11-2007 | Отправлено: 20:08 15-02-2009 | Исправлено: AZA_N, 15:50 16-02-2009
Открыть новую тему     Написать ответ в эту тему

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