초기 조건 설정 결과 데이터 시뮬레이션 실행 프리뷰 렌더링 결과 영상 원본 영상 연출 영상 합성
모델링 시뮬레이션 가시화 렌더링
결과 데이터 (부분) . 초기 조건 설정 병렬 실행 결과 병합 결과 데이터 (전체)
… 사용자 시뮬레이션 팜 파일 서버 마스터 작업 추가 결과 이미지 자동 전송 작업 및 노드 자원 관리 계산 노드 시뮬레이션 실행 결과 병합 및 렌더링 내부 네트워크 외부 네트워크
파일 서버 시뮬레이션 팜 마스터 사용자 계산 노드 … 내부 네트워크 외부 네트워크
1 3 4 2 1 2 3 4 공간 분할 고스트 셀 통신
사용자 파일 서버 작업 큐 2. 계산 노드로 작업 배정 후 실행 3. 결과 전송 후 병합 1. 작업 추가 이미 실행 중인 작업이 있는 계산 노드 추가로 작업을 수행할 수 있는 계산 노드 분할된 공간의 시뮬레이션 결과 파일 서버 3. 결과 전송 후 병합 2. 계산 노드로 작업 배정 후 실행 4. 시뮬레이션 결과를 e-mail로 사용자에게 전송
simulation00: Req'd Req'd Elap Job ID Username Queue Jobname SessID NDS TSK Memory Time S Time -------------------- -------- -------- ---------------- ------ ----- --- ------ ----- - ----- 106279.simulatio stkim earth object_script4.s 30182 4 -- -- -- R 03:47 106281.simulatio shcha mars CMIP_SCRIPT9.sim 12591 4 -- -- -- R 03:34 106282.simulatio shcha mars CMIP_SCRIPT10.si 21316 4 -- -- -- R 03:33 106283.simulatio jhlee venus smoke_test_16.si 10963 4 -- -- -- R 03:27
Job Id: 106283.simulation00 Job_Name = smoke_test_16.sim Job_Owner = jhlee@simulation00 resources_used.cput = 00:00:01 resources_used.mem = 6424kb resources_used.vmem = 279620kb resources_used.walltime = 03:28:52 job_state = R queue = venus server = simulation00 Checkpoint = u ctime = Thu Apr 22 07:38:47 2010 Error_Path = simulation00:/home/jhlee/Works/smoke_test/smoke_test_16.sim.e 106283 exec_host = simulation19/3+simulation19/2+simulation19/1+simulation19/0+si mulation18/3+simulation18/2+simulation18/1+simulation18/0+simulation22 /3+simulation22/2+simulation22/1+simulation22/0+simulation24/3+simulat ion24/2+simulation24/1+simulation24/0 Hold_Types = n Join_Path = oe Keep_Files = n Mail_Points = a mtime = Thu Apr 22 07:38:47 2010 Output_Path = simulation00:/home/jhlee/Works/smoke_test/smoke_test_16.sim. o106283 Priority = 0 qtime = Thu Apr 22 07:38:47 2010 Rerunable = True Resource_List.neednodes = 4:ppn=4:venus Resource_List.nodect = 4 Resource_List.nodes = 4:ppn=4:venus session_id = 10963 substate = 42 Variable_List = PBS_O_HOME=/home/jhlee,PBS_O_LANG=en_US.UTF-8, PBS_O_LOGNAME=jhlee, PBS_O_PATH=/usr/lib64/qt-3.3/bin:/usr/kerberos/sbin:/usr/kerberos/bin :/usr/lib64/ccache:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/s bin:/sbin:/home/jhlee/MTF/bin:/opt/intel/Compiler/11.1/064/bin/intel64 :/usr/local/openmpi/bin:/home/jhlee/bin, PBS_O_MAIL=/var/spool/mail/jhlee,PBS_O_SHELL=/bin/bash, PBS_O_HOST=simulation00,PBS_SERVER=simulation00, PBS_O_WORKDIR=/home/jhlee/Works/smoke_test,PBS_O_QUEUE=venus euser = jhlee egroup = jhlee hashname = 106283.simulation00 queue_rank = 7804 queue_type = E comment = Job started on Thu Apr 22 at 07:38 etime = Thu Apr 22 07:38:47 2010 submit_args = /home/jhlee/Works/smoke_test/smoke_test_16.sim.job.venus.sh start_time = Thu Apr 22 07:38:47 2010 start_count = 1 fault_tolerant = False
simulation32 state = free np = 4 properties = earth ntype = cluster status = opsys=linux,uname=Linux simulation32 2.6.31.9-174.fc12.x86_64 #1 SMP Mon Dec 21 05:33:33 UTC 2009 x86_64,sessions=? 15201,nsessions=?15201,nusers=0,idletime=533905, totmem=33353212kb,availmem=32674952kb,physmem=12381700kb,ncpus=4,loadave=0.00, netload=2441814930168,state=free,jobs=,varattr=,rectime=1271902172 simulation33 state = job-exclusive properties = mars jobs = 0/106281.simulation00, 1/106281.simulation00, 2/106281.simulation00, 3/106281.simulation00 status = opsys=linux,uname=Linux simulation33 2.6.31.9-174.fc12.x86_64 #1 SMP Mon Dec 21 05:33:33 UTC 2009 x86_64,sessions=20075,nsessions=1,nusers=1,idletime=1728605,totmem=33353212kb, availmem=31712704kb,physmem=12381700kb,ncpus=4,loadave=4.04,netload=4921902246338, state=free,jobs=76308.simulation00 76326.simulation00 76374.simulation00 76325.simulation00 76292.simulation00 76375.simulation00 76297.simulation00 76360.simulation00 76338.simulation00 76382.simulation00 76337.simulation00 76281.simulation00 106281.simulation00,varattr=,rectime=1271902151
foreach(every cell in grid) { location = cell.location(); index = location_to_grid_index(cell.location()); if(levelset_signed_distance(location)<=0) velocity_field(index)[y] += sin(location[x]*initial_wave_frequency) *cos(location[z]*initial_wave_frequency) *initial_wave_amplitude; }
INCOMPRESSIBLE_MULTIPHASE_FLUID { use_density=1 use_variable_density=1 ambient_density=0.00125 gravity=0 -9.8 0 CFL=2 left_wall=1 right_wall=1 bottom_wall=1 top_wall=0 front_wall=1 back_wall=1 initial_wave_amplitude=0.1 initial_wave_frequency=40 UNIFORM_GRID resolution=200 100 200 size=2 1 2 } //Base Water INITIAL_SOURCE velocity=0 0 0 translation=-1 0 0 BOX min_corner=-100 0 -100 max_corner=100 0.2 100
SIMULATION_WORLD { dimension=int|2 last_frmae=int|0 frame_rate=int|30 output_directory=string|./output write_output_files=bool|true write_substeps=bool|true } INCOMPRESSIBLE_MULTIPHASE_FLUID source_noise_amplitude=real|0 source_noise_period=real|0 initial_wave_frequency=real|0 initial_wave_amplitude=real|0 max_velocity_magnitude=real|0 write_levelset_with_object=bool|false SUB_BLOCK::UNIFORM_GRID INITIAL_LEVELSET_SOURCE SUB_BLOCK::FLUID_CONTROL_OBJECT
callback({ SIMULATION_WORLD: { dimension: 2, last_frame: 0, frame_rate: 30, output_directory: "./output", write_output_files: true, write_substeps: true, }, INCOMPRESSIBLE_MULTIPHASE_FLUID: { source_noise_amplitude: 0, source_noise_period: 0, initial_wave_frequency: 0, initial_wave_amplitude: 0, max_velocity_magnitude: 0, write_levelset_with_object: false, GRID: { resolution: ’10,10,10’, size: ’1,1,1’ } INITIAL_LEVELSET_SOURCE: { translation: ’0,0,0’, velocity: ‘0,0,0’, BOX: { min_corner: ‘0,0,0’, max_corner: ‘1,1,1’ });
모델 변환 및 프리뷰 렌더링 시뮬레이션 모델링 INCOMPRESSIBLE_MULTIPHASE_FLUID { use_density=1 use_variable_density=1 ambient_density=0.00125 gravity=0 -9.8 0 CFL=2 // ……