Показаны сообщения с ярлыком gfortran. Показать все сообщения
Показаны сообщения с ярлыком gfortran. Показать все сообщения
воскресенье, 7 декабря 2014 г.
Мой любимое программное обеспечение. My favourite software
Недавно переустанавливал ноутбук и скачивал необходимое мне программное обеспечение. Почти всё оно, за исключением одной позиции, является СПО или shareware. Оформил я это как ipython notebook My soft, а загрузил с помощью GitHub Windows (ссылка в списке). Теперь всё необходимое в одном месте.
понедельник, 23 апреля 2012 г.
Особенности формата ввода/вывода в gfortran
Цель: Использовать выражения в дескрипторах преобразований <> в gfortran
Средства: gfortran
"Если в строке формата дескриптор преобразований использует целочисленную константу, то она может быть заменена заключенным в угловые скобки (< >) целочисленным выражением:"
integer :: m, k
k = 10
do m = 3, 5
k = k*10
write(*, '(2x, i<m>)') k ! 100
end do ! 1000
end ! 10000
Средства: gfortran
"Если в строке формата дескриптор преобразований использует целочисленную константу, то она может быть заменена заключенным в угловые скобки (< >) целочисленным выражением:"
integer :: m, k
k = 10
do m = 3, 5
k = k*10
write(*, '(2x, i<m>)') k ! 100
end do ! 1000
end ! 10000
О.В. Бартеньев, "Современный Фортран", стр. 294
Такой синтаксис позволяет создавать динамически корректируемый формат для ввода/вывода данных. Однако, компилятор gfortran для приведенного выше кода выдаст ошибку. Как же воспользоваться дескрипторами преобразований <> в gfortran?
суббота, 18 февраля 2012 г.
"Обёртка" Питона для Фотрана или F2PY using Windows
Цель: Научиться превращать написанные на Фортране подпрограммы в питоновские модули
Средства: Python, Numpy, MinGw
У Николая Колдунова есть прекрасный пост о модуле для питона (python) F2PY: F2PY – ускоряем вычисления в Питоне в 500 раз . Там очень хорошо изложено как соединить функционал языка программирования Питона и наработки (в виде подпрограмм и функций) в Фортране.
Однако Колдунов описывает процесс установки и работы f2py под Linux ОС. Я же хочу поделиться опытом использования f2py (очень базовый уровень) под Windows 7 ОС.
Итак, на сайте Scipy.org - F2PY_Windows есть инструкция на английском языке "F2py для Windows". Пройдём её вместе.
Средства: Python, Numpy, MinGw
У Николая Колдунова есть прекрасный пост о модуле для питона (python) F2PY: F2PY – ускоряем вычисления в Питоне в 500 раз . Там очень хорошо изложено как соединить функционал языка программирования Питона и наработки (в виде подпрограмм и функций) в Фортране.
Однако Колдунов описывает процесс установки и работы f2py под Linux ОС. Я же хочу поделиться опытом использования f2py (очень базовый уровень) под Windows 7 ОС.
Итак, на сайте Scipy.org - F2PY_Windows есть инструкция на английском языке "F2py для Windows". Пройдём её вместе.
суббота, 24 декабря 2011 г.
Fortran и ОС Windows 7
Задача: Поставить компилятор fortran-а на компьютер/ноутбук с операционной системой Windows7 (на 64 разрядную)
Методы решения: Geany, CVF, gfortran, MinGW
Для пользователей ОС Windows XP самой распространённой "программой с фортраном" является, наверное, Compaq Visual Fortran. Так бы и сидел научный брат за старым, но никем не отменным сине-зелёным фортаном, но повальный переход на новые 64 разрядные ОС (в т.ч. и Windows7) привёл к неизбежным переменам. Несмотря на то, что у CVF есть версия для 64 разрядных ОС, конкретно под Windows7 полноценно CVF отказывается работать.
Перед пользователем встаёт вопрос: как быть? Как вариант - можно снести Windows7 и поставить Windows XP, где CVF работает отлично. А можно перейти на какой-либо дистрибутив ОC Linux и программировать на свободном программном обеспечении (СПО, gfortran и g95). Правда для консервативного пользователя такое решение представляется слишком радикальным.
А ведь хочется как: работать под новенькой Windows7 и пользоваться всеми благами прежних программным пакетов. Преемником фирмы Compaq (последним продуктом CVF, кажется, стала версия 6.6) по поддержке и развитию фортрана стала фирма Microsoft с программным продуктом Microsoft Visual Studio (MSVS). Причём компилятор фортрана в него необходимо ставить отдельно, он не входит в дистрибутив по умолчанию. Для чистой совести также необходима лицензия MS.
Есть компромиссные варианты.
Он с успехом справляется с подавляющим большинством научных задач, решаемых на фортране. И gfortran и Geany являются СПО, так что на них можно работать как под ОС Windows, так и под ОС Linux.
Методы решения: Geany, CVF, gfortran, MinGW
Для пользователей ОС Windows XP самой распространённой "программой с фортраном" является, наверное, Compaq Visual Fortran. Так бы и сидел научный брат за старым, но никем не отменным сине-зелёным фортаном, но повальный переход на новые 64 разрядные ОС (в т.ч. и Windows7) привёл к неизбежным переменам. Несмотря на то, что у CVF есть версия для 64 разрядных ОС, конкретно под Windows7 полноценно CVF отказывается работать.
Перед пользователем встаёт вопрос: как быть? Как вариант - можно снести Windows7 и поставить Windows XP, где CVF работает отлично. А можно перейти на какой-либо дистрибутив ОC Linux и программировать на свободном программном обеспечении (СПО, gfortran и g95). Правда для консервативного пользователя такое решение представляется слишком радикальным.
А ведь хочется как: работать под новенькой Windows7 и пользоваться всеми благами прежних программным пакетов. Преемником фирмы Compaq (последним продуктом CVF, кажется, стала версия 6.6) по поддержке и развитию фортрана стала фирма Microsoft с программным продуктом Microsoft Visual Studio (MSVS). Причём компилятор фортрана в него необходимо ставить отдельно, он не входит в дистрибутив по умолчанию. Для чистой совести также необходима лицензия MS.
Есть компромиссные варианты.
Вариант I: gfortran
Можно установить БЕСПЛАТНЫЙ и СВОБОДНО распространяемый компилятор gfortran под Windows7 и работать с ним через Geany.Он с успехом справляется с подавляющим большинством научных задач, решаемых на фортране. И gfortran и Geany являются СПО, так что на них можно работать как под ОС Windows, так и под ОС Linux.
Вариант II: CVF через Geany
Есть один маленький фокус. Если установить на компьютер с Windows 7 или 8 Compaq Visual Fortran (CVF) и во время установки оставить все параметры по умолчанию, то можно будет "подцепить" компилятор CVF (df) через Geany или любой другой IDE (например, Notepad++).воскресенье, 10 апреля 2011 г.
Gfortran reading until EOF. EOF чтение до конца файла
Свободно распространяемый компилятор gfortran (http://ru.wikipedia.org/wiki/GFortran или http://www.gfortran.org/) имеет ряд "проблем" с функциями, которые спокойно работают в других компиляторах фортрана.
Одной из таких проблем является отсутствие возможности чтения до конца файла (EOF) в цикле условия (do while) в таком виде:
integer :: unit
real :: stud4
unit = 10
do while(.not. eof(unit)) ! Обработка данных файла
read(unit) stud4
***
end do
Как же заменить эту функцию в gfortran? Как один из вариантов - написать небольшую подпрограмму чтения файла до конца (до EOF), которая вычислит число строк в файле, и затем вернёт это целое значение n пользователю. Тогда вместо цикла "do while - enddo" ставим цикл "do i =1,n - enddo". Примером реализации такого алгоритма может служить такой вариант:
SUBROUTINE READ_EOF(n,nstrok)
INTEGER, INTENT(in) ::n ! Даётся явное описание входящих в подпрограмму параметров
INTEGER, INTENT(out) :: nstrok ! "-" исходящих из подпрограммы параметров
INTEGER :: nstrok_counter
CHARACTER(1) :: a
ioer=0
nstrok_counter=0
DO WHILE (ioer.eq. 0)
READ(n,*,iostat=ioer) a
nstrok_counter=nstrok_counter + 1
ENDDO
REWIND(n)
nstrok=nstrok_counter-1
RETURN
END
В подпрограмму передаётся номер канала n файла, который надо прочесть до конца (до EOF), и подпрограмма возвращает число строк, содержащихся в файле.
Одной из таких проблем является отсутствие возможности чтения до конца файла (EOF) в цикле условия (do while) в таком виде:
integer :: unit
real :: stud4
unit = 10
do while(.not. eof(unit)) ! Обработка данных файла
read(unit) stud4
***
end do
Как же заменить эту функцию в gfortran? Как один из вариантов - написать небольшую подпрограмму чтения файла до конца (до EOF), которая вычислит число строк в файле, и затем вернёт это целое значение n пользователю. Тогда вместо цикла "do while - enddo" ставим цикл "do i =1,n - enddo". Примером реализации такого алгоритма может служить такой вариант:
SUBROUTINE READ_EOF(n,nstrok)
INTEGER, INTENT(in) ::n ! Даётся явное описание входящих в подпрограмму параметров
INTEGER, INTENT(out) :: nstrok ! "-" исходящих из подпрограммы параметров
INTEGER :: nstrok_counter
CHARACTER(1) :: a
ioer=0
nstrok_counter=0
DO WHILE (ioer.eq. 0)
READ(n,*,iostat=ioer) a
nstrok_counter=nstrok_counter + 1
ENDDO
REWIND(n)
nstrok=nstrok_counter-1
RETURN
END
В подпрограмму передаётся номер канала n файла, который надо прочесть до конца (до EOF), и подпрограмма возвращает число строк, содержащихся в файле.
Подписаться на:
Сообщения (Atom)
Как перевести UV в направление и скорость ветра? How to convert wind UV-components to direction and velocity?
Всё просто. def uv2dir(u, v): ''' Источник: https://github.com/blaylockbk/Ute_WRF/blob/master/functions/wind_calc...
-
Задача: Поставить компилятор fortran-а на компьютер/ноутбук с операционной системой Windows7 (на 64 разрядную) Методы решения: Geany, CVF...
-
Задача: Получить значения p-квантиля данного массива Методы решения: python, scipy, numpy Значения квантиля (в зарубежных источниках ча...
-
Цель: Есть файл в формате netCDF. Хочется получить карту какой-либо гидрометеорологической величины за какой-нибудь временной срез в Window...