안녕하세요 포트란의 2 차원 이산화 문제에 경계 조건을 부과하는 데 어려움이 있습니다. 내 이산화 격자는 x, y 방향으로 -L에서 L까지가는 2 차원 사각형입니다.포트란의 2D 경계 조건
x = L에서 경계선에 이 있고 그 값이 지정되는 경계 조건을 부과하고자합니다. 또한 경계선 y = L에서 경계 조건을 지정하려고합니다. 그런 다음 x, y = -L에 대해서도 동일하게하십시오.
올바른 구문에 대한 기본적인 시도는 다음과 같습니다. 이 구문이 정확하고 내가하는 일을하는 가장 빠른 방법인지 궁금합니다. 어떻게 해야할지 모르겠지만 콜론 표기법을 사용하여 루프를 수행하지 않는 방법이 있다고 가정합니다.
u (:) 표기법을 올바르게 사용하는 방법이나 : for : 나를 위해 실제로 수행하고있는 방법이 확실하지 않으므로 구문이 잘못 될 수 있습니다. 감사! 아크 라이트 포인트는 밖으로, 종종 초보자를위한 문제를 혼동으로
integer :: i,j
integer, parameter :: nx=60, ny=60
real, parameter :: h=0.1 !step size
real, dimension(-nx:nx,-ny:ny) :: u
real :: L
L=h*nx
do i = -nx, nx
x = real(i)*h
u(:,ny) = cos(atan(L/x)) ! is this correct?
u(:,-ny) = cos(atan((-L)/x))
end do
do j = -ny, ny
y = real(j)*h
u(nx, :) = cos(atan(y/L))
u(-nx, :) = cos(atan(y/(-L)))
end do
왜 i 또는 j로 반복하고 루프 내에서 루프 변수를 전혀 사용하지 않습니까? 이 경우 콜론 표기 * 또는 *를 사용해야합니다. – Ross
@ 로스 나는 첫 번째 루프에서 i를 반복하고, x는 i의 관점에서 정의되기 때문에 첫 번째 라인에서 루프 변수 i를 사용합니다. 또한 j 이상의 루프에서는 y를 정의 할 때 첫 번째 줄에 루프 변수를 사용합니다. 이게 정확하지 않습니까? 콜론 표기법을 사용하면 어떻게됩니까? 루프 표기법에서 콜론 표기법이 작동합니까? (나는 둘 다 섞여 보인다.) 당신의 도움을 주셔서 감사합니다! –
나는 x가 포인트 값이라는 것을 놓쳤습니다. 그렇다면 가까운 사이라고 생각합니다.하지만'u (:, ny)'대신'u (i, ny)'를 설정해야합니다. 콜론은 '이 행/열의 모든 위치'를 나타내며 x 값에 따라 한 번에 하나씩 만 설정하려고합니다. – Ross