Fortran (Форум)

При спробі зібрати стару програму gfortran відійшов у вічний цикл. Після редукції тексту вдалося отримати 8 рядків компілятор, що вішають.

Перевірено на 6 та 7 версіях gfortrana. Та й на MINGW. Нічого не змінилося за зміни -std=

Хотів відписатися до багтрекера GCC, але там реєстрація закрита.

Стала сегфолт MPI-програма

Шляхетні дони, пробачу поради з наступного питання: є кластер від SGI, на якому крутиться якийсь модифікований SLES. Є самописана програма, яка використовує fftw і mpi (розраховується дифракція при проходженні світла через телескоп).

Програма успішно працювала (майже цілий рік), але відносно недавно SLES проапгрейдили. Я не впевнений, що саме це є причиною, але здається особисто жодних інших змін не вносив у вихідний код. Сама прога на фортані.

Зараз вона сегфолтиться на дуже простому місці, типу

Спочатку вона компілювалася за допомогою ifort 15, як mpi використовувалася mpt/2.12 (реалізація mpi від SGI).

Пробував знижувати -O, різні комбінації версій компілятора та mpt. Ефект той самий.

Прога успішно працює на іншому комп'ютері простіше з gfortran/openmpi. Але саме їх на кластері немає. Хто що порадить? Як виявити джерело проблеми?

Буду вдячний за поради.

Чому пише що немає такого? : gfortran graphics.lib FGRAPH.FI FGRAPH.FD

В інтернеті написано що ця бібліотека стандартна у фортран пакеті, але при копіляції помилка:

Підсвічування синтаксису Fortran

Будь ласка, додайте підсвічування синтаксису мови Fortran у тезі [code]. Використовуваний highlight.js його підтримує за допомогою або «fortran».

maxcom

Fortran 2003: user-defined io у GCC

Як відомо, у GCC-7.1.0 з'явилася підтримка "user-defined io" стандарту Fortran 2003. На сайті Intel є кілька прикладів. З більшістю з яких все зрозуміло, і вони навіть збираються gfortran-7.3.0 і працюють.

Проблема спостерігається з третім прикладом:

, або замість «B = 0» може бути довільне число, тобто немов «B» залишилася неініціалізованою.

Якщо у вхідному файлі замість рядка "/B = 200" залишити лише "B = 200" і додати в кінці порожній рядок, тоді у виводі буде "B = 200".

Але цікавить початковий варіант вхідного файлу (якщо він правильний, звісно).

Чи є хтось, з тих у кого є intel fortran compiler (2016 і новіший, здається), перевірити що виводить приклад у результаті відпрацювання? І головне, як цей приклад взагалі працює? Поки що я це не дуже розумію. Тобто, наприклад, не зовсім зрозуміло, як він зчитує значення «20» і «30» вдруге і куди? І куди він зчитує решту тексту чи там у вхідних даних уже якийсь стандартний «текстовий шаблон» убитий і він його підставляє? Якщо щось у «текстових рядках» змінити, то під час виконання приклад впаде. А якщо змінити значення «X» і «Y», то вони ні на що не впливають (на висновок, тобто немовби вони і не потрібні).

Плагіни в CodeBlocks для розробки на Fortran

У зв'язку з тим, що в Gentoo оновили Code::Blocks до версії 17.12 і там був доданий USE-прапор "fortran", що активує збірку FortraProject plugin окремо від інших "contrib" плагінів (якщо цей плагін є ще в якомусь дистрибутиві linux, буду радий про це дізнатися), то я хотів би уточнити досвідчених розробників на Фортрані, які основні плагіни Code::Blocks ви використовуєте в процесі розробки?

В першучерга приходить думка про SmartIndent (Fortran). Наскільки актуальними є у використанні інші, наприклад, Doxygen? Запитую тому, що на основі побіжного погляду мені здалося, що найбільша частина цих плагінів потрібна для розробки на C++.

Fortran виведення з файлу

Як просто надрукувати на екрані вміст файлу?

Не подужав компіляцію fortran-проекту на федорі

Є одна пара британських вчених, яка випустила друге видання книги з прикладами коду. Писав код виключно для книги, підтримувати його вони не збираються. Спроба скомпілювати звернулася болем: встановлення додаткових либ, шаманство з коліями, баги федори. SCons якось мізерний на документацію (або це в мене проблеми), тому потрібна слушна порада: як це все зібрати.

Fortran String до Array of Int

Є рядок з = «[23,87,43,987,1,543]»

треба її перетворити на масив цілих чисел.

Як це можна зробити у фортані?

Яка максимальна довжина аргументів (довжина рядка аргументів) при виклику прогами з командного рядка віндовз?

Fortran: Char to Int

Не можу зрозуміти як перетворити рядок «113» на ціле число 113

Отримую через get_command_argument отримую аргумент командного рядка і мені треба його в інтеджер перетворити

для випадку, коли cmd_arg=«113» мені повертає число 49

Fortran Python

Є крута прога для інженерних розрахунків, ця прога видає великий файл (близько 200Гб, а то й пару терабайт) з результатами (бінарник).

Ця прога має API для роботи з файлами результатів. На Фортрані.

Є сучасна прога на Пітоні, яка має опрацювати всі результати та видати свої результати для результатів.

Коротше, треба якось із пітона викликати фортан.

Я вигадав фортраном витягувати результати в бінарник і потім працювати з ними. Ось

Вважати масив з бінарного файлу

Є код на фортані, він створює бінарний файл, в якому міститься двовимірний масив із реальних значень.

Потрібно вважати цей файл пітоном і завантажити цей масив у пам'ять програми на пітоні. А краще кожен елемент масиву послідовно завантажувати та обробляти у пітоні.

Можу додатково виводити розмір файлу в бінарний файл.

Як це можна зробити?

Fortran дивно складає числа

Є великий і довгий код, а в ньому фрагмент:

Останній рядок видає наступне: -4.47171865E+010 4.45362655E+010 1.80922022E+008 -1.04464889E+003 7.98239194E-006

Тобто сума набагато менша за одну. Якщо ті ж числа скласти окремо, використовуючи той же компілятор, то в сумі виходить 6.51351074E+002. Що, ясна річ, і є правильна відповідь. Перевіряв gdb, дійсно t1, t2, t3, t4 рівні тому, чому й мають бути рівні, а сума їх і справді менше одного. Як таке у принципі можливе? Чому та сама сума, порахована у різних місцях, дорівнює різним числам? Я вже навіть не уявляю, куди дивитись у пошуках помилки.

n-dimensional arrays: column-major -> row-major offset

Є N-мірний масив розміщений у пам'яті у вигляді вектора в порядку column-major (наприклад, з фортрану або там матлаба).

Якщо відомі розмірності цього N-вимірного масиву та зміщення в ньому, яка формула для конвертування в row-major зміщення (як у Сі)?

Чи є на ЛОР користувачі цього дива? Якщо є, де вони беруть описи матеріалів?

Документація до мов програмування

Різні підручники та книги - це добре, але зазвичай їх пропонують купити і часто неДуже дешево, навіть якщо вони описують базовий рівень. Безкоштовним рішенням очевидно є офіційна документація. Коли я відкрив документацію до python, я був приємно вражений, що вона написана практично як підручник. Для Java начебто теж все відносно непогано в цьому плані, хоча хотілося б окремий офлайновий pdf.

Ні, це не тред «підкажіть книгу по Сям», таких для початківців я і сам можу гору порадити.

Питання наступне: чи існує нормальна доступна безкоштовна документація, за якою можна вивчати C, C++? Офіційна документація з інших мов була б також цікавою.

C, C++Online-ресурси та навчальні посібники для початківців: