Articles of fortran

Declaração Fortran SAVE

Eu li sobre a instrução save no documento de referência da linguagem (da Intel), mas não consigo entender o que ela faz. Alguém poderia me explicar em linguagem simples o que significa quando a instrução de save é incluída em um módulo?

A instalação do pacote OS X depende do gfortran-4.8

Estou usando a versão de desenvolvimento do OS X do R R Under development (unstable) (2014-05-27 r65787) Platform: x86_64-apple-darwin13.1.0 (64-bit) com o GNU Fortran (GCC) 4.2.3 (do site do Simon ) e a versão 5.1.1 das ferramentas de linha de comando do Xcode. Ao criar a partir do código-fonte, recebo erros como: gfortran-4.8 -fPIC -g […]

Sufixo correto para o arquivo fonte do Fortran 2003 – Intel Fortran compilador

Eu escrevi um pequeno trecho de código, tentando aderir ao padrão Fortran 2003. O código está disponível no github . Este é meu makefile: FC = gfortran FLGS = -g -pg -std=f2003 -I. -fbounds-check DEPS = camx.prm OBJ = unit-test-hadvppm.o hadvppm.o #linker macro %.o: %.f03 $(DEPS) $(FC) -c -o $@ $< $(FLGS) #build targets gnu-amd64-linux: […]

Formatação de saída: muito espaço em branco em gfortran

Usando o gfortran 4.6. Este código: PROGRAM f1 IMPLICIT NONE INTEGER :: i=1, j=3 WRITE(*,*) “integer i is “, i, “, and j is “, j, “.” END PROGRAM f1 produz esta saída do console, que tem muito espaço em branco: integer i is 1 , and j is 3 . Existe alguma configuração que […]

O programa Fortran OpenMP não mostra nenhum aumento de CPU_TIME ()

O uso de paralelismo deveria levar a minimizar o tempo de um programa, mas isso não aconteceu comigo. Quando eu programei meu código em paralelo usando o OpenMP, o tempo de execução é aumentado, ou seja, TEMPO PARALELO> TEMPO DE SÉRIE. Meu código: PROGRAM MAIN use omp_lib implicit none REAL*8 Times1,Times2 INTEGER I,J real, allocatable, […]

Matrizes de tamanho assumidas: Cólon vs. asterisco – DIMENSÃO (:) arr vs. arr (*)

Existe alguma diferença entre esses dois methods de declarar uma matriz de tamanho assumido? por exemplo real, dimension(:) :: arr e real :: arr(*)

mudando as dimensões do array no fortran

Existem basicamente duas maneiras de passar matrizes para uma sub-rotina em Fortran 90/95: PROGRAM ARRAY INTEGER, ALLOCATABLE :: A(:,:) INTEGER :: N ALLOCATE(A(N,N)) CALL ARRAY_EXPLICIT(A,N) ! or CALL ARRAY_ASSUMED(A) END PROGRAM ARRAY SUBROUTINE ARRAY_EXPLICIT(A,N) INTEGER :: N INTEGER :: A(N,N) ! bla bla END SUBROUTINE ARRAY_EXPLICIT SUBROUTINE ARRAY_ASSUMED(A) INTEGER, ALLOCATABLE :: A(:,:) N=SIZE(A,1) ! bla […]

Chamando uma sub-rotina FORTRAN de C

Eu estou tentando chamar uma function FORTRAN de C Minhas perguntas são: Se fortRoutine é o nome da minha sub-rotina fortran, então eu estou chamando isto de C como fortRoutine_ . Se fortRoutine contiver apenas um argumento de matriz de caracteres, então posso passar assim: fortRoutine_(“I am in fortran”); Ao chamar sub-rotinas FORTRAN, quando devo […]

Fortran é mais fácil de otimizar do que C para cálculos pesados?

De vez em quando eu li que Fortran é ou pode ser mais rápido que C para cálculos pesados. Isso é realmente verdade? Devo admitir que mal conheço o Fortran, mas o código do Fortran que vi até agora não mostrou que a linguagem possui resources que o C não possui. Se é verdade, por […]

Como passar matrizes de alocação para sub-rotinas em Fortran

O código a seguir está retornando uma Falha de Segmentação porque a matriz alocável que estou tentando transmitir não está sendo reconhecida corretamente (o tamanho retorna 1, quando deveria ser 3). Nesta página (http://www.eng-tips.com/viewthread.cfm?qid=170599) um exemplo semelhante parece indicar que ele deve funcionar bem em F95; meu arquivo de código tem uma extensão .F90, mas […]