Описание тега allocatable-array

This tag is about the use of allocatable arrays in Fortran. Such arrays can have their bounds (shape) varying at run time. Questions using this tag should usually have the more general fortran tag also.
2 ответа

Атрибут ALLOCATABLE или POINTER определяет параметр deferred-shape-array` в подпрограмме ABAQUS

Код: double precision maxstress(w) real, dimension(:), allocatable, save :: han(w) integer jang(w) do i=1,nblock if(maxstress(i) . gt. 1000) then jang(i) =1 han(i) = han(i) + 1 else jang(i) =0 endif write(*,*) "jang", i, jang(i) write(*,*) "han", i,…
0 ответов

Используя размещаемые массивы из модулей в f2py

У меня проблемы с размещаемыми массивами в f2py, В приведенном ниже коде (хранится в mymod.f90), Я создал два модуля, vars а также worker: vars хранит и выделяет массив b worker содержит подпрограммы для работы с этим массивом из vars, Первый worker…
01 окт '18 в 19:13
1 ответ

OpenMP параллельный рабочий ресурс для выделяемого массива

Я хочу сделать некоторые поэтапные вычисления для массивов в Fortran 90, распараллеливая мой код с openmp. Теперь у меня есть следующий код: program test implicit none integer,parameter :: n=50 integer :: i integer(8) :: t1,t2,freq real(8) :: seq(n)…
20 мар '16 в 15:06
1 ответ

Прочитать выделяемую строку со списком имен в Фортране

Начиная с Fortran 2003 можно работать с символьными строками переменной длины. Вместо того, чтобы работать архаично и объявлять постоянную длину строки, я хотел бы динамически читать строки символов моего списка имен. Рассмотрим программу program bu…
28 окт '18 в 19:09
2 ответа

Почему этот интерфейс модуля Fortran дает разные результаты в зависимости от того, сколько его функций используется?

Я написал модуль, который содержит интерфейс "push", который помещает значения в размещаемые массивы. Я хочу, чтобы он имел общее поведение, чтобы при необходимости я мог добавить новую функцию для заданного типа в интерфейс push. Проблема заключает…
1 ответ

Ошибка времени выполнения Fortran: конец файла для размещаемых массивов

Я делаю задание для класса, в котором нам нужно написать программу с использованием выделяемых массивов для хранения произвольного числа пар данных x и y, соответственно распределить размеры массивов, а затем вычислить коэффициент корреляции произво…
1 ответ

Выделяемый массив '' в (1) должен иметь отложенную форму или предполагаемый ранг, а синтаксическая ошибка в операторе READ в (1) ошибках

Я пытаюсь прочитать файл ASCII и получаю ошибки при компиляции, такие как: Error: Syntax error in READ statement at (1) А также Error: Allocatable array 'pos' at (1) must have a deferred shape or assumed rank Мой код: subroutine read_file(pos,mass,r…
2 ответа

Указатель на производный тип, который содержит размещаемый массив

Вообще говоря, я хочу переименовать размещаемые переменные в производном типе, которые передаются через аргументы подпрограммы. Написание всего с "производным%type_xx" не так приятно. Кроме того, я не хочу тратить дополнительную память на копировани…
0 ответов

Почему проверка времени выполнения gfortran не работает при передаче выделяемых массивов в виде автоматических массивов подпрограммам неправильной формы?

Я компилирую следующую программу с gfortran -g -fcheck=all -Wall bug.F90: program main implicit none real, dimension(:), allocatable :: arr allocate (arr(5)) ! should fail, but happily writes out of bounds call foo(arr) contains subroutine foo(arr) …
2 ответа

Чтение выделяемых массивов из списков имен

Я использую GNU Fortran (GCC) 4.8.2 Я хочу читать размещаемые массивы из списка имен. Но я не знаю заранее, сколько элементов нужно прочитать в выделяемый массив, поэтому я не могу выделить его, прежде чем читать список имен. Это мой список имен: na…
1 ответ

Восстановите хранилище неразмещаемых больших массивов в Фортране

Оператор deallocate используется для восстановления хранилища выделяемого массива, который больше не нужен. А как насчет неразмещаемых массивов? Предположим (в основной и единственной программе) есть объявление, подобное INTEGER, DIMENSION(100,100) …
30 июн '16 в 11:03
2 ответа

Фортран: выбор ранга выделяемого массива

Я пытаюсь написать программу, в которой я хочу разместить массив A иметь ранг 1, 2 или 3, в зависимости от моего ввода во время выполнения. Я хочу сделать это, так как последующие операции на A похожи, и я определил в модуле интерфейс work с модульн…
27 июн '16 в 15:40
1 ответ

Разработка производного типа с компонентами массива

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

Границы массива с массивом 0 в Фортране

При распределении массивов нулевого размера в Фортране я получаю противоречивое поведение. Этот код: program test_zerosized implicit none integer, allocatable :: a(:),b(:) allocate(a(0)) print *, ' a lower bound = ',lbound(a,1) print *, ' a upper bo…
20 ноя '18 в 13:31
1 ответ

Fortran: Выделяемый массив производного типа, содержащий массив производного типа

В настоящее время я работаю над большой программой на Фортране, где у меня есть дискретная числовая сетка, которая содержит серию частиц, которые я отслеживаю в пределах сетки. Для этого я определил следующие три производных типа: type :: particle r…
24 авг '14 в 21:05
1 ответ

Выделить массив из массива размеров

Допустим, у меня есть массив измерений, объявленных так: integer, dimension(5) :: dims dims = (/ 5, 6, 7, 8, 9 /) Как я могу наиболее просто использовать этот массив для выделения другого массива, используя элементы dims указать размер соответствующ…
2 ответа

Вызовы подпрограмм с размещаемыми массивами

В моем коде у меня проблемы с памятью из-за компьютера, который я использую, поэтому я хочу выделить как можно меньше памяти при передаче аргументов. Мой пример кода: program test double precision, ALLOCATABLE :: arrayA(:) allocate (arrayA(n)) call …
10 ноя '15 в 14:14
1 ответ

Передача определяемого пользователем типа данных в массиве

Я могу определить пользовательский тип данных с размещаемым массивом в качестве его типа данных. Распределение работает отлично, пока мы все еще в той же подпрограмме. Но я не знаю, как передать этот тип пользовательского типа данных в качестве аргу…
01 мар '17 в 10:43
1 ответ

Нужен ли явный интерфейс для выделения компонента производного типа в подпрограмме?

У меня есть производный тип: module foo type bar integer, allocatable, dimension(:) :: data end type bar end module foo Теперь я хотел бы выделить barданные в подпрограмме без явного интерфейса: program main use foo type(bar) :: mybar call alloc_my_…
21 фев '13 в 05:37
2 ответа

Может ли аргумент Allocatable Intent(inout) быть необязательным?

У меня проблема при попытке определить подпрограмму, аргумент которой содержит размещаемую, необязательную, намеренную (inout) переменную, показанную ниже. Код компилируется нормально, но выдает ошибку времени выполнения "Ошибка сегментации - недопу…
15 авг '17 в 02:04