구조체에 포함 된 배열 형식에 문제가 있거나 C를 처음 사용했습니다. 나는이 컴파일 할 때구조체 배열
typedef struct {
double J[151][151];
} *UserData;
static int PSolve(void *user_data, N_Vector solution)
{
UserData data;
data = (UserData) user_data;
double J[151][151];
J = data->J;
/* Solve a matrix equation that uses J, stored in 'solution' */
return(0);
}
내가 오류 얻을 : 다음은 내 문제의 예입니다 입력 할당 할 때 호환되지 않는 유형을 '더블 [151] [151]'더블 '유형에서 (*) 151] '
이 문제에 대한 현재의 해결 방법은 행렬 방정식을 풀 때 코드에서'J [x] [y] '를'data-> J [x] [y] '로 바꾸는 것이 었습니다. 덜 효율적인 것으로 나타났습니다.
인수의 형식과 순서를 지정하는 sundials-cvode 해결사를 사용하기 때문에 인수를 PSolve로 변경하는 것은 옵션이 아닙니다.
는 도움을 앤드류 감사
가능한 중복 [C 배열 선언 및 할당?] (http://stackoverflow.com/questions/744536/c-array-declaration-and-assignment) – outis
'data-> J'를 로컬 배열에 복사하는 대신? 아니면 해당 기능 내에서 수정 하시겠습니까? –
나는 그 해결 방안으로 매트릭스 방정식에서 데이터 -> J [x] [y]를 읽었 음을 언급했다. 그러나이 기능은 실행 중에 수십억 번 호출됩니다. 데이터 -> J는 성능 병목 현상으로 나타납니다. 해결 방법으로 로컬 복사본을 얻으려고합니다. – Sevenless