Lines Matching refs:outer
179 #define AllocateInternalID(MUMPS_STRUC_T, outer) \ argument
183 outer->icntl = inner->icntl; \
184 outer->cntl = inner->cntl; \
185 outer->info = inner->info; \
186 outer->infog = inner->infog; \
187 outer->rinfo = inner->rinfo; \
188 outer->rinfog = inner->rinfog; \
189 outer->ooc_tmpdir = inner->ooc_tmpdir; \
190 outer->ooc_prefix = inner->ooc_prefix; \
192 inner->comm_fortran = outer->comm_fortran; \
193 inner->par = outer->par; \
194 inner->sym = outer->sym; \
195 outer->internal_id = inner; \
199 static inline PetscErrorCode MatMumpsAllocateInternalID(XMUMPS_STRUC_C *outer, PetscPrecision preci… in MatMumpsAllocateInternalID() argument
202 outer->precision = precision; in MatMumpsAllocateInternalID()
205 if (precision == PETSC_PRECISION_SINGLE) AllocateInternalID(CMUMPS_STRUC_C, outer); in MatMumpsAllocateInternalID()
206 else AllocateInternalID(ZMUMPS_STRUC_C, outer); in MatMumpsAllocateInternalID()
208 if (precision == PETSC_PRECISION_SINGLE) AllocateInternalID(SMUMPS_STRUC_C, outer); in MatMumpsAllocateInternalID()
209 else AllocateInternalID(DMUMPS_STRUC_C, outer); in MatMumpsAllocateInternalID()
212 AllocateInternalID(MUMPS_STRUC_C, outer); in MatMumpsAllocateInternalID()
217 #define FreeInternalIDFields(MUMPS_STRUC_T, outer) \ argument
219 MUMPS_STRUC_T *inner = (MUMPS_STRUC_T *)(outer)->internal_id; \
230 static inline PetscErrorCode MatMumpsFreeInternalID(XMUMPS_STRUC_C *outer) in MatMumpsFreeInternalID() argument
233 if (outer->internal_id) { // sometimes, the inner is never created before we destroy the outer in MatMumpsFreeInternalID()
235 const PetscPrecision mumps_precision = outer->precision; in MatMumpsFreeInternalID()
238 if (mumps_precision == PETSC_PRECISION_SINGLE) FreeInternalIDFields(CMUMPS_STRUC_C, outer); in MatMumpsFreeInternalID()
239 else FreeInternalIDFields(ZMUMPS_STRUC_C, outer); in MatMumpsFreeInternalID()
241 if (mumps_precision == PETSC_PRECISION_SINGLE) FreeInternalIDFields(SMUMPS_STRUC_C, outer); in MatMumpsFreeInternalID()
242 else FreeInternalIDFields(DMUMPS_STRUC_C, outer); in MatMumpsFreeInternalID()
246 PetscCall(PetscFree(outer->internal_id)); in MatMumpsFreeInternalID()
423 #define PreMumpsCall(inner, outer, mumpsscalar) \ argument
425 inner->job = outer->job; \
426 inner->n = outer->n; \
427 inner->nblk = outer->nblk; \
428 inner->nnz = outer->nnz; \
429 inner->irn = outer->irn; \
430 inner->jcn = outer->jcn; \
431 inner->a = (mumpsscalar *)outer->a; \
432 inner->nnz_loc = outer->nnz_loc; \
433 inner->irn_loc = outer->irn_loc; \
434 inner->jcn_loc = outer->jcn_loc; \
435 inner->a_loc = (mumpsscalar *)outer->a_loc; \
436 inner->blkptr = outer->blkptr; \
437 inner->blkvar = outer->blkvar; \
438 inner->perm_in = outer->perm_in; \
439 inner->rhs = (mumpsscalar *)outer->rhs; \
440 inner->redrhs = (mumpsscalar *)outer->redrhs; \
441 inner->rhs_sparse = (mumpsscalar *)outer->rhs_sparse; \
442 inner->sol_loc = (mumpsscalar *)outer->sol_loc; \
443 inner->rhs_loc = (mumpsscalar *)outer->rhs_loc; \
444 inner->irhs_sparse = outer->irhs_sparse; \
445 inner->irhs_ptr = outer->irhs_ptr; \
446 inner->isol_loc = outer->isol_loc; \
447 inner->irhs_loc = outer->irhs_loc; \
448 inner->nrhs = outer->nrhs; \
449 inner->lrhs = outer->lrhs; \
450 inner->lredrhs = outer->lredrhs; \
451 inner->nz_rhs = outer->nz_rhs; \
452 inner->lsol_loc = outer->lsol_loc; \
453 inner->nloc_rhs = outer->nloc_rhs; \
454 inner->lrhs_loc = outer->lrhs_loc; \
455 inner->schur_lld = outer->schur_lld; \
456 inner->size_schur = outer->size_schur; \
457 inner->listvar_schur = outer->listvar_schur; \
458 inner->schur = (mumpsscalar *)outer->schur; \
461 #define PostMumpsCall(inner, outer) \ argument
463 outer->pivnul_list = inner->pivnul_list; \
464 outer->mapping = inner->mapping; \
468 static inline PetscErrorCode PetscCallMumps_Private(XMUMPS_STRUC_C *outer) in PetscCallMumps_Private() argument
473 if (outer->precision == PETSC_PRECISION_SINGLE) { in PetscCallMumps_Private()
474 CMUMPS_STRUC_C *inner = (CMUMPS_STRUC_C *)outer->internal_id; in PetscCallMumps_Private()
475 PreMumpsCall(inner, outer, CMUMPS_COMPLEX); in PetscCallMumps_Private()
477 PostMumpsCall(inner, outer); in PetscCallMumps_Private()
479 ZMUMPS_STRUC_C *inner = (ZMUMPS_STRUC_C *)outer->internal_id; in PetscCallMumps_Private()
480 PreMumpsCall(inner, outer, ZMUMPS_COMPLEX); in PetscCallMumps_Private()
482 PostMumpsCall(inner, outer); in PetscCallMumps_Private()
485 if (outer->precision == PETSC_PRECISION_SINGLE) { in PetscCallMumps_Private()
486 SMUMPS_STRUC_C *inner = (SMUMPS_STRUC_C *)outer->internal_id; in PetscCallMumps_Private()
487 PreMumpsCall(inner, outer, SMUMPS_REAL); in PetscCallMumps_Private()
489 PostMumpsCall(inner, outer); in PetscCallMumps_Private()
491 DMUMPS_STRUC_C *inner = (DMUMPS_STRUC_C *)outer->internal_id; in PetscCallMumps_Private()
492 PreMumpsCall(inner, outer, DMUMPS_REAL); in PetscCallMumps_Private()
494 PostMumpsCall(inner, outer); in PetscCallMumps_Private()
498 MUMPS_STRUC_C *inner = (MUMPS_STRUC_C *)outer->internal_id; in PetscCallMumps_Private()
499 PreMumpsCall(inner, outer, MumpsScalar); in PetscCallMumps_Private()
501 PostMumpsCall(inner, outer); in PetscCallMumps_Private()