Показаны сообщения с ярлыком 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
О.В. Бартеньев, "Современный Фортран", стр. 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". Пройдём её вместе.


суббота, 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.

Есть компромиссные варианты.

Вариант 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), и подпрограмма возвращает число строк, содержащихся в файле.

Как перевести 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...