Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
193 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,73 @@ | ||
#define TAOSOLVER_DLL | ||
|
||
#include "include/private/taosolver_impl.h" | ||
|
||
#undef __FUNCT__ | ||
#define __FUNCT__ "TaoSolverInitializePackage" | ||
/*@C | ||
TaoSolverInitializePackage - This function sets up PETSc to use the TaoSolver | ||
package. When using static libraries, this function is called from the | ||
first entry to TaoSolverCreate(); when using shared libraries, it is called | ||
from PetscDLLibraryRegister() | ||
Input parameter: | ||
. path - The dynamic library path or PETSC_NULL | ||
Level: developer | ||
.seealso: TaoSolverCreate() | ||
@*/ | ||
PetscErrorCode TAOSOLVER_DLLEXPORT TaoSolverInitializePackage(const char path[]) | ||
{ | ||
static PetscTruth initialized = PETSC_FALSE; | ||
PetscErrorCode ierr; | ||
|
||
PetscFunctionBegin; | ||
|
||
if (initialized) PetscFunctionReturn(0); | ||
initialized = PETSC_TRUE; | ||
|
||
ierr = PetscCookieRegister("TaoSolver",&TAOSOLVER_COOKIE); CHKERRQ(ierr); | ||
|
||
/* Tell PETSc what solvers are available */ | ||
ierr = TaoSolverRegisterAll(path); CHKERRQ(ierr); | ||
|
||
/* Tell PETSc what events are associated with TaoSolver */ | ||
ierr = PetscLogEventRegister("TaoSolverSolve",TAOSOLVER_COOKIE,&TaoSolver_Solve); CHKERRQ(ierr); | ||
ierr = PetscLogEventRegister("TaoSolverObjectiveEval",TAOSOLVER_COOKIE,&TaoSolver_ObjectiveEval); CHKERRQ(ierr); | ||
ierr = PetscLogEventRegister("TaoSolverGradientEval",TAOSOLVER_COOKIE,&TaoSolver_GradientEval); CHKERRQ(ierr); | ||
ierr = PetscLogEventRegister("TaoSolverHessianEval",TAOSOLVER_COOKIE,&TaoSolver_HessianEval); CHKERRQ(ierr); | ||
ierr = PetscLogEventRegister("TaoSolverJacobianEval",TAOSOLVER_COOKIE,&TaoSolver_JacobianEval); CHKERRQ(ierr); | ||
|
||
|
||
PetscFunctionReturn(0); | ||
} | ||
|
||
#ifdef PETSC_USE_DYNAMIC_LIBRARIES | ||
EXTERN_C_BEGIN | ||
#undef __FUNCT__ | ||
#define __FUNCT__ "PetscDLLibraryRegister_taosolver" | ||
/* | ||
PetscDLLibraryRegister - this function is called when the dynamic library it | ||
is in is opened. | ||
This registers all of the TaoSolver methods that are in the libtaosolver | ||
library. | ||
Input Parameter: | ||
. path - library path | ||
*/ | ||
|
||
PetscErrorCode TAOSOLVER_DLLEXPORT PetscDLLibraryRegister_taosolver(const char path[]) | ||
{ | ||
PetscErrorCode ierr; | ||
|
||
ierr = PetscInitializeNoArguments(); | ||
if (ierr) | ||
return 1; | ||
PetscFunctionBegin; | ||
ierr = TaoSolverInitializePackage(path); CHKERRQ(ierr); | ||
PetscFunctionReturn(0); | ||
} | ||
EXTERN_C_END | ||
#endif /*PETSC_USE_DYNAMIC_LIBRARIES*/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,113 @@ | ||
#define TAOSOLVER_DLL | ||
|
||
#include "include/private/taosolver_impl.h" | ||
|
||
|
||
EXTERN_C_BEGIN | ||
extern int TaoCreate_LMVM(TAO_SOLVER); | ||
/* | ||
extern int TaoCreate_NLS(TAO_SOLVER); | ||
extern int TaoCreate_NTR(TAO_SOLVER); | ||
extern int TaoCreate_NTL(TAO_SOLVER); | ||
extern int TaoCreate_CG(TAO_SOLVER); | ||
extern int TaoCreate_TRON(TAO_SOLVER); | ||
extern int TaoCreate_BQPIP(TAO_SOLVER); | ||
extern int TaoCreate_BLMVM(TAO_SOLVER); | ||
extern int TaoCreate_BNLS(TAO_SOLVER); | ||
extern int TaoCreate_GPCG(TAO_SOLVER); | ||
extern int TaoCreate_QPIP(TAO_SOLVER); | ||
extern int TaoCreate_NLSQ(TAO_SOLVER); | ||
extern int TaoCreate_BLM(TAO_SOLVER); | ||
extern int TaoCreate_SSILS(TAO_SOLVER); | ||
extern int TaoCreate_SSFLS(TAO_SOLVER); | ||
extern int TaoCreate_ASILS(TAO_SOLVER); | ||
extern int TaoCreate_ASFLS(TAO_SOLVER); | ||
extern int TaoCreate_ISILS(TAO_SOLVER); | ||
extern int TaoCreate_KT(TAO_SOLVER); | ||
extern int TaoCreate_BCG(TAO_SOLVER); | ||
extern int TaoCreate_RSCS(TAO_SOLVER); | ||
extern int TaoCreate_ICP(TAO_SOLVER); | ||
extern int TaoCreate_NM(TAO_SOLVER); | ||
extern int TaoCreate_FD(TAO_SOLVER); | ||
*/ | ||
EXTERN_C_END | ||
|
||
/* | ||
Offset the convergence reasons so negative number represent diverged and | ||
positive represent converged. | ||
*/ | ||
const char *TaoSolverConvergedReasons_Shifted[] = { | ||
"DIVERGED_USER", | ||
"DIVERGED_TR_REDUCTION", | ||
"DIVERGED_LS_FAILURE", | ||
"DIVERGED_MAXFCN", | ||
"DIVERGED_NAN", | ||
"DIVERGED_MAXITS", | ||
"DIVERGED_FUNCTION_DOMAIN", | ||
|
||
"CONTINUE_ITERATING", | ||
|
||
" ", | ||
"CONVERGED_ATOL", | ||
"CONVERGED_RTOL", | ||
"CONVERGED_TRTOL", | ||
"CONVERGED_MINF", | ||
"CONVERGED_USER" }; | ||
const char **TaoSolverConvergedReasons = TaoSolverConvergedReasons_Shifted + 8; | ||
|
||
|
||
|
||
|
||
extern PetscTruth TaoSolverRegisterAllCalled; | ||
|
||
#undef __FUNCT__ | ||
#define __FUNCT__ "TaoSolverRegisterAll" | ||
/*@C | ||
TaoSolverRegisterAll - Registersall of the minimization methods in the TAO | ||
package. | ||
Not Collective | ||
Level: developer | ||
.seealso TaoSolverRegisterDynamic(), TaoSolverRegisterDestroy() | ||
@*/ | ||
PetscErrorCode TAOSOLVER_DLLEXPORT TaoSolverRegisterAll(const char path[]) | ||
{ | ||
PetscErrorCode ierr; | ||
|
||
PetscFunctionBegin; | ||
TaoSolverRegisterAllCalled = PETSC_TRUE; | ||
|
||
ierr = TaoSolverRegisterDynamic("tao_lmvm",path,"TaoCreate_LMVM",TaoCreate_LMVM); CHKERRQ(ierr); | ||
|
||
/* | ||
ierr = TaoSolverRegisterDynamic("tao_nls",path,"TaoCreate_NLS",TaoCreate_NLS); CHKERRQ(ierr); | ||
ierr = TaoSolverRegisterDynamic("tao_cg",path,"TaoCreate_CG",TaoCreate_CG); CHKERRQ(ierr); | ||
ierr = TaoSolverRegisterDynamic("tao_bqpip",path,"TaoCreate_BQPIP",TaoCreate_BQPIP); CHKERRQ(ierr); | ||
ierr = TaoSolverRegisterDynamic("tao_blmvm",path,"TaoCreate_BLMVM",TaoCreate_BLMVM); CHKERRQ(ierr); | ||
ierr = TaoSolverRegisterDynamic("tao_bnls",path,"TaoCreate_BNLS",TaoCreate_BNLS); CHKERRQ(ierr); | ||
ierr = TaoSolverRegisterDynamic("tao_tron",path,"TaoCreate_TRON",TaoCreate_TRON); CHKERRQ(ierr); | ||
ierr = TaoSolverRegisterDynamic("tao_nm",path,"TaoCreate_NM",TaoCreate_NM); CHKERRQ(ierr); | ||
ierr = TaoSolverRegisterDynamic("tao_ntl",path,"TaoCreate_NTL",TaoCreate_NTL); CHKERRQ(ierr); | ||
ierr = TaoSolverRegisterDynamic("tao_ntr",path,"TaoCreate_NTR",TaoCreate_NTR); CHKERRQ(ierr); | ||
ierr = TaoSolverRegisterDynamic("tao_gpcg",path,"TaoCreate_GPCG",TaoCreate_GPCG); CHKERRQ(ierr); | ||
ierr = TaoSolverRegisterDynamic("tao_ssils",path,"TaoCreate_SSILS",TaoCreate_SSILS); CHKERRQ(ierr); | ||
ierr = TaoSolverRegisterDynamic("tao_ssfls",path,"TaoCreate_SSFLS",TaoCreate_SSFLS); CHKERRQ(ierr); | ||
ierr = TaoSolverRegisterDynamic("tao_asils",path,"TaoCreate_ASILS",TaoCreate_ASILS); CHKERRQ(ierr); | ||
ierr = TaoSolverRegisterDynamic("tao_asfls",path,"TaoCreate_ASFLS",TaoCreate_ASFLS); CHKERRQ(ierr); | ||
ierr = TaoSolverRegisterDynamic("tao_isils",path,"TaoCreate_ISILS",TaoCreate_ISILS); CHKERRQ(ierr); | ||
ierr = TaoSolverRegisterDynamic("tao_kt",path,"TaoCreate_KT",TaoCreate_KT); CHKERRQ(ierr); | ||
ierr = TaoSolverRegisterDynamic("tao_rscs",path,"TaoCreate_RSCS",TaoCreate_RSCS); CHKERRQ(ierr); | ||
ierr = TaoSolverRegisterDynamic("tao_icp",path,"TaoCreate_ICP",TaoCreate_ICP); CHKERRQ(ierr); | ||
ierr = TaoSolverRegisterDynamic("tao_fd_test",path,"TaoCreate_FD",TaoCreate_FD); CHKERRQ(ierr); | ||
*/ | ||
|
||
TaoFunctionReturn(0); | ||
} | ||
|