표시된 코드는 컴파일되어 예상대로 실행되어야합니다. 나는 당신이 실제로 1xN 배열을 읽고 있다고 가정하고, "1X1"이라고 말했을 때 오타였습니다. 그렇지 않으면, minloc
을 사용하는 데 아무런 의미가 없습니다.
그러나 스칼라 값에 내장형 minloc
을 사용하는 경우 주석 (An array-valued argument is required in this context
)에보고 한 오류 메시지가 발생합니다. 따라서, 제 생각에 dist
을 배열로 선언하지 않았기 때문입니다. read(funit1,*) x
와
! The contents of 'values.txt' are: -3.1, 4.1, 5.9, 2.6, -5.4
! Values may be separated by commas or blanks.
program get_min_dist
implicit none
real :: x ! <-- Cannot be used to represent an array.
real, dimension(5) :: a ! <-- An array of 5 reals. Do this instead.
integer :: loc, funit1
open(newunit=funit1, file="values.txt", status="old")
read(funit1,*) x
rewind(funit1)
read(funit1,*) a
close(funit1)
loc = minloc(abs(a-1),1) ! <-- I'm assuming there is a reason to
! subtract 1 from all values in the array
! loc = minloc(abs(x-1),1) ! <-- Error 'An array-valued arg is required`
print*, "x=",x
print*, "a=",a
print*, "index=", loc
print*, "value=", a(loc)
end program get_min_dist
첫 번째 값은 파일이 당신이 본 오류 메시지의 결과를 읽을 때 할당됩니다 : 여기에 내가 무엇을 의미하는지에 대한 간단한 예입니다. 그러나 배열 a
을 사용하면 예상되는 결과를 얻게됩니다.
아바쿠스는 F77 스타일의 고정 서식 예제와 문서를 제공하기 위해 계속하고, 포트란 소스 코드를 필요로한다는 사실로 인해 수 있습니다 F77 호환 코드를 사용할 필요 귀하의 혼란이 제공 할 수있는 .F 또는 .for 확장자 . 기본적으로이 확장은 ifort
에 고정 형식 코드를 요구합니다. 입니다. 그러나 사용하는 컴파일러 버전에서 지원하는 Fortran 기능은 고정 형식 인 경우에도 유효합니다. 다른 Fortran 버전의 기능을 사용할 수 있는지에 대한 자세한 내용은 (Intel Fortran) 설명서를 참조하십시오. 이 예를 들어, 어떻게 든 변경 될 수있는 경우
1 나도 기쁠 것 확장자는 .f90
입니다.
2이 설정 적어도 내가 사용했던 버전 (6.9-6.14)를 들어, 아바쿠스 환경 파일에서 변경할 수 있습니다. 나는 그것이 더 새로운 방출로 바뀌 었다고 생각하지 않는다, 그러나 아마. 동의하지 않고 다른 사용자와 환경을 공유하는 경우, 특히 초보자에게 환경을 변경하는 경우 변경하지 않는 것이 좋습니다.
'minloc'은 f95이지만, f77 전용 컴파일러에서 abaqus를 사용하는 방법은 없습니다. – agentp
dist 란 무엇입니까? 더 많은 코드를 보여주세요! 선언문을 보여주십시오. 'read (99, *) dist '도 Fortran 90입니다. Fortran 90을 피해야한다고 생각하지 않습니다. –
확인. 고맙습니다. Fortran 90 또는 95를 사용해 보겠습니다. – Kim