!> spx业务层 module spx_module use spx_kinds, only: rk use spx_configuration, only: spc_obj, tic_obj, ioc_obj use spx_pif_namelist, only: pnl_obj use spx_pif_h5part, only: pif_obj use spx_time_integration, only: tig_obj use spx_smoothed_kernel_function, only: skf_obj use spx_external_force, only: exf_obj use spx_eos, only: eow_obj use spx_density_summation, only: dsm_obj use spx_nnps_pairs, only: pairs, nnps_grid use spx_memory, only: mem_obj use spx_env, only: backup, rgn_obj, float_obj implicit none private public :: run contains !> sph求解器 !> @note 目前仅支持液体模拟 subroutine run() integer :: i ! 读取配置文件 call spc_obj%read() call tic_obj%read() call ioc_obj%read() ! 读取粒子属性 call pnl_obj%read() call pif_obj%read(rgn_obj) allocate (float_obj(pif_obj%numbers(5))) ! 初始化浮动粒子对象 do i = 1, pif_obj%numbers(5) call float_obj(i)%init(pif_obj%ptc, istart=pif_obj%float_objects(1, i), & iend=pif_obj%float_objects(2, i)) end do ! 储存固定粒子属性 call rgn_obj%create_backup(backup, istart=pif_obj%nreal + 1, iend=pif_obj%numbers(4)) ! 初始化输出文件 call pif_obj%open() call pif_obj%write(0.0_rk) call skf_obj%init() call exf_obj%init() call eow_obj%init() call dsm_obj%init() call nnps_grid%init(rgn_obj%loc, pif_obj%numbers(4)) call pairs%init(pif_obj%numbers(4)) ! 4096 是初始化的预估粒子对数 ! ! 力学时间积分求解并输出结果 call tig_obj%init() call tig_obj%run() ! 析构 call pif_obj%close() call mem_obj%init() call mem_obj%report() end subroutine run end module spx_module