CFLAGS = FFLAGS = CPPFLAGS = FPPFLAGS = LOCDIR = src/ksp/ksp/examples/tests/ NOADIC = true EXAMPLESC = ex1.c ex3.c ex4.c ex6.c ex7.c ex10.c \ ex14.c ex15.c ex17.c ex18.c ex19.c ex20.c ex21.c ex24.c ex25.c ex26.c ex27.c ex32.c ex34.c EXAMPLESCH = EXAMPLESF = ex5f.F ex12f.F ex16f.F include ${PETSC_DIR}/conf/variables include ${PETSC_DIR}/conf/rules ex1: ex1.o chkopts -${CLINKER} -o ex1 ex1.o ${PETSC_KSP_LIB} ${RM} ex1.o ex2: ex2.o chkopts -${CLINKER} -o ex2 ex2.o ${PETSC_KSP_LIB} ${RM} ex2.o ex3: ex3.o chkopts -${CLINKER} -o ex3 ex3.o ${PETSC_KSP_LIB} ${RM} ex3.o ex4: ex4.o chkopts -${CLINKER} -o ex4 ex4.o ${PETSC_KSP_LIB} ${RM} ex4.o ex5: ex5.o chkopts -${CLINKER} -o ex5 ex5.o ${PETSC_KSP_LIB} ${RM} ex5.o ex6: ex6.o chkopts -${CLINKER} -o ex6 ex6.o ${PETSC_KSP_LIB} ${RM} ex6.o ex7: ex7.o chkopts -${CLINKER} -o ex7 ex7.o ${PETSC_KSP_LIB} ${RM} ex7.o ex8: ex8.o chkopts -${CLINKER} -o ex8 ex8.o ${PETSC_KSP_LIB} ${RM} ex8.o ex9: ex9.o chkopts -${CLINKER} -o ex9 ex9.o ${PETSC_KSP_LIB} ${RM} ex9.o ex10: ex10.o chkopts -${CLINKER} -o ex10 ex10.o ${PETSC_KSP_LIB} ${RM} ex10.o ex11: ex11.o chkopts -${CLINKER} -o ex11 ex11.o ${PETSC_KSP_LIB} ${RM} ex11.o ex12f: ex12f.o chkopts -${FLINKER} -o ex12f ex12f.o ${PETSC_KSP_LIB} ${RM} ex12f.o ex5f: ex5f.o chkopts -${FLINKER} -o ex5f ex5f.o ${PETSC_KSP_LIB} ${RM} ex5f.o ex13: ex13.o chkopts -${CLINKER} -o ex13 ex13.o ${PETSC_KSP_LIB} ${RM} ex13.o ex14: ex14.o chkopts -${CLINKER} -o ex14 ex14.o ${PETSC_KSP_LIB} ${RM} ex14.o ex15: ex15.o chkopts -${CLINKER} -o ex15 ex15.o ${PETSC_KSP_LIB} ${RM} ex15.o ex16f: ex16f.o chkopts -${FLINKER} -o ex16f ex16f.o ${PETSC_KSP_LIB} ${RM} ex16f.o ex17: ex17.o chkopts -${CLINKER} -o ex17 ex17.o ${PETSC_KSP_LIB} ${RM} ex17.o ex18: ex18.o chkopts -${CLINKER} -o ex18 ex18.o ${PETSC_KSP_LIB} ${RM} ex18.o ex19: ex19.o chkopts -${CLINKER} -o ex19 ex19.o ${PETSC_KSP_LIB} ${RM} ex19.o ex20: ex20.o chkopts -${CLINKER} -o ex20 ex20.o ${PETSC_KSP_LIB} ${RM} ex20.o ex21: ex21.o chkopts -${CLINKER} -o ex21 ex21.o ${PETSC_KSP_LIB} ${RM} ex21.o ex22: ex22.o chkopts -${CLINKER} -o ex22 ex22.o ${PETSC_KSP_LIB} ${RM} ex22.o ex24: ex24.o chkopts -${CLINKER} -o ex24 ex24.o ${PETSC_KSP_LIB} ${RM} ex24.o ex25: ex25.o chkopts -${CLINKER} -o ex25 ex25.o ${PETSC_KSP_LIB} ${RM} ex25.o ex26: ex26.o chkopts -${CLINKER} -o ex26 ex26.o ${PETSC_KSP_LIB} ${RM} ex26.o ex27: ex27.o chkopts -${CLINKER} -o ex27 ex27.o ${PETSC_KSP_LIB} ${RM} ex27.o ex28: ex28.o chkopts -${CLINKER} -o ex28 ex28.o ${PETSC_KSP_LIB} ${RM} ex28.o ex29: ex29.o chkopts -${CLINKER} -o ex29 ex29.o ${PETSC_KSP_LIB} ${RM} ex29.o ex30: ex30.o chkopts -${CLINKER} -o ex30 ex30.o ${PETSC_KSP_LIB} ${RM} ex30.o ex31: ex31.o chkopts -${CLINKER} -o ex31 ex31.o ${PETSC_KSP_LIB} ${RM} ex31.o ex32: ex32.o chkopts -${CLINKER} -o ex32 ex32.o ${PETSC_KSP_LIB} ${RM} ex32.o ex33: ex33.o chkopts -${CLINKER} -o ex33 ex33.o ${PETSC_KSP_LIB} ${RM} ex33.o ex34: ex34.o chkopts -${CLINKER} -o ex34 ex34.o ${PETSC_KSP_LIB} ${RM} ex34.o #------------------------------------------------------------------------------------ runex1: -@${MPIEXEC} -n 1 ./ex1 -pc_type jacobi -ksp_monitor_short -ksp_gmres_cgs_refinement_type refine_always > ex1_1.tmp 2>&1; \ if (${DIFF} output/ex1_1.out ex1_1.tmp) then true; \ else echo "Possible problem with ex1_1, diffs above"; fi; \ ${RM} -f ex1_1.tmp runex1_2: -@${MPIEXEC} -n 2 ./ex1 -pc_type jacobi -ksp_monitor_short -ksp_gmres_cgs_refinement_type refine_always > ex1_2.tmp 2>&1; \ if (${DIFF} output/ex1_2.out ex1_2.tmp) then true; \ else echo "Possible problem with ex1_2, diffs above"; fi; \ ${RM} -f ex1_2.tmp runex1_3: -@${MPIEXEC} -n 1 ./ex1 -pc_type sor -pc_sor_symmetric -ksp_monitor_short -ksp_gmres_cgs_refinement_type refine_always >\ ex1_3.tmp 2>&1; \ if (${DIFF} output/ex1_3.out ex1_3.tmp) then true; \ else echo "Possible problem with ex1_3, diffs above"; fi; \ ${RM} -f ex1_3.tmp runex1_5: -@${MPIEXEC} -n 1 ./ex1 -pc_type eisenstat -ksp_monitor_short -ksp_gmres_cgs_refinement_type refine_always >\ ex1_5.tmp 2>&1; \ if (${DIFF} output/ex1_5.out ex1_5.tmp) then true; \ else echo "Possible problem with ex1_5, diffs above"; fi; \ ${RM} -f ex1_5.tmp runex3: -@${MPIEXEC} -n 1 ./ex3 -pc_type jacobi -ksp_monitor_short -m 5 -ksp_gmres_cgs_refinement_type refine_always > ex3_1.tmp 2>&1; \ if (${DIFF} output/ex3_1.out ex3_1.tmp) then true; \ else echo "Possible problem with ex3_1, diffs above"; fi; \ ${RM} -f ex3_1.tmp runex3_2: -@${MPIEXEC} -n 2 ./ex3 -pc_type jacobi -ksp_monitor_short -m 5 -ksp_gmres_cgs_refinement_type refine_always > ex3_2.tmp 2>&1; \ if (${DIFF} output/ex3_2.out ex3_2.tmp) then true; \ else echo "Possible problem with ex3_2, diffs above"; fi; \ ${RM} -f ex3_2.tmp runex4: -@${MPIEXEC} -n 1 ./ex4 -ksp_monitor_short -m 5 -pc_type jacobi -ksp_gmres_cgs_refinement_type refine_always > ex4_1.tmp 2>&1;\ if (${DIFF} output/ex4_1.out ex4_1.tmp) then true; \ else echo "Possible problem with ex4_1, diffs above"; fi; \ ${RM} -f ex4_1.tmp runex4_3: -@${MPIEXEC} -n 1 ./ex4 -pc_type sor -pc_sor_symmetric -ksp_monitor_short -m 5 -ksp_gmres_cgs_refinement_type refine_always >\ ex4_3.tmp 2>&1; \ if (${DIFF} output/ex4_3.out ex4_3.tmp) then true; \ else echo "Possible problem with ex4_3, diffs above"; fi; \ ${RM} -f ex4_3.tmp runex4_5: -@${MPIEXEC} -n 1 ./ex4 -pc_type eisenstat -ksp_monitor_short -m 5 -ksp_gmres_cgs_refinement_type refine_always >\ ex4_5.tmp 2>&1; \ if (${DIFF} output/ex4_5.out ex4_5.tmp) then true; \ else echo "Possible problem with ex4_5, diffs above"; fi; \ ${RM} -f ex4_5.tmp runex5: -@${MPIEXEC} -n 2 ./ex5 -ksp_monitor_short -nokspview -ksp_gmres_cgs_refinement_type refine_always > ex5_1.tmp 2>&1; \ if (${DIFF} output/ex5_1.out ex5_1.tmp) then true; \ else echo "Possible problem with ex5_1, diffs above"; fi; \ ${RM} -f ex5_1.tmp runex5f: -@${MPIEXEC} -n 1 ./ex5f -ksp_monitor_short > ex5f_1.tmp 2>&1; \ if (${DIFF} output/ex5f_1.out ex5f_1.tmp) then true; \ else echo "Possible problem with ex5f_1, diffs above"; fi; \ ${RM} -f ex5f_1.tmp # # See http://www.mcs.anl.gov/petsc/petsc-as/documentation/faq.html#datafiles for how to obtain the datafiles used below runex6: -@${MPIEXEC} -n 1 ./ex6 -ksp_type preonly -pc_type lu -options_left no \ -f ${DATAFILESPATH}/matrices/arco1 > ex6_1.tmp 2>&1; \ if (${DIFF} output/ex6_1.out ex6_1.tmp) then true; \ else echo "Possible problem with ex6_1, diffs above"; fi; \ ${RM} -f ex6_1.tmp runex6_2: -@${MPIEXEC} -n 1 ./ex6 -sub_pc_type ilu -options_left no \ -f ${DATAFILESPATH}/matrices/arco1 \ -ksp_gmres_restart 100 -ksp_gmres_cgs_refinement_type refine_always -sub_ksp_type preonly -pc_type bjacobi \ -pc_bjacobi_blocks 8 -sub_pc_factor_in_place -ksp_monitor_short \ > ex6_2.tmp 2>&1; \ if (${DIFF} output/ex6_2.out ex6_2.tmp) then true; \ else echo "Possible problem with ex6_2, diffs above"; fi; \ ${RM} -f ex6_2.tmp runex6_3: -@${MPIEXEC} -n 1 ./ex6 -pc_type ilu -options_left no \ -f ${DATAFILESPATH}/matrices/arco4 \ -ksp_gmres_restart 100 -ksp_gmres_cgs_refinement_type refine_always -ksp_monitor_short > ex6_3.tmp 2>&1; \ if (${DIFF} output/ex6_3.out ex6_3.tmp) then true; \ else echo "Possible problem with ex6_3, diffs above"; fi; \ ${RM} -f ex6_3.tmp runex6_7: -@${MPIEXEC} -n 1 ./ex6 -ksp_gmres_cgs_refinement_type refine_always -pc_type asm -pc_asm_blocks 6 \ -f ${DATAFILESPATH}/matrices/small \ -matload_block_size 6 -ksp_monitor_short > ex6_7.tmp 2>&1; \ if (${DIFF} output/ex6_7.out ex6_7.tmp) then true; \ else echo "Possible problem with ex6_7, diffs above"; fi; \ ${RM} -f ex6_7.tmp runex7: -@${MPIEXEC} -n 2 ./ex7 -ksp_gmres_cgs_refinement_type refine_always -pc_type jacobi -ksp_monitor_short > ex7_1.tmp 2>&1; \ if (${DIFF} output/ex7_1.out ex7_1.tmp) then true; \ else echo "Possible problem with ex7_1, diffs above"; fi; \ ${RM} -f ex7_1.tmp runex8: -@${MPIEXEC} -n 1 ./ex8 -ksp_gmres_cgs_refinement_type refine_always -pc_type jacobi -ksp_monitor_short > ex8_1.tmp 2>&1; \ if (${DIFF} output/ex8_1.out ex8_1.tmp) then true; \ else echo "Possible problem with ex8_1, diffs above"; fi; \ ${RM} -f ex8_1.tmp runex8_2: -@${MPIEXEC} -n 2 ./ex8 -ksp_gmres_cgs_refinement_type refine_always -pc_type jacobi -ksp_monitor_short \ -ksp_rtol .000001 > ex8_2.tmp 2>&1; \ if (${DIFF} output/ex8_2.out ex8_2.tmp) then true; \ else echo "Possible problem with ex8_2, diffs above"; fi; \ ${RM} -f ex8_2.tmp runex10: -@${MPIEXEC} -n 1 ./ex10 -matconvert_type seqaij -ksp_monitor_short >ex10_1.tmp 2>&1; \ if (${DIFF} output/ex10_1.out ex10_1.tmp) then true; \ else echo "Possible problem with ex10_1, diffs above"; fi; \ ${RM} -f ex10_1.tmp runex11: -@${MPIEXEC} -n 3 ./ex11 -ksp_monitor_short -ksp_gmres_cgs_refinement_type refine_always > ex11_1.tmp 2>&1; \ if (${DIFF} output/ex11_1.out ex11_1.tmp) then true; \ else echo "Possible problem with ex11_1, diffs above"; fi; \ ${RM} -f ex11_1.tmp runex12f: -@${MPIEXEC} -n 1 ./ex12f -f ../../../../mat/examples/matbinary.ex -options_left no > ex12f_1.tmp 2>&1; \ if (${DIFF} output/ex12f_1.out ex12f_1.tmp) then true; \ else echo "Possible problem with ex12f_1, diffs above"; fi; \ ${RM} -f ex12f_1.tmp runex13: -@${MPIEXEC} -n 2 ./ex13 -ksp_gmres_cgs_refinement_type refine_always -ksp_monitor_short > ex13_1.tmp 2>&1; \ if (${DIFF} output/ex13_1.out ex13_1.tmp) then true; \ else echo "Possible problem with ex13_1, diffs above"; fi; \ ${RM} -f ex13_1.tmp runex16f: -@${MPIEXEC} -n 1 ./ex16f -f ../../../../mat/examples/matbinary.ex -options_left no> ex16f_1.tmp 2>&1; \ if (${DIFF} output/ex16f_1.out ex16f_1.tmp) then true; \ else echo "Possible problem with ex16f_1, diffs above"; fi; \ ${RM} -f ex16f_1.tmp runex17: -@${MPIEXEC} -n 1 ./ex17 -ksp_gmres_cgs_refinement_type refine_always -n 6 -ksp_monitor_short -p 5 -norandom -ksp_type gmres \ -pc_type jacobi > ex17_1.tmp 2>&1; \ if (${DIFF} output/ex17_1.out ex17_1.tmp) then true; \ else echo "Possible problem with ex17_1, diffs above"; fi; \ ${RM} -f ex17_1.tmp runex18: -@${MPIEXEC} -n 1 ./ex18 -ksp_gmres_cgs_refinement_type refine_always -f ../../../../mat/examples/matbinary.ex runex19: -@${MPIEXEC} -n 1 ./ex19 -ksp_gmres_cgs_refinement_type refine_always -pc_type jacobi -ksp_monitor_short \ -ksp_type gmres > ex19_1.tmp 2>&1; \ if (${DIFF} output/ex19_1.out ex19_1.tmp) then true; \ else echo "Possible problem with ex19_1, diffs above"; fi; \ ${RM} -f ex19_1.tmp runex19_2: -@${MPIEXEC} -n 3 ./ex19 -ksp_monitor_short > ex19_2.tmp 2>&1; \ if (${DIFF} output/ex19_2.out ex19_2.tmp) then true; \ else echo "Possible problem with ex19_2, diffs above"; fi; \ ${RM} -f ex19_2.tmp runex20: -@${MPIEXEC} -n 1 ./ex20 -ksp_gmres_cgs_refinement_type refine_always -pc_type jacobi -mat_view -ksp_monitor_short -ksp_atol 1.0e-13 > ex20_1.tmp 2>&1; \ if (${DIFF} output/ex20_1.out ex20_1.tmp) then true; \ else echo "Possible problem with ex20_1, diffs above"; fi; \ ${RM} -f ex20_1.tmp runex21: -@${MPIEXEC} -n 1 ./ex21 > ex21_1.tmp 2>&1; \ if (${DIFF} output/ex21_1.out ex21_1.tmp) then true; \ else echo "Possible problem with ex21_1, diffs above"; fi; \ ${RM} -f ex21_1.tmp runex21_2: -@${MPIEXEC} -n 2 ./ex21 > ex21_2.tmp 2>&1; \ if (${DIFF} output/ex21_2.out ex21_2.tmp) then true; \ else echo "Possible problem with ex21_2, diffs above"; fi; \ ${RM} -f ex21_2.tmp runex21_3: -@${MPIEXEC} -n 3 ./ex21 > ex21_3.tmp 2>&1; \ if (${DIFF} output/ex21_3.out ex21_3.tmp) then true; \ else echo "Possible problem with ex21_3, diffs above"; fi; \ ${RM} -f ex21_3.tmp runex22: -@${MPIEXEC} -n 1 ./ex22 -ksp_gmres_cgs_refinement_type refine_always -mat_type seqaij -mat_view_info_detailed -ksp_monitor_short > ex22_1.tmp 2>&1; \ if (${DIFF} output/ex22_1.out ex22_1.tmp) then true; \ else echo "Possible problem with ex22_1, diffs above"; fi; \ ${RM} -f ex22_1.tmp runex22_2: -@${MPIEXEC} -n 4 ./ex22 -ksp_gmres_cgs_refinement_type refine_always -m_eta 10 -m_xi 11 -mat_type seqaij -mat_view_info \ -ksp_monitor_short -pc_type bjacobi > ex22_2.tmp 2>&1; \ if (${DIFF} output/ex22_2.out ex22_2.tmp) then true; \ else echo "Possible problem with ex22_2, diffs above"; fi; \ ${RM} -f ex22_2.tmp runex24: -@${MPIEXEC} -n 1 ./ex24 -pc_type icc -mat_type seqsbaij -mat_ignore_lower_triangular > ex24_1.tmp 2>&1; \ if (${DIFF} output/ex24_1.out ex24_1.tmp) then true; \ else echo "Possible problem with ex24_1, diffs above"; fi; \ ${RM} -f ex24_1.tmp runex24_2: -@${MPIEXEC} -n 1 ./ex24 -pc_type icc -pc_factor_levels 2 -mat_type seqsbaij -mat_ignore_lower_triangular > ex24_2.tmp 2>&1; \ if (${DIFF} output/ex24_2.out ex24_2.tmp) then true; \ else echo "Possible problem with ex24_2, diffs above"; fi; \ ${RM} -f ex24_2.tmp runex24_3: -@${MPIEXEC} -n 2 ./ex24 -pc_type bjacobi -sub_pc_type icc -mat_type mpisbaij -mat_ignore_lower_triangular > ex24_3.tmp 2>&1; \ if (${DIFF} output/ex24_3.out ex24_3.tmp) then true; \ else echo "Possible problem with ex24_3, diffs above"; fi; \ ${RM} -f ex24_3.tmp runex24_4: -@${MPIEXEC} -n 2 ./ex24 -pc_type bjacobi -sub_pc_type icc -sub_pc_factor_levels 1 -mat_type mpisbaij -mat_ignore_lower_triangular > ex24_4.tmp 2>&1; \ if (${DIFF} output/ex24_4.out ex24_4.tmp) then true; \ else echo "Possible problem with ex24_4, diffs above"; fi; \ ${RM} -f ex24_4.tmp # See http://www.mcs.anl.gov/petsc/petsc-as/documentation/faq.html#datafiles for how to obtain the datafiles used below runex25: -@${MPIEXEC} -n 1 ./ex25 -fload ${DATAFILESPATH}/matrices/indefinite/afiro > ex25_1.tmp 2>&1; \ if (${DIFF} output/ex25_1.out ex25_1.tmp) then true; \ else echo "Possible problem with ex25_1, diffs above"; fi; \ ${RM} -f ex25_1.tmp runex25_2: -@${MPIEXEC} -n 1 ./ex25 -fload ${DATAFILESPATH}/matrices/indefinite/afiro \ -pc_type jacobi -pc_jacobi_rowmax > ex25_2.tmp 2>&1; \ if (${DIFF} output/ex25_2.out ex25_2.tmp) then true; \ else echo "Possible problem with ex25_2, diffs above"; fi; \ ${RM} -f ex25_2.tmp runex26: -@${MPIEXEC} -n 1 ./ex26 -ksp_monitor_short > ex26_1.tmp 2>&1; \ if (${DIFF} output/ex26_1.out ex26_1.tmp) then true; \ else echo "Possible problem with ex26_1, diffs above"; fi; \ ${RM} -f ex26_1.tmp runex26_2: -@${MPIEXEC} -n 3 ./ex26 -ksp_monitor_short > ex26_2.tmp 2>&1; \ if (${DIFF} output/ex26_2.out ex26_2.tmp) then true; \ else echo "Possible problem with ex26_2, diffs above"; fi; \ ${RM} -f ex26_2.tmp runex26_ml: -@${MPIEXEC} -n 1 ./ex26 -ksp_monitor_short -pc_type ml -mat_no_inode > ex26_1.tmp 2>&1; \ if (${DIFF} output/ex26_ml_1.out ex26_1.tmp) then true; \ else echo "Possible problem with ex26_ml_1, diffs above"; fi; \ ${RM} -f ex26_1.tmp runex26_ml_2: -@${MPIEXEC} -n 3 ./ex26 -ksp_monitor_short -pc_type ml -mat_no_inode > ex26_2.tmp 2>&1; \ if (${DIFF} output/ex26_ml_2.out ex26_2.tmp) then true; \ else echo "Possible problem with ex26_ml_2, diffs above"; fi; \ ${RM} -f ex26_2.tmp runex26_ml_3: -@${MPIEXEC} -n 1 ./ex26 -ksp_monitor_short -pc_type ml -mat_no_inode -pc_mg_type ADDITIVE > ex26_2.tmp 2>&1; \ if (${DIFF} output/ex26_ml_3.out ex26_2.tmp) then true; \ else echo "Possible problem with ex26_ml_3, diffs above"; fi; \ ${RM} -f ex26_2.tmp # See http://www.mcs.anl.gov/petsc/petsc-as/documentation/faq.html#datafiles for how to obtain the datafiles used below runex27: -@${MPIEXEC} -n 1 ./ex27 -f ${DATAFILESPATH}/matrices/small > ex27.tmp 2>&1; \ if (${DIFF} output/ex27.out ex27.tmp) then true; \ else echo "Possible problem with ex27, diffs above"; fi; \ ${RM} -f ex27.tmp runex29: -@${MPIEXEC} -n 1 ./ex29 -ksp_monitor_short -mat_no_inode > ex29.tmp 2>&1; \ if (${DIFF} output/ex29.out ex29.tmp) then true; \ else echo "Possible problem with ex29, diffs above"; fi; \ ${RM} -f ex29.tmp runex29_2: -@${MPIEXEC} -n 3 ./ex29 -ksp_monitor_short > ex29_2.tmp 2>&1; \ if (${DIFF} output/ex29_2.out ex29_2.tmp) then true; \ else echo "Possible problem with ex29_2, diffs above"; fi; \ ${RM} -f ex29_2.tmp runex30: -@${MPIEXEC} -n 1 ./ex30 -f ${DATAFILESPATH}/matrices/small -ksp_type preonly -pc_type ilu -pc_factor_drop_tolerance 0.0,0.0,4 -pc_factor_mat_ordering_type natural -num_numfac 2 -pc_factor_reuse_fill > ex30.tmp 2>&1; \ if (${DIFF} output/ex30.out ex30.tmp) then true; \ else echo "Possible problem with ex30, diffs above"; fi; \ ${RM} -f ex30.tmp runex30_2: -@${MPIEXEC} -n 1 ./ex30 -f ${DATAFILESPATH}/matrices/arco1 -mat_type baij -matload_block_size 3 -ksp_type preonly -pc_type ilu -pc_factor_drop_tolerance 0.0,0.0,50 -pc_factor_mat_ordering_type natural -num_numfac 2 > ex30.tmp 2>&1; \ if (${DIFF} output/ex30_2.out ex30.tmp) then true; \ else echo "Possible problem with ex30_2, diffs above"; fi; \ ${RM} -f ex30.tmp runex30_3: -@${MPIEXEC} -n 1 ./ex30 -f ${DATAFILESPATH}/matrices/arco1 -mat_type baij -matload_block_size 3 -ksp_type preonly -pc_type ilu -pc_factor_drop_tolerance 1.e-4,0.0,50 -pc_factor_mat_ordering_type natural -num_numfac 2 > ex30.tmp 2>&1; \ if (${DIFF} output/ex30_3.out ex30.tmp) then true; \ else echo "Possible problem with ex30_3, diffs above"; fi; \ ${RM} -f ex30.tmp runex30_shift: # test lu with shift -@${MPIEXEC} -n 1 ./ex30 -f0 ${DATAFILESPATH}/matrices/small -mat_sigma -4.0 -ksp_type preonly -pc_type lu -pc_factor_shift_type NONZERO -pc_factor_shift_amount 1.e-5 > ex30.tmp 2>&1; \ if (${DIFF} output/ex30_shiftnz.out ex30.tmp) then true; \ else echo "Possible problem with ex30_shiftnz, diffs above"; fi; \ ${RM} -f ex30.tmp -@${MPIEXEC} -n 1 ./ex30 -f0 ${DATAFILESPATH}/matrices/small -mat_sigma -4.0 -ksp_type preonly -pc_type lu -pc_factor_shift_type POSITIVE_DEFINITE > ex30.tmp 2>&1; \ if (${DIFF} output/ex30_shiftpd.out ex30.tmp) then true; \ else echo "Possible problem with ex30_shiftpd, diffs above"; fi; \ ${RM} -f ex30.tmp runex30_shift_cholesky_aij: # test cholesky with shift -@${MPIEXEC} -n 1 ./ex30 -f0 ${DATAFILESPATH}/matrices/small -mat_sigma -4.0 -ksp_type preonly -pc_type cholesky -pc_factor_shift_type NONZERO -pc_factor_shift_amount 1.e-5 > ex30.tmp 2>&1; \ if (${DIFF} output/ex30_shiftnz.out ex30.tmp) then true; \ else echo "Possible problem with ex30_shiftnz_cholesky_aij, diffs above"; fi; \ ${RM} -f ex30.tmp -@${MPIEXEC} -n 1 ./ex30 -f0 ${DATAFILESPATH}/matrices/small -mat_sigma -4.0 -ksp_type preonly -pc_type cholesky -pc_factor_shift_type POSITIVE_DEFINITE > ex30.tmp 2>&1; \ if (${DIFF} output/ex30_shiftpd_2.out ex30.tmp) then true; \ else echo "Possible problem with ex30_shiftpd_cholesky_aij, diffs above"; fi; \ ${RM} -f ex30.tmp runex30_shift_cholesky_sbaij: # test cholesky with shift -@${MPIEXEC} -n 1 ./ex30 -f0 ${DATAFILESPATH}/matrices/small -mat_sigma -4.0 -ksp_type preonly -pc_type cholesky -pc_factor_shift_type NONZERO -pc_factor_shift_amount 1.e-5 -mat_type sbaij > ex30.tmp 2>&1; \ if (${DIFF} output/ex30_shiftnz.out ex30.tmp) then true; \ else echo "Possible problem with ex30_shiftnz_cholesky_sbaij, diffs above"; fi; \ ${RM} -f ex30.tmp -@${MPIEXEC} -n 1 ./ex30 -f0 ${DATAFILESPATH}/matrices/small -mat_sigma -4.0 -ksp_type preonly -pc_type cholesky -pc_factor_shift_type POSITIVE_DEFINITE -mat_type sbaij > ex30.tmp 2>&1; \ if (${DIFF} output/ex30_shiftpd_2.out ex30.tmp) then true; \ else echo "Possible problem with ex30_shiftpd_cholesky_sbaij, diffs above"; fi; \ ${RM} -f ex30.tmp runex30_shift_in_blocks_aij: # sensitive to machine, thus not submitted to the nightly tests -@${MPIEXEC} -n 1 ./ex30 -f0 ${DATAFILESPATH}/matrices/small -mat_sigma -4.0 -ksp_type preonly -pc_type lu -pc_factor_shift_type INBLOCKS > ex30.tmp 2>&1; \ if (${DIFF} output/ex30_shiftinblocks.out ex30.tmp) then true; \ else echo "Possible problem with ex30_shiftinblocks_lu, diffs above"; fi; \ ${RM} -f ex30.tmp -@${MPIEXEC} -n 1 ./ex30 -f0 ${DATAFILESPATH}/matrices/small -mat_sigma -4.0 -ksp_type preonly -pc_type cholesky -pc_factor_shift_type INBLOCKS > ex30.tmp 2>&1; \ if (${DIFF} output/ex30_shiftinblocks.out ex30.tmp) then true; \ else echo "Possible problem with ex30_shiftinblocks_cholesky, diffs above"; fi; \ ${RM} -f ex30.tmp runex30_shift_in_blocks_sbaij: # sensitive to machine, thus not submitted to the nightly tests -@${MPIEXEC} -n 1 ./ex30 -f0 ${DATAFILESPATH}/matrices/small -mat_sigma -4.0 -ksp_type preonly -pc_type cholesky -pc_factor_shift_type INBLOCKS -mat_type sbaij > ex30.tmp 2>&1; \ if (${DIFF} output/ex30_shiftinblocks.out ex30.tmp) then true; \ else echo "Possible problem with ex30_shift_in_blocks_sbaij, diffs above"; fi; \ ${RM} -f ex30.tmp runex31: -@${MPIEXEC} -n 3 ./ex31 -f ${DATAFILESPATH}/matrices/small -partition > ex31.tmp 2>&1; \ if (${DIFF} output/ex31.out ex31.tmp) then true; \ else echo "Possible problem with ex31, diffs above"; fi; \ ${RM} -f ex31.tmp runex32_testset1: @-count=0; \ for i in 1 2 3 4 5; do \ for ordering in natural nd; do \ for simtype in '' -trans;do \ for flevels in 0 1 2 3; do \ count=`expr $$count + 1`; \ echo "[$${count}]_start" > ex32.tmp 2>&1; \ ${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -dof $$i -pc_type ilu -pc_factor_mat_ordering_type $$ordering -mat_type aij $$simtype -pc_factor_levels $$flevels >> ex32.tmp 2>&1; \ echo "[$${count}]_end" >> ex32.tmp 2>&1; \ sed -n '/\['$${count}']_start/,/\['$${count}']_end/p' output/ex32_1.out > ex32.tmp2 2>&1; \ if (${DIFF} ex32.tmp ex32.tmp2) then true; \ else echo "Possible problem with ./ex32 -ksp_monitor_short -dof $$i -pc_type ilu -pc_factor_mat_ordering_type $$ordering -mat_type aij $$simtype -pc_factor_levels $$flevels"; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32.tmp2; \ done; \ done; \ done; \ done; runex32_testset2: @-count=0; \ for i in 1 2 3 4 5 6 7 8; do \ for ordering in natural nd; do \ for simtype in '' -trans;do \ for flevels in 0 1 2 3; do \ count=`expr $$count + 1`; \ echo "[$${count}]_start" > ex32.tmp 2>&1; \ ${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -dof $$i -pc_type ilu -pc_factor_mat_ordering_type $$ordering -mat_type baij $$simtype -pc_factor_levels $$flevels >> ex32.tmp 2>&1; \ echo "[$${count}]_end" >> ex32.tmp 2>&1; \ sed -n '/\['$${count}']_start/,/\['$${count}']_end/p' output/ex32_2.out > ex32.tmp2 2>&1; \ if (${DIFF} ex32.tmp ex32.tmp2) then true; \ else echo "Possible problem with ./ex32 -ksp_monitor_short -dof $$i -pc_type ilu -pc_factor_mat_ordering_type $$ordering -mat_type baij $$simtype -pc_factor_levels $$flevels"; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32.tmp2; \ done; \ done; \ done; \ done; runex32_testset3: @-count=0; \ for i in 1 2 3 4 5; do \ for ordering in natural nd; do \ for simtype in '' -trans;do \ count=`expr $$count + 1`; \ echo "[$${count}]_start" > ex32.tmp 2>&1; \ ${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -dof $$i -pc_type lu -pc_factor_mat_ordering_type $$ordering -mat_type aij $$simtype >> ex32.tmp 2>&1; \ echo "[$${count}]_end" >> ex32.tmp 2>&1; \ sed -n '/\['$${count}']_start/,/\['$${count}']_end/p' output/ex32_3.out > ex32.tmp2 2>&1; \ if (${DIFF} ex32.tmp ex32.tmp2) then true; \ else echo "Possible problem with ./ex32 -ksp_monitor_short -dof $$i -pc_type lu -pc_factor_mat_ordering_type $$ordering -mat_type aij $$simtype "; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32.tmp2; \ done; \ done; \ done; runex32_testset4: @-count=0; \ for i in 1 2 3 4 5 6 7 8; do \ for ordering in natural nd; do \ for simtype in '' -trans;do \ count=`expr $$count + 1`; \ echo "[$${count}]_start" > ex32.tmp 2>&1; \ ${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -dof $$i -pc_type lu -pc_factor_mat_ordering_type $$ordering -mat_type baij $$simtype >> ex32.tmp 2>&1; \ echo "[$${count}]_end" >> ex32.tmp 2>&1; \ sed -n '/\['$${count}']_start/,/\['$${count}']_end/p' output/ex32_4.out > ex32.tmp2 2>&1; \ if (${DIFF} ex32.tmp ex32.tmp2) then true; \ else echo "Possible problem with ./ex32 -ksp_monitor_short -dof $$i -pc_type lu -pc_factor_mat_ordering_type $$ordering -mat_type baij $$simtype "; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32.tmp2; \ done; \ done; \ done; runex32_testset5: @-count=0; \ for ordering in natural nd; do \ for flevels in 0 1 2 3; do \ count=`expr $$count + 1`; \ echo "[$${count}]_start" > ex32.tmp 2>&1; \ ${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -dof 1 -pc_type icc -ksp_type cg -pc_factor_mat_ordering_type $$ordering -mat_type aij -pc_factor_levels $$flevels >> ex32.tmp 2>&1; \ echo "[$${count}]_end" >> ex32.tmp 2>&1; \ sed -n '/\['$${count}']_start/,/\['$${count}']_end/p' output/ex32_5.out > ex32.tmp2 2>&1; \ if (${DIFF} ex32.tmp ex32.tmp2) then true; \ else echo "Possible problem with ./ex32 -ksp_monitor_short -dof 1 -pc_type icc -ksp_type cg -pc_factor_mat_ordering_type $$ordering -mat_type aij -pc_factor_levels $$flevels"; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32.tmp2; \ done; \ done; \ @-count=8; \ for ordering in natural nd; do \ count=`expr $$count + 1`; \ echo "[$${count}]_start" > ex32.tmp 2>&1; \ ${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -dof 1 -pc_type cholesky -ksp_type cg -pc_factor_mat_ordering_type $$ordering -mat_type aij >> ex32.tmp 2>&1; \ echo "[$${count}]_end" >> ex32.tmp 2>&1; \ sed -n '/\['$${count}']_start/,/\['$${count}']_end/p' output/ex32_5.out > ex32.tmp2 2>&1; \ if (${DIFF} ex32.tmp ex32.tmp2) then true; \ else echo "Possible problem with ./ex32 -ksp_monitor_short -dof 1 -pc_type cholesky -ksp_type cg -pc_factor_mat_ordering_type $$ordering -mat_type aij "; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32.tmp2; \ done; \ @-count=10; \ count=`expr $$count + 1`; \ echo "[$${count}]_start" > ex32.tmp 2>&1; \ ${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -dof 1 -pc_type icc -test_sbaij1 >> ex32.tmp 2>&1; \ echo "[$${count}]_end" >> ex32.tmp 2>&1; \ sed -n '/\['$${count}']_start/,/\['$${count}']_end/p' output/ex32_5.out > ex32.tmp2 2>&1; \ if (${DIFF} ex32.tmp ex32.tmp2) then true; \ else echo "Possible problem with ./ex32 -ksp_monitor_short -dof 1 -pc_type icc -test_sbaij1"; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32.tmp2 runex32_aij_sbaij_icc: -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -dof 1 -test_sbaij1 -mat_ignore_lower_triangular -pc_type icc > ex32_aij_sbaij_icc.out 2>&1; -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -dof 1 -mat_type aij -pc_type icc -pc_factor_mat_ordering_type natural > ex32.tmp 2>&1; \ if (${DIFF} ex32_aij_sbaij_icc.out ex32.tmp) then true; \ else echo "Possible problem with ex32_aij_sbaij_icc, diffs above"; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32_aij_sbaij_icc.out runex32_aij_sbaij_icc_lev1: -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -dof 1 -test_sbaij1 -ksp_type cg -pc_type icc -pc_factor_levels 1 > ex32_aij_sbaij_icc.out 2>&1; -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -dof 1 -mat_type aij -ksp_type cg -pc_type icc -pc_factor_mat_ordering_type natural -pc_factor_levels 1 > ex32.tmp 2>&1; \ if (${DIFF} ex32_aij_sbaij_icc.out ex32.tmp) then true; \ else echo "Possible problem with ex32_aij_sbaij_icc_lev1, diffs above"; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32_aij_sbaij_icc.out runex32_aij_sbaij_icc_lev10: -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -dof 1 -test_sbaij1 -ksp_type cg -pc_type icc -pc_factor_levels 10 > ex32_aij_sbaij_icc.out 2>&1; -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -dof 1 -mat_type aij -ksp_type cg -pc_type icc -pc_factor_mat_ordering_type natural -pc_factor_levels 10 > ex32.tmp 2>&1; \ if (${DIFF} ex32_aij_sbaij_icc.out ex32.tmp) then true; \ else echo "Possible problem with ex32_aij_sbaij_icc_lev10, diffs above"; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32_aij_sbaij_icc.out runex32_aij_sbaij_cholesky: -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -dof 1 -test_sbaij1 -pc_type cholesky > ex32_aij_sbaij_icc.out 2>&1; -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -dof 1 -mat_type aij -pc_type cholesky -pc_factor_mat_ordering_type natural > ex32.tmp 2>&1; \ if (${DIFF} ex32_aij_sbaij_icc.out ex32.tmp) then true; \ else echo "Possible problem with ex32_aij_sbaij_icc_lev1, diffs above"; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32_aij_sbaij_icc.out runex32_inode2: -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -mat_type aij -dof 2 > ex32_inode.out 2>&1; -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -mat_type aij -dof 2 -mat_no_inode > ex32.tmp 2>&1; \ if (${DIFF} ex32_inode.out ex32.tmp) then true; \ else echo "Possible problem with ex32_inode2, diffs above"; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32_inode.out runex32_inode2_nd: -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -mat_type aij -dof 2 -pc_factor_mat_ordering_type nd > ex32_inode.out 2>&1; -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -mat_type aij -dof 2 -pc_factor_mat_ordering_type nd -mat_no_inode > ex32.tmp 2>&1; \ if (${DIFF} ex32_inode.out ex32.tmp) then true; \ else echo "Possible problem with ex32_inode2_nd, diffs above"; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32_inode.out runex32_inode3: -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -mat_type aij -dof 3 > ex32_inode.out 2>&1; -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -mat_type aij -dof 3 -mat_no_inode > ex32.tmp 2>&1; \ if (${DIFF} ex32_inode.out ex32.tmp) then true; \ else echo "Possible problem with ex32_inode3, diffs above"; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32_inode.out runex32_inode3_nd: -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -mat_type aij -dof 3 -pc_factor_mat_ordering_type nd > ex32_inode.out 2>&1; -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -mat_type aij -dof 3 -pc_factor_mat_ordering_type nd -mat_no_inode > ex32.tmp 2>&1; \ if (${DIFF} ex32_inode.out ex32.tmp) then true; \ else echo "Possible problem with ex32_inode3_nd, diffs above"; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32_inode.out runex32_inode4: -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -mat_type aij -dof 4 > ex32_inode.out 2>&1; -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -mat_type aij -dof 4 -mat_no_inode > ex32.tmp 2>&1; \ if (${DIFF} ex32_inode.out ex32.tmp) then true; \ else echo "Possible problem with ex32_inode4, diffs above"; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32_inode.out runex32_inode4_nd: -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -mat_type aij -dof 4 -pc_factor_mat_ordering_type nd > ex32_inode.out 2>&1; -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -mat_type aij -dof 4 -pc_factor_mat_ordering_type nd -mat_no_inode > ex32.tmp 2>&1; \ if (${DIFF} ex32_inode.out ex32.tmp) then true; \ else echo "Possible problem with ex32_inode4_nd, diffs above"; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32_inode.out runex32_inode5: -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -mat_type aij -dof 5 > ex32_inode.out 2>&1; -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -mat_type aij -dof 5 -mat_no_inode > ex32.tmp 2>&1; \ if (${DIFF} ex32_inode.out ex32.tmp) then true; \ else echo "Possible problem with ex32_inode5, diffs above"; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32_inode.out runex32_inode5_nd: -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -mat_type aij -dof 5 -pc_factor_mat_ordering_type nd > ex32_inode.out 2>&1; -@${MPIEXEC} -n 1 ./ex32 -ksp_monitor_short -mat_type aij -dof 5 -pc_factor_mat_ordering_type nd -mat_no_inode > ex32.tmp 2>&1; \ if (${DIFF} ex32_inode.out ex32.tmp) then true; \ else echo "Possible problem with ex32_inode5_nd, diffs above"; fi; \ ${RM} -f ex32.tmp; ${RM} -f ex32_inode.out runex33: -@${MPIEXEC} -n 1 ./ex33 -sigma 2.0 > ex33.tmp 2>&1; \ if (${DIFF} output/ex33.out ex33.tmp) then true; \ else echo "Possible problem with ex33, diffs above"; fi; \ ${RM} -f ex33.tmp runex33_mumps: -@${MPIEXEC} -n 1 ./ex33 -sigma 2.0 -pc_factor_mat_solver_package mumps -mat_mumps_icntl_13 1 > ex33.tmp 2>&1; \ if (${DIFF} output/ex33.out ex33.tmp) then true; \ else echo "Possible problem with ex33_mumps, diffs above"; fi; \ ${RM} -f ex33.tmp runex33_mumps_2: -@${MPIEXEC} -n 3 ./ex33 -sigma 2.0 -pc_factor_mat_solver_package mumps -mat_mumps_icntl_13 1 > ex33.tmp 2>&1; \ if (${DIFF} output/ex33.out ex33.tmp) then true; \ else echo "Possible problem with ex33_mumps_2, diffs above"; fi; \ ${RM} -f ex33.tmp runex34: -@${MPIEXEC} -n 2 ./ex34 -f ${DATAFILESPATH}/matrices/small -nodesize 2 > ex34.tmp 2>&1; \ if (${DIFF} output/ex34_1.out ex34.tmp) then true; \ else echo "Possible problem with ex34, diffs above"; fi; \ ${RM} -f ex34.tmp TESTEXAMPLES_C = ex1.PETSc ex1.rm ex3.PETSc runex3 runex3_2 ex3.rm ex4.PETSc runex4 runex4_3 \ runex4_5 ex4.rm ex7.PETSc ex7.rm ex19.PETSc runex19 runex19_2 ex19.rm \ ex24.PETSc runex24 runex24_2 runex24_3 runex24_4 ex24.rm \ ex26.PETSc runex26 runex26_2 ex26.rm ex27.PETSc ex27.rm \ ex32.PETSc runex32_testset1 runex32_testset2 runex32_testset3 runex32_testset4 runex32_testset5 \ runex32_aij_sbaij_icc runex32_aij_sbaij_icc_lev1 runex32_aij_sbaij_icc_lev10 runex32_aij_sbaij_cholesky \ runex32_inode2 runex32_inode2_nd runex32_inode3 runex32_inode3_nd runex32_inode4 runex32_inode4_nd \ runex32_inode5 runex32_inode5_nd ex32.rm TESTEXAMPLES_C_X11 = ex10.PETSc runex10 ex10.rm ex15.PETSc ex15.rm TESTEXAMPLES_C_NOCOMPLEX = ex33.PETSc runex33 ex33.rm TESTEXAMPLES_FORTRAN = ex5f.PETSc runex5f ex5f.rm TESTEXAMPLES_FORTRAN_MPIUNI = ex12f.PETSc ex12f.rm TESTEXAMPLES_C_X11_MPIUNI = ex3.PETSc runex3 ex3.rm ex4.PETSc runex4 ex4.rm TESTEXAMPLES_C_COMPLEX = ex17.PETSc runex17 ex17.rm TESTEXAMPLES_C_COMPLEX_MPIUNI = ex17.PETSc runex17 ex17.rm TESTEXAMPLES_DATAFILESPATH = ex6.PETSc runex6 runex6_2 runex6_3 ex6.r ex25.PETSc runex25 runex25_2 ex25.rm ex27.PETSc runex27 ex25.rm \ ex30.PETSc runex30_shift runex30_shift_cholesky_aij runex30_shift_cholesky_sbaij ex30.rm \ ex31.PETSc runex31 ex31.rm \ ex34.PETSc runex34 ex34.rm TESTEXAMPLES_FORTRAN_NOCOMPLEX = ex16f.PETSc runex16f ex16f.rm ex12f.PETSc runex12f ex12f.rm TESTEXAMPLES_13 = ex18.PETSc ex18.rm ex20.PETSc runex20 ex20.rm ex5f.PETSc ex5f.rm TESTEXAMPLES_ML = ex26.PETSc runex26_ml runex26_ml_2 runex26_ml_3 ex26.rm ex29.PETSc runex29 runex29_2 ex29.rm include ${PETSC_DIR}/conf/test