2016-10-20 2 views
0

현재 MD 시뮬레이션을 진행 중입니다. 분자 위치를 벡터에 저장합니다. 각 시간 단계에서, 그 벡터는 위치 벡터로서분자 계산을위한 메모리 절약 시스템

std::vector<std::vector<molecule> > data; 

data의 크기를 sizeof (분자) (이미 감소)된다 time steps*<number of molecules>*sizeof(molecule)이다 3*sizeof(double) 결과 번째 벡터에 표시하기 위해 기억된다. 아직도 많은 양의 시간 간격과 분자의 수에 대한 기억 문제가 있습니다.

따라서 데이터 양을 줄이는 추가 가능성이 있습니까? 현재의 작업 흐름은 모든 분자를 먼저 계산하고 저장 한 다음 각 단계마다 각 분자의 데이터를 사용하여 렌더링하며 Irrlicht를 사용하여 렌더링합니다. (나중에 블렌더로).

+0

정말 모든 시간 단계를 유지해야합니까? –

답변

0

두 배가 아닌 단 정밀도로 위치를 저장하면 2 배의 개선점을 얻을 수 있습니다. 시뮬레이션이 아닌 경우 렌더링에 충분합니다.

하지만 궁극적으로 결과를 파일에 저장하고 오프라인으로 렌더링해야합니다.

3

궤적이 부드러 우면 N 번째 단계마다 저장하고 중간 위치를 보간하여 복원함으로써 데이터를 압축하는 것을 고려할 수 있습니다.

시간 간격이 작 으면 선형 보간 작업을 수행 할 수 있습니다. 큐빅 스플라인으로 최고의 품질을 제공 할 수 있습니다. 어쨌든 스플라인 계수는 최종적으로 수행 할 수 있으며 추가 저장 공간 (!)을 필요로하는 글로벌 작업이며 4 개의 연속 위치에서 로컬로 작성할 수있는 카디널 스플라인을 선호 할 수 있습니다.

enter image description here

관련 문제