Change use of void (*)(void) and void (**)(void) in the PETSc API to PetscVoidFn * and PetscVoidFn ** or PetscErrorCodeFn * or PetscErrorCodeFn **
Remove large but unused files
Remove unneeded parentheses
Remove multiple parentheses and extra semicolongit grep -l -E "\(\([a-zA-Z0-9_]+\)\(\*[a-zA-Z0-9_]+\)[, )]" | xargs sed -r -i'' 's#\(\(([a-zA-Z0-9_]+)\)\(\*([a-zA-Z0-9_]+)\)([, )])#\(\(\1\)\*\2\3#g
Remove multiple parentheses and extra semicolongit grep -l -E "\(\([a-zA-Z0-9_]+\)\(\*[a-zA-Z0-9_]+\)[, )]" | xargs sed -r -i'' 's#\(\(([a-zA-Z0-9_]+)\)\(\*([a-zA-Z0-9_]+)\)([, )])#\(\(\1\)\*\2\3#g'git grep -l -E "Petsc(.)*\(\(\*[a-zA-Z0-9_]*\)," | xargs sed -r -i'' 's#Petsc([a-zA-Z0-9_]*)\(\(\*([a-zA-Z0-9_]*)\), #Petsc\1(*\2, #g'git grep -l -E "([\!\&\~\*\(]|\)\)|\([^,\*\(]+\**\))\(([a-zA-Z0-9_]+((\.|->)[a-zA-Z0-9_]+|\[[a-zA-Z0-9_ \%\+\*\-]+\])+)\)" | xargs sed -r -i'' 's#([\!\&\~\*\(]|\)\)|\([^,\*\(]+\**\))\(([a-zA-Z0-9_]+((\.|->)[a-zA-Z0-9_]+|\[[a-zA-Z0-9_ \%\+\*\-]+\])+)\)#\1\2#g'
show more ...
Remove MANSEC from makefiles it is not needed in, tutorials and tests
TSEvent: refactor and fix bugs, add TSSetPostEventStep() Refactor the core algorithm for resolution of events: TSEventHandler() and the helper functions, fixing the existing bugs. Chang
TSEvent: refactor and fix bugs, add TSSetPostEventStep() Refactor the core algorithm for resolution of events: TSEventHandler() and the helper functions, fixing the existing bugs. Change event indicator functions from PetscScalar to PetscReal. Change the API of TSSetEventHandler(): in the user `indicator()` callback, the 'fvalue' argument type changed from PetscScalar[] to PetscReal[]. Add TSSetPostEventStep(), deprecate TSSetPostEventIntervalStep(). Deprecate option -ts_event_post_eventinterval_step. Fix bugs in interaction of TSEvent with tspan. Add six new test examples. Below are the examples of bugs fixed by this patch. The source codes (ex3.c, ex3span.c, ex4.c, ex5.c) can be found in src/ts/event/tests. To run them with the older Petsc versions, one would need to comment out "#define NEW_VERSION". Behaviour for three library versions is reported below: * ORIG: current Petsc version, before the proposed patch. * 6688: independently of the proposed patch, Merge Request 6688 was developed, which fixed some bugs with zero-crossing directions. * NEW : the proposed patch. ./ex3 -ts_monitor -ts_event_monitor -ts_view -ts_type beuler \ -ts_adapt_type basic -flg -V 1e9 -ts_adapt_dt_min 1e-6 -change5 1 -dir 1 * ORIG: fails to resolve 5 out of 6 events, and resolves 23 incorrect events. * 6688: fails to exit the TSEvent iteration via the step size (bracket size) criterion. * NEW : ok, resolves all 6 events. ./ex4 -ts_adapt_type basic -ts_type rk -ts_dt 0.25 -ts_event_tol 1e-8 \ -dir 0 -ts_adapt_dt_min 1e-10 -ts_view -ts_monitor -ts_event_monitor * ORIG: only reaches t = 0.0300236 after 10000 TS steps. * 6688: only reaches t = 0.0300236 after 10000 TS steps. * NEW : ok, reaches the final time t = 4.0 after 96 TS steps, resolving all 16 events. ./ex5 -ts_monitor -ts_event_monitor -ts_type rk -ts_adapt_type basic \ -ts_view -ts_dt 0.25 -flg -dir 0 * ORIG: only reaches t = 4.0 after 10000 TS steps, erroneously reports event at t = 4.0 around 5000 times. * 6688: only reaches t = 4.0 after 10000 TS steps. * NEW : ok, reaches the final time t = 10.0 after 99 TS steps, resolving all 34 events. ./ex5 -ts_monitor -ts_event_monitor -ts_type rk -ts_adapt_type basic \ -ts_view -ts_dt 0.25 -flg -dir 1 * ORIG: fails, starts taking negative time steps, no events are correctly resolved. * 6688: ok, but slower: 90 TS steps to resolve all 17 events. * NEW : ok, and faster: 48 TS steps to resolve all 17 events. ./ex5 -ts_monitor -ts_event_monitor -ts_type rk -ts_adapt_type basic \ -ts_view -ts_dt 0.25 -flg -dir -1 * ORIG: fails, starts taking 'nan' time steps. * 6688: mostly fails, only reaches t = 4.99993 after 10000 TS steps. * NEW : ok, reaches the final time t = 10.0 after 74 TS steps, resolving all 17 events. The same run in parallel: mpirun -n 2 ./ex5 -ts_monitor -ts_event_monitor -ts_type rk \ -ts_adapt_type basic -ts_view -ts_dt 0.25 -flg -dir -1 * ORIG: fails, starts taking negative time steps, exits with runtime error. * 6688: mostly fails, only reaches t = 3, besides, the parallel run is not consistent with the serial run (see above). * NEW : ok, reaches the final time t = 10.0 after 74 TS steps, resolving all 17 events. ./ex3span -ts_monitor -ts_event_monitor * ORIG: (confused by events) misses tspan points: 4.02, 4.21, 4.98, 5.01, 5.21, 5.98, 6, 6.01, 6.02, 6.21, 6.99, 7.21, 8.01, 8.21, 9.01. * 6688: (confused by events) misses tspan points: 4.02, 4.21, 4.98, 5.01, 5.21, 5.98, 6, 6.01, 6.02, 6.21, 6.99, 7.21, 8.01, 8.21, 9.01. * NEW : ok. ./ex3span -ts_monitor -ts_event_monitor -ts_event_post_event_step 0.5 * ORIG: misses the majority of tspan points (except 0.01 and 0.21), and also resolves the last event location at wrong time t = 9.21. * 6688: misses the majority of tspan points (except 0.01 and 0.21), and also resolves the last event location at wrong time t = 9.21. * NEW : ok.
Remove need for seperate lib/petsc/conf/test file by merging with rules fileCommit-type: maintainability
Clean up PETSc str ops to use more secure implementations where possible. These include:- Use PetscStrncpy()/PetscStrlcat()/PetscMemcpy() over PetscStrcpy()/PetscStrcat()- Use PetscArraycpy() over
Clean up PETSc str ops to use more secure implementations where possible. These include:- Use PetscStrncpy()/PetscStrlcat()/PetscMemcpy() over PetscStrcpy()/PetscStrcat()- Use PetscArraycpy() over PetscMemcpy() as appropriate for string buffer copying- Use built in string from name over hardcoding- Use sizeof over hardcoded length- Replace some Strlcat with Strncpy when offset is known
Remove unneeded declarations of LOCDIR from all the makefilesCommit-type:documentation
Make PetscErrorCode a non-discardable enum
source code format changes due to .clang-format changes
Remove braces from one-liners w/o PetscCall()
clang-format: convert PETSc sources to comply with clang-format
Add PetscFunctionBeginUser to all PETSc C/C++ examplesNow the stack frames will contain the main program and the correct line numbers in themgit ls-files | egrep "(tutorials|tests)" | xargs sed -
Add PetscFunctionBeginUser to all PETSc C/C++ examplesNow the stack frames will contain the main program and the correct line numbers in themgit ls-files | egrep "(tutorials|tests)" | xargs sed -i "s?\(PetscCall(PetscInitialize(&argc\)?PetscFunctionBeginUser;\n \1?g"Commit-type: error-checking, testing-fix/spend 15m
Get values of makefile SOURCE etc from the file system instead of makefilesUse SUBMANSEC from include files for manual sections instead of the makefileUnfortunately this has to be one large commi
Get values of makefile SOURCE etc from the file system instead of makefilesUse SUBMANSEC from include files for manual sections instead of the makefileUnfortunately this has to be one large commit since the changes all have to be done at onceCommit-type: docs/spend 10m
remove garbage from makefilesIncluding * unused FLAGS variables * All: lib that did not work * stray blank lines etcCommit-type: housekeeping/spend 1h
Remove extra spaces and unwanted plurals
Enable PETSC_ATTRIBUTE_FORMAT()
Cleanup of introduction of PetscCall()* remove bogus error flags from XXXBegin()/End() macros such as PetscOptionsBegin()/End()* rename for consistency certain XXXBegin()/End() macros such as Mat
Cleanup of introduction of PetscCall()* remove bogus error flags from XXXBegin()/End() macros such as PetscOptionsBegin()/End()* rename for consistency certain XXXBegin()/End() macros such as MatPreallocateInitialize()/Finalize()* fix many lingering ierr = XXX that arose from multiline function calls* sync slepc/hpddm - to use snapshots with the same changesCommit-type: error-checking, style-fix/spend 8h
The great renaming:- CHKERRQ() -> PetscCall()- CHKERRV() -> PetscCallVoid()- CHKERRMPI() -> PetscCallMPI()- CHKERRABORT() -> PetscCallAbort()- CHKERRCONTINUE() -> PetscCallContinue()- CHKERRXX
The great renaming:- CHKERRQ() -> PetscCall()- CHKERRV() -> PetscCallVoid()- CHKERRMPI() -> PetscCallMPI()- CHKERRABORT() -> PetscCallAbort()- CHKERRCONTINUE() -> PetscCallContinue()- CHKERRXX() -> PetscCallThrow()- CHKERRCXX() -> PetscCallCXX()- CHKERRCUDA() -> PetscCallCUDA()- CHKERRCUBLAS() -> PetscCallCUBLAS()- CHKERRCUSPARSE() -> PetscCallCUSPARSE()- CHKERRCUSOLVER() -> PetscCallCUSOLVER()- CHKERRCUFFT() -> PetscCallCUFFT()- CHKERRCURAND() -> PetscCallCURAND()- CHKERRHIP() -> PetscCallHIP()- CHKERRHIPBLAS() -> PetscCallHIPBLAS()- CHKERRHIPSOLVER() -> PetscCallHIPSOLVER()- CHKERRQ_CEED() -> PetscCallCEED()- CHKERR_FORTRAN_VOID_FUNCTION() -> PetscCallFortranVoidFunction()- CHKERRMKL() -> PetscCallMKL()- CHKERRMMG() -> PetscCallMMG()- CHKERRMMG_NONSTANDARD() -> PetscCallMMG_NONSTANDARD()- CHKERRCGNS() -> PetscCallCGNS()- CHKERRPTSCOTCH() -> PetscCallPTSCOTCH()- CHKERRSTR() -> PetscCallSTR()- CHKERRTC() -> PetscCallTC()
PetscInitialize() and PetscFinalize() wrapped:- ierr = PetscInitialize();if (ierr) return ierr;+ CHKERRQ(PetscInitialize());- ierr = PetscFinalize();- return ierr;+ CHKERRQ(PetscFinalize());+
PetscInitialize() and PetscFinalize() wrapped:- ierr = PetscInitialize();if (ierr) return ierr;+ CHKERRQ(PetscInitialize());- ierr = PetscFinalize();- return ierr;+ CHKERRQ(PetscFinalize());+ return 0;
chkerr and friends wrapped
Some missing CHKERR[Q|MPI]
Convert MPI error type to PETSc error with string message for all MPI callsNow PETSc examples will ONLY return PETSc error codes and never MPI error codes directly so we can understand and post-pro
Convert MPI error type to PETSc error with string message for all MPI callsNow PETSc examples will ONLY return PETSc error codes and never MPI error codes directly so we can understand and post-process their errors better.The test harness will now automatically retry tests that fail with MPI, this may help with Intel MPI that produces seemingly random failures.Commit-type: error-checking/spend 30m
Turn on checkbadSource test to generate an error when found; fix all source code that causes errorsCommit-type: portability-fix, testing-fix, style-fix, feature, maintainability/spend 1.5h
12