program pardiso_for_multi_mateices use Solver implicit none integer::ndof_1,ndof_2,nnz_1,nnz_2 integer,allocatable::ia_1(:),ia_2(:),ja_1(:),ja_2(:) real(8),allocatable::aa_1(:),aa_2(:) real(8),allocatable::rhs_1(:),rhs_2(:),sol_1(:),sol_2(:) logical::flag_1,flag_2 integer::pt_1(64),pt_2(64) !--------------------------------------------------------- ndof_1=4;ndof_2=5 nnz_1=7;nnz_2=9 allocate(ia_1(ndof_1+1));allocate(ia_2(ndof_2+1)) allocate(ja_1(nnz_1));allocate(ja_2(nnz_2)) allocate(aa_1(nnz_1));allocate(aa_2(nnz_2)) allocate(rhs_1(ndof_1));allocate(rhs_2(ndof_2)) allocate(sol_1(ndof_1));allocate(sol_2(ndof_2)) !--------------------------------------------------------- aa_1(1)=1.d0;aa_1(2)=2.d0;aa_1(3)=3.d0;aa_1(4)=5.d0;aa_1(5)=4.d0;aa_1(6)=2.d0;aa_1(7)=6.d0 ia_1(1)=1;ia_1(2)=3;ia_1(3)=5;ia_1(4)=7;ia_1(5)=8 ja_1(1)=1;ja_1(2)=4;ja_1(3)=2;ja_1(4)=3;ja_1(5)=3;ja_1(6)=4;ja_1(7)=4 rhs_1(1)=3.d0;rhs_1(2)=8.d0;rhs_1(3)=11.d0;rhs_1(4)=10.d0 sol_1=0.d0 !--------------------------------------------------------- aa_2(1)=6.d0;aa_2(2)=1.d0;aa_2(3)=2.d0;aa_2(4)=2.d0;aa_2(5)=1.d0 aa_2(6)=8.d0;aa_2(7)=1.d0;aa_2(8)=3.d0;aa_2(9)=4.d0 ia_2(1)=1;ia_2(2)=4;ia_2(3)=6;ia_2(4)=8;ia_2(5)=9;ia_2(6)=10 ja_2(1)=1;ja_2(2)=3;ja_2(3)=5;ja_2(4)=2;ja_2(5)=3 ja_2(6)=3;ja_2(7)=4;ja_2(8)=4;ja_2(9)=5 rhs_2(1)=9.d0;rhs_2(2)=3.d0;rhs_2(3)=11.d0;rhs_2(4)=4.d0;rhs_2(5)=6.d0 sol_2=0.d0 !--------------------------------------------------------- call solver_pardiso_factor(ndof_1,nnz_1,ia_1,ja_1,aa_1,sol_1,rhs_1,pt_1,flag_1) call solver_pardiso_bsubst(ndof_1,nnz_1,ia_1,ja_1,aa_1,sol_1,rhs_1,pt_1,flag_1) call solver_pardiso_factor(ndof_2,nnz_2,ia_2,ja_2,aa_2,sol_2,rhs_2,pt_2,flag_2) call solver_pardiso_bsubst(ndof_2,nnz_2,ia_2,ja_2,aa_2,sol_2,rhs_2,pt_2,flag_2) write(*,"(4f5.2)") sol_1(:) write(*,"(5f5.2)") sol_2(:) write(*,*) rhs_1(1)=6.d0;rhs_1(2)=16.d0;rhs_1(3)=22.d0;rhs_1(4)=20.d0 rhs_2(1)=27.d0;rhs_2(2)=9.d0;rhs_2(3)=33.d0;rhs_2(4)=12.d0;rhs_2(5)=18.d0 call solver_pardiso_bsubst(ndof_1,nnz_1,ia_1,ja_1,aa_1,sol_1,rhs_1,pt_1,flag_1) call solver_pardiso_bsubst(ndof_2,nnz_2,ia_2,ja_2,aa_2,sol_2,rhs_2,pt_2,flag_2) write(*,"(4f5.2)") sol_1(:) write(*,"(5f5.2)") sol_2(:) write(*,*) rhs_1(1)=9.d0;rhs_1(2)=24.d0;rhs_1(3)=33.d0;rhs_1(4)=30.d0 rhs_2(1)=36.d0;rhs_2(2)=12.d0;rhs_2(3)=44.d0;rhs_2(4)=16.d0;rhs_2(5)=24.d0 call solver_pardiso_bsubst(ndof_1,nnz_1,ia_1,ja_1,aa_1,sol_1,rhs_1,pt_1,flag_1) call solver_pardiso_bsubst(ndof_2,nnz_2,ia_2,ja_2,aa_2,sol_2,rhs_2,pt_2,flag_2) write(*,"(4f5.2)") sol_1(:) write(*,"(5f5.2)") sol_2(:) write(*,*) call solver_pardiso_termin(ndof_1,nnz_1,ia_1,ja_1,aa_1,sol_1,rhs_1,pt_1,flag_1) call solver_pardiso_termin(ndof_2,nnz_2,ia_2,ja_2,aa_2,sol_2,rhs_2,pt_2,flag_2) end program