|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
13.03.2014, 06:05 | #1 | |
Fortran90 - одинаковая работа под nix и win
Регистрация: 09.12.2008
Сообщений: 4,649
|
||
Просмотров: 7014
|
|
||||
Регистрация: 21.05.2010
Сообщений: 148
|
Может быть разница в типах данных. Попробуйте везде заменить тип REAL на REAL(8). Или, по-старому, на DOUBLE PRECISION. Может, разные компиляторы по-разному "жуют" их.
Я где-то уже видел подобную проблему. Поищу ту тему на форуме и пришлю Вам. |
|||
|
||||
Регистрация: 09.12.2008
Сообщений: 4,649
|
да, спасибо если что.
там есть и real и real*8 (в сольвере кстати). И кстати ошибка в очень тонких вещах, типа потери устойчивости потока (это cfd код), даже не в цифровых значениях а в сдвижке по времени.
__________________
мой блог по некоторым вопросам |
|||
|
||||
Регистрация: 21.05.2010
Сообщений: 148
|
http://forum.ru-board.com/topic.cgi?forum=33&topic=7619
Боюсь, что тут не помогу. Надо разбираться в самом расчёте. |
|||
|
||||
Регистрация: 09.12.2008
Сообщений: 4,649
|
разбираться лично мне сложно, поскольку я ни особенностей данного алгоритма ни сам фортран толком не знаю. сама проблема возможно даже надумана - никто серьезных научных расчетов в среде виндоус в мире не делает, разработка в основном для юникс систем.
вероятно у автора была такая же проблема потому что он пытался компилять под разные компиляторы в виндоус. и выложенный им exe как раз дает правильные результаты Я хоть и не исключаю но все таки не уверен что дело там в доубл пресижн, скорее открытый фортран компилятор под виндой не прав. Хотя в моем случае результаты различаются не так сильно как по ссылке от вас - тут численные значения максимальные одинаковы а разница по времени и в частоте срыва вихрей (определяемой числом струхаля) Конечно в вычислительном отношении такого рода задачи чувствительны вообще к массе парметров (в том числе к типу и густоте сетки). Так что тут мелкая деталь могла сыграть свою роль. как минус еще - разработка кода заброшена, я смог скачать только с вебархива кое что. http://web.archive.org/web/201305191.../index_en.html А сама программа замечательная по лаконичности и возможностям практическим.
__________________
мой блог по некоторым вопросам Последний раз редактировалось ETCartman, 13.03.2014 в 20:15. |
|||
|
||||
Регистрация: 09.12.2008
Сообщений: 4,649
|
PS немного прояснил ситуацию у автора. Он профессиональный пользователь фортран в отличие от меня, говорит что разница возможна из-за настроек оптимизации компилятора в машинный код (для виндоус), а в принципе все должно быть окей и ничего в самом коде менять специально не надо.
сам он профессиональный CFDист в аэрокосмической индустрии и соответственно ничем помочь по части виндоус не может т.к. не запускал его много лет и вся работа и быт у него в опенсьюзи или убунту.
__________________
мой блог по некоторым вопросам |
|||
|
||||
Регистрация: 21.05.2010
Сообщений: 148
|
Спасибо за информацию. Я в фортране "чайник" и ничего сложнее послойного суммирования не написал. Да и то с ошибками(((.
Вот ещё ресурс есть, где можно посмотреть кое-что по фортрану. Если интересно. https://modelingguru.nasa.gov/index.jspa |
|||
|
||||
Регистрация: 11.11.2010
Ростов-на-Дону
Сообщений: 163
|
Прошу прощения, что влезаю в разговор. Уважаемый, ETCartman, просто интересно,в двух словах в чем причина?
Интересуюсь небезосновательно: изучаю Fortran и работаю с Intel'овским компилятором, но под Windows. С UNIX системами пока знаком только теоретически На освоение новой ОС нужно затратить n-ое количество времени и поэтому хочу понять так ли велики преимущества разработки под UNIX, что стоит пожертвовать этим временем? Сразу оговорюсь, как простого пользователя винда меня вполне (хотя и не во всех аспектах) устраивает и лезть в Linux, просто чтобы быть "круче" не хочется сейчас. И конечно на серьезные научные расчеты я не претендую: все в рамках аспирантской работы.
__________________
С уважением, Ibragim:drinks: |
|||
|
||||
Регистрация: 09.12.2008
Сообщений: 4,649
|
Преимущества фортрана описаны хорошо - это довольно узкая ниша численных расчетов (тот же ANSYS написан на фортране частично и имеет фортраноподобный встроенный язык APDL)
большое количество уже написанных открытых кодов на все случаи жизни, сам язык очень простой именно для своих целей - то есть позволяет сосредоточиться на конкретной задаче а не на тонкостях программирования. Хотя старый фортран имел по сравнению с современными версиями массу сложностей типа выделения памяти и т.д. Но тогда все было таким. Причина по которой UNIX системы используют в научных и инженерных расчетах - в основном традиция и возможности параллелизации, также ряд других преимуществ, включая отчасти и стоимость которая чувствительна для большого парка компьютеров. То есть это несколько иные причины по которым линукс используют в домашних компьютерах (безопасный от вирусов веб серфинг и удобства типа скорости). Под линукс конечно не все программы работают, строители его обычно не используют в работе. Но под серьезными расчетами и не подразумеваются инженерные расчеты типа в скад или лира, речь о моделировании чего то а не об автоматизации инженерного проектирования. самый простой путь для инженера - скачать iso файл с www.caelinux.com и установить его на пристяжной флеш диск с помощью http://unetbootin.sourceforge.net/. Поскольку сейчас компания майкрософт создает всякого рода сложности для совместной установки систем (в попытках сохранить монополию) то наверно использование стороннего пристяжного диска самый простой вариант. к тому же для новичка проще не надо разбивать существующий чистый диск на необходимые разделы (только в FAT32 предварительно отформатировать). Коли вы работаете с интелкомпилятором - не могли бы вы компильнуть исходники которые я выложил выше? Там в src есть батник - надо только пути прописать в заголовке
__________________
мой блог по некоторым вопросам Последний раз редактировалось ETCartman, 15.03.2014 в 03:04. |
|||
|
||||
Регистрация: 11.11.2010
Ростов-на-Дону
Сообщений: 163
|
ETCartman, спасибо за развернутый ответ.
Скачал исходники, попробую разобраться, но не обещаю что результат будет положительным - я в фортране не более полугода. Итоги. Батник и мэйкфайл написаны для компилятора g95. Для винды и интел-го фортрана их надо переписывать, я к сожалению пока этим не владею, потому что работаю через IDE (мои проекты максимум из 5 файлов состоят на данный момент). Попробовал собрать через VS, но и тут не вышло. Где-то на 5 файлов он объектники не создал. Все ошибки указывают на процедуру openfile в файле preprocessor. Например, не совпадает количество actual и dummy аргументов в вызове процедуры openfile; где-то пишет, что не совпадает тип аргументов. Вот определение процедуры openfile: subroutine openfile(iunit,casename,extension,reqform,status,idebug) ! Тут 6 аргументов, указаний, что какой-либо из них OPTIONAL я не увидел Вот пример вызова этой процедуры, где компилятор ругается: call openfile(IOdbg,casename,'.dbg','FORMATTED','APPEND','UNKNOWN',debug) ! Тут указано 7 аргументов Вроде ошибка на лицо, но мне кажется, что я просто чего-то не знаю. Есть еще две ошибки в файле smagorinsky.f90 и tools.f90: "Ошибка 44 error #6404: This name does not have a type, and must have an explicit type. [FL2] D:\Ibragim\ETCartman\smagorinsky.f90 39 " - определение переменной FL2 я действительно не нашел, а инструкция Implicit None указана Ошибка 33 error #8284: If the actual argument is scalar, the dummy argument shall be scalar unless the actual argument is of type character or is an element of an array that is not assumed shape, pointer, or polymorphic. [CELLLIST] D:\Ibragim\ETCartman\tools.f90 532 - тут даже не полез разбираться. Никаких проблем насчет использования double pressision я не заметил. Если верить справке, то real(8) и double pressision воспринимается как одно и тоже, хотя могу ошибаться.
__________________
С уважением, Ibragim:drinks: Последний раз редактировалось ibragimr, 15.03.2014 в 14:52. |
|||
|
||||
Регистрация: 09.12.2008
Сообщений: 4,649
|
Странно - у меня и в линукс и виндоус собралось все без проблем. В линукс стандартно через makefile а в виндоус в mingw текущей версии gfortran через батник. Правда при запуске в виндоус потребовалось 2 динамических библиотеки, и собственно из-за чего возник вопрос в топике - программа считает внешне правильно, но на самом деле не вполне верно. Не верно скорее всего из-за оптимизационных настроек - когда код фортрана переводится в ассемблер.
я думаю надо попробовать собрать в линуксе для виндоус через кросскомпилятор.
__________________
мой блог по некоторым вопросам |
|||
|
||||
Регистрация: 11.11.2010
Ростов-на-Дону
Сообщений: 163
|
Скорее всего ошибка где-то в моих действиях. Кстати, я не удосужился прочесть даже faq на сайте (а зря). Буду пробовать собрать снова
__________________
С уважением, Ibragim:drinks: |
|||
|
||||
Регистрация: 11.11.2010
Ростов-на-Дону
Сообщений: 163
|
Итак, проект я собрал. Во вложении следующие файлы
1. dolfyn.exe и preprocessor.exe - соответственно препроцессор и программа. 2. Файлы примера wes2. 3. Тут же в папке и посчитанные результаты. Компилировал я для 32-х разрядной системы без каких-либо изменений стандартных настроек компилятора. Это так сказать что получилось на быструю руку. Теперь я пороюсь в настройках и, если что-то изменю, то выложу сюда. Кстати, если есть необходимость могу и для 64-х разрядный вариант собрать. P.S. в файле smagorinsky.f90 действительно переменная FL2 не определена. Я посмотрел в каких формулах она задействована и указал ей тот же тип (real) и тогда проект собрался.
__________________
С уважением, Ibragim:drinks: |
|||
|
||||
Регистрация: 09.12.2008
Сообщений: 4,649
|
спасибо, скачал, но проверить пока не могу.
кстати в линуксовском makefile стоят настройки как раз real-8 которые возможно в виндоус я не учел просто 64 бита по идее для больших моделей но я пока простые примеры осваиваю. у вас после расчета примера был создан файл odx для интеловского постпроцессора opendx с которого кстати там сделан скриншорт но в качестве постпроцессора можно также использовать paraview или GMSH надо только в .din файл добавить команду use vtk или use gmsh В GMSH сначала загружается vtk файл с сеткой а потом сверху добавляются результаты в узлах. Код:
__________________
мой блог по некоторым вопросам |
|||
|
||||
Регистрация: 11.11.2010
Ростов-на-Дону
Сообщений: 163
|
Собрал проект еще раз (см. вложение).
Почти ничего не менял, кроме файлов с результатами. Разбираться с din файлом мне было лень, поэтому я поступил так (см. вложение): - в файле modules есть набор флагов, которые отвечают за выбор типа файлов результатов; - в головном файле dolfyn нашел блок проверок этих флагов; - поставил истину напротив нужных мне значений. Теперь при решении создаются все возможные файлы результатов. Проверьте, надеюсь что все правильно работает и я ничего не попортил По поводу чисел с двойной точностью применительно к компилятору от интела (из справки): "If a kind parameter is specified, the real constant has the kind specified. If a kind parameter is not specified, the kind is default real. Default real is affected by compiler options specifying real size and by the REAL directive. The default KIND for DOUBLE PRECISION is affected by compiler option double-size. If this compiler option is not specified, default DOUBLE PRECISION is REAL(8). No kind parameter is permitted for data declared with type DOUBLE PRECISION. REAL(4) and REAL*4 (single precision) are the same data type. REAL(8), REAL*8, and DOUBLE PRECISION are the same data type." Во вложении есть скрин настроек компилятора. По умолчанию получается что компилятор приравнивает объявление double precission к real(8).
__________________
С уважением, Ibragim:drinks: |
|||
|
||||
Регистрация: 09.12.2008
Сообщений: 4,649
|
нет пока времени на детальное тестирование
ваш exe не запустился с пометкой not valid win32 application добавлю тоже свою версию (с real-8 для F77 файлов) и старую стабильную с офсайта проблема та же что и в топике, но дело не в компиляторе а в самом коде по моему удивительно весьма, но вроде как открытой версии фортран90 для 64 бита вроде бы даже и нет. есть проект разрабатываемый гуглом, AMD и т.д. называемый open64 виндоус я там не нашел и разбираться лень. PS добавил статичные билды без надобности dll
__________________
мой блог по некоторым вопросам Последний раз редактировалось ETCartman, 18.03.2014 в 20:56. |
|||
|
||||
Регистрация: 09.12.2008
Сообщений: 4,649
|
у меня 64 битная естественно, XP со всеми обновлениями
Но в принципе я задачу решил и понял что и почему. Компилятор работает одинаково 64 битного под виндоус вроде бы нет.
__________________
мой блог по некоторым вопросам |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Акты скрытых работ | Витос | Прочее. Архитектура и строительство | 324 | 05.03.2015 12:24 |
Совместная работа архитектора и конструктора в Autodesk Revit | wetr | Revit | 27 | 22.01.2014 13:55 |
Сколько может стоить работа по проектированию сборного ЖБИ? | jola | Организация проектирования и оформление документации | 41 | 21.06.2013 16:29 |
Работа ПТОшником в строительстве: разная или одинаковая? | Alma3 | Профессии и трудовые отношения | 5 | 25.05.2012 12:59 |