Lines Matching refs:pc_ml
406 PC_ML *pc_ml = (PC_ML *)mg->innerctx; in PCSetCoordinates_ML() local
421 oldarrsz = pc_ml->dim * pc_ml->nloc; in PCSetCoordinates_ML()
422 pc_ml->dim = ndm; in PCSetCoordinates_ML()
423 pc_ml->nloc = nloc; in PCSetCoordinates_ML()
427 if (pc_ml->coords == 0 || (oldarrsz != arrsz)) { in PCSetCoordinates_ML()
428 PetscCall(PetscFree(pc_ml->coords)); in PCSetCoordinates_ML()
429 PetscCall(PetscMalloc1(arrsz, &pc_ml->coords)); in PCSetCoordinates_ML()
431 for (kk = 0; kk < arrsz; kk++) pc_ml->coords[kk] = -999.; in PCSetCoordinates_ML()
435 for (ii = 0; ii < ndm; ii++) pc_ml->coords[ii * nloc + kk] = coords[kk * ndm + ii]; in PCSetCoordinates_ML()
439 for (ii = 0; ii < ndm; ii++) pc_ml->coords[ii * nloc + kk] = coords[bs * kk * ndm + ii]; in PCSetCoordinates_ML()
448 PC_ML *pc_ml = (PC_ML *)mg->innerctx; in PCReset_ML() local
449 PetscInt level, fine_level = pc_ml->Nlevels - 1, dim = pc_ml->dim; in PCReset_ML()
453 …for (level = 0; level <= fine_level; level++) PetscCall(VecDestroy(&pc_ml->gridctx[level].coords)); in PCReset_ML()
454 if (pc_ml->ml_object && pc_ml->ml_object->Grid) { in PCReset_ML()
455 ML_Aggregate_Viz_Stats *grid_info = (ML_Aggregate_Viz_Stats *)pc_ml->ml_object->Grid[0].Grid; in PCReset_ML()
459 …PetscStackCallExternalVoid("ML_Operator_Getrow", ML_Aggregate_VizAndStats_Clean(pc_ml->ml_object)); in PCReset_ML()
462 PetscStackCallExternalVoid("ML_Aggregate_Destroy", ML_Aggregate_Destroy(&pc_ml->agg_object)); in PCReset_ML()
463 PetscStackCallExternalVoid("ML_Aggregate_Destroy", ML_Destroy(&pc_ml->ml_object)); in PCReset_ML()
465 if (pc_ml->PetscMLdata) { in PCReset_ML()
466 PetscCall(PetscFree(pc_ml->PetscMLdata->pwork)); in PCReset_ML()
467 PetscCall(MatDestroy(&pc_ml->PetscMLdata->Aloc)); in PCReset_ML()
468 PetscCall(VecDestroy(&pc_ml->PetscMLdata->x)); in PCReset_ML()
469 PetscCall(VecDestroy(&pc_ml->PetscMLdata->y)); in PCReset_ML()
471 PetscCall(PetscFree(pc_ml->PetscMLdata)); in PCReset_ML()
473 if (pc_ml->gridctx) { in PCReset_ML()
475 if (pc_ml->gridctx[level].A) PetscCall(MatDestroy(&pc_ml->gridctx[level].A)); in PCReset_ML()
476 if (pc_ml->gridctx[level].P) PetscCall(MatDestroy(&pc_ml->gridctx[level].P)); in PCReset_ML()
477 if (pc_ml->gridctx[level].R) PetscCall(MatDestroy(&pc_ml->gridctx[level].R)); in PCReset_ML()
478 if (pc_ml->gridctx[level].x) PetscCall(VecDestroy(&pc_ml->gridctx[level].x)); in PCReset_ML()
479 if (pc_ml->gridctx[level].b) PetscCall(VecDestroy(&pc_ml->gridctx[level].b)); in PCReset_ML()
480 if (pc_ml->gridctx[level + 1].r) PetscCall(VecDestroy(&pc_ml->gridctx[level + 1].r)); in PCReset_ML()
483 PetscCall(PetscFree(pc_ml->gridctx)); in PCReset_ML()
484 PetscCall(PetscFree(pc_ml->coords)); in PCReset_ML()
486 pc_ml->dim = 0; in PCReset_ML()
487 pc_ml->nloc = 0; in PCReset_ML()
516 PC_ML *pc_ml = (PC_ML *)mg->innerctx; in PCSetUp_ML() local
532 if (pc->flag == SAME_NONZERO_PATTERN && pc_ml->reuse_interpolation) { in PCSetUp_ML()
537 ml_object = pc_ml->ml_object; in PCSetUp_ML()
538 gridctx = pc_ml->gridctx; in PCSetUp_ML()
539 Nlevels = pc_ml->Nlevels; in PCSetUp_ML()
554 PetscMLdata = pc_ml->PetscMLdata; in PCSetUp_ML()
605 pc_ml->size = size; in PCSetUp_ML()
618 pc_ml->PetscMLdata = PetscMLdata; in PCSetUp_ML()
625 if (pc_ml->dim) { /* create vecs around the coordinate data given */ in PCSetUp_ML()
626 PetscInt i, j, dim = pc_ml->dim; in PCSetUp_ML()
627 PetscInt nloc = pc_ml->nloc, nlocghost; in PCSetUp_ML()
635 for (j = 0; j < nloc; j++) PetscMLdata->pwork[bs * j] = pc_ml->coords[nloc * i + j]; in PCSetUp_ML()
643 PetscCall(PetscFree(pc_ml->coords)); in PCSetUp_ML()
644 pc_ml->coords = ghostedcoords; in PCSetUp_ML()
651 PetscStackCallExternalVoid("ML_Create", ML_Create(&ml_object, pc_ml->MaxNlevels)); in PCSetUp_ML()
653 pc_ml->ml_object = ml_object; in PCSetUp_ML()
658 …PetscStackCallExternalVoid("ML_Set_Symmetrize", ML_Set_Symmetrize(ml_object, pc_ml->Symmetrize ? M… in PCSetUp_ML()
662 pc_ml->agg_object = agg_object; in PCSetUp_ML()
667 if (pc_ml->nulltype == PCML_NULLSPACE_AUTO) { in PCSetUp_ML()
668 if (mnull) pc_ml->nulltype = PCML_NULLSPACE_USER; in PCSetUp_ML()
669 else if (bs > 1) pc_ml->nulltype = PCML_NULLSPACE_BLOCK; in PCSetUp_ML()
670 else pc_ml->nulltype = PCML_NULLSPACE_SCALAR; in PCSetUp_ML()
672 switch (pc_ml->nulltype) { in PCSetUp_ML()
704 …ML_Aggregate_Set_MaxCoarseSize", ML_Aggregate_Set_MaxCoarseSize(agg_object, pc_ml->MaxCoarseSize)); in PCSetUp_ML()
706 switch (pc_ml->CoarsenScheme) { in PCSetUp_ML()
717 …ternalVoid("ML_Aggregate_Set_Threshold", ML_Aggregate_Set_Threshold(agg_object, pc_ml->Threshold)); in PCSetUp_ML()
718 …ML_Aggregate_Set_DampingFactor", ML_Aggregate_Set_DampingFactor(agg_object, pc_ml->DampingFactor)); in PCSetUp_ML()
719 …if (pc_ml->SpectralNormScheme_Anorm) PetscStackCallExternalVoid("ML_Set_SpectralNormScheme_Anorm",… in PCSetUp_ML()
720 agg_object->keep_agg_information = (int)pc_ml->KeepAggInfo; in PCSetUp_ML()
721 agg_object->keep_P_tentative = (int)pc_ml->Reusable; in PCSetUp_ML()
722 agg_object->block_scaled_SA = (int)pc_ml->BlockScaling; in PCSetUp_ML()
723 agg_object->minimizing_energy = (int)pc_ml->EnergyMinimization; in PCSetUp_ML()
724 agg_object->minimizing_energy_droptol = (double)pc_ml->EnergyMinimizationDropTol; in PCSetUp_ML()
725 agg_object->cheap_minimizing_energy = (int)pc_ml->EnergyMinimizationCheap; in PCSetUp_ML()
727 if (pc_ml->Aux) { in PCSetUp_ML()
728 …PetscCheck(pc_ml->dim, PetscObjectComm((PetscObject)pc), PETSC_ERR_USER, "Auxiliary matrix require… in PCSetUp_ML()
729 ml_object->Amat[0].aux_data->threshold = pc_ml->AuxThreshold; in PCSetUp_ML()
738 if (pc_ml->dim) { in PCSetUp_ML()
739 PetscInt i, dim = pc_ml->dim; in PCSetUp_ML()
754 grid_info->x = pc_ml->coords + nlocghost * i; in PCSetUp_ML()
757 grid_info->y = pc_ml->coords + nlocghost * i; in PCSetUp_ML()
760 grid_info->z = pc_ml->coords + nlocghost * i; in PCSetUp_ML()
770 if (pc_ml->Repartition) { in PCSetUp_ML()
772 …ion_Set_LargestMinMaxRatio", ML_Repartition_Set_LargestMinMaxRatio(ml_object, pc_ml->MaxMinRatio)); in PCSetUp_ML()
773 …Void("ML_Repartition_Set_MinPerProc", ML_Repartition_Set_MinPerProc(ml_object, pc_ml->MinPerProc)); in PCSetUp_ML()
774 …ition_Set_PutOnSingleProc", ML_Repartition_Set_PutOnSingleProc(ml_object, pc_ml->PutOnSingleProc)); in PCSetUp_ML()
783 if (!pc_ml->RepartitionType) { in PCSetUp_ML()
786 …PetscCheck(pc_ml->dim, PetscObjectComm((PetscObject)pc), PETSC_ERR_USER, "ML Zoltan repartitioning… in PCSetUp_ML()
788 …llExternalVoid("ML_Aggregate_Set_Dimensions", ML_Aggregate_Set_Dimensions(agg_object, pc_ml->dim)); in PCSetUp_ML()
792 … grid_info->zoltan_type = pc_ml->ZoltanScheme + 1; /* ml numbers options 1, 2, 3 */ in PCSetUp_ML()
803 if (pc_ml->OldHierarchy) { in PCSetUp_ML()
809 pc_ml->Nlevels = Nlevels; in PCSetUp_ML()
826 pc_ml->gridctx = gridctx; in PCSetUp_ML()
889 if (pc_ml->dim) { in PCSetUp_ML()
890 PetscInt i, j, dim = pc_ml->dim; in PCSetUp_ML()
952 PC_ML *pc_ml = (PC_ML *)mg->innerctx; in PCDestroy_ML() local
956 PetscCall(PetscFree(pc_ml)); in PCDestroy_ML()
971 PC_ML *pc_ml = (PC_ML *)mg->innerctx; in PCSetFromOptions_ML() local
986 …onsInt("-pc_ml_maxNlevels", "Maximum number of levels", "None", pc_ml->MaxNlevels, &pc_ml->MaxNlev… in PCSetFromOptions_ML()
987 …aximum coarsest mesh size", "ML_Aggregate_Set_MaxCoarseSize", pc_ml->MaxCoarseSize, &pc_ml->MaxCoa… in PCSetFromOptions_ML()
990 pc_ml->CoarsenScheme = indx; in PCSetFromOptions_ML()
992 …actor", "P damping factor", "ML_Aggregate_Set_DampingFactor", pc_ml->DampingFactor, &pc_ml->Dampin… in PCSetFromOptions_ML()
993 …_Threshold", "Smoother drop tol", "ML_Aggregate_Set_Threshold", pc_ml->Threshold, &pc_ml->Threshol… in PCSetFromOptions_ML()
994 …ing spectral radius", "ML_Set_SpectralNormScheme_Anorm", pc_ml->SpectralNormScheme_Anorm, &pc_ml->… in PCSetFromOptions_ML()
995 …_ml_Symmetrize", "Symmetrize aggregation", "ML_Set_Symmetrize", pc_ml->Symmetrize, &pc_ml->Symmetr… in PCSetFromOptions_ML()
996 …BlockScaling", "Scale all dofs at each node together", "None", pc_ml->BlockScaling, &pc_ml->BlockS… in PCSetFromOptions_ML()
997 …formation to use", "None", PCMLNullSpaceTypes, (PetscEnum)pc_ml->nulltype, (PetscEnum *)&pc_ml->nu… in PCSetFromOptions_ML()
998 …; see ML manual for 1,2,3; -1 and 4 undocumented)", "None", pc_ml->EnergyMinimization, &pc_ml->Ene… in PCSetFromOptions_ML()
999 …heaper, weaker when matrix entries change a lot)", "None", pc_ml->reuse_interpolation, &pc_ml->reu… in PCSetFromOptions_ML()
1007 …PetscCheck(pc_ml->EnergyMinimization >= -1 && pc_ml->EnergyMinimization <= 4, comm, PETSC_ERR_ARG_… in PCSetFromOptions_ML()
1008 …PetscCheck(pc_ml->EnergyMinimization != 4 || size == 1, comm, PETSC_ERR_SUP, "Energy minimization … in PCSetFromOptions_ML()
1009 …if (pc_ml->EnergyMinimization == 4) PetscCall(PetscInfo(pc, "Mandel's energy minimization scheme i… in PCSetFromOptions_ML()
1010 …pc_ml->EnergyMinimization) PetscCall(PetscOptionsReal("-pc_ml_EnergyMinimizationDropTol", "Energy … in PCSetFromOptions_ML()
1011 if (pc_ml->EnergyMinimization == 2) { in PCSetFromOptions_ML()
1013 …ionCheap", "Use cheaper variant of norm type 2", "None", pc_ml->EnergyMinimizationCheap, &pc_ml->E… in PCSetFromOptions_ML()
1016 if (pc_ml->EnergyMinimization) pc_ml->KeepAggInfo = PETSC_TRUE; in PCSetFromOptions_ML()
1017 … to be reused, or auxiliary matrices to be generated", "None", pc_ml->KeepAggInfo, &pc_ml->KeepAgg… in PCSetFromOptions_ML()
1019 if (pc_ml->EnergyMinimization == -1) pc_ml->Reusable = PETSC_TRUE; in PCSetFromOptions_ML()
1020 …tructures so that the multilevel hierarchy is reusable", "None", pc_ml->Reusable, &pc_ml->Reusable… in PCSetFromOptions_ML()
1028 …ldHierarchy", "Use old routine to generate hierarchy", "None", pc_ml->OldHierarchy, &pc_ml->OldHie… in PCSetFromOptions_ML()
1029 …partition levels of the hierarchy", "ML_Repartition_Activate", pc_ml->Repartition, &pc_ml->Reparti… in PCSetFromOptions_ML()
1030 if (pc_ml->Repartition) { in PCSetFromOptions_ML()
1031 …repartitioned sizes", "ML_Repartition_Set_LargestMinMaxRatio", pc_ml->MaxMinRatio, &pc_ml->MaxMinR… in PCSetFromOptions_ML()
1032 …"Smallest repartitioned size", "ML_Repartition_Set_MinPerProc", pc_ml->MinPerProc, &pc_ml->MinPerP… in PCSetFromOptions_ML()
1033 …ned to one processor", "ML_Repartition_Set_PutOnSingleProc", pc_ml->PutOnSingleProc, &pc_ml->PutOn… in PCSetFromOptions_ML()
1038 pc_ml->RepartitionType = partindx; in PCSetFromOptions_ML()
1044 pc_ml->ZoltanScheme = zindx; in PCSetFromOptions_ML()
1049 pc_ml->RepartitionType = partindx; in PCSetFromOptions_ML()
1052 …", "Aggregate using auxiliary coordinate-based laplacian", "None", pc_ml->Aux, &pc_ml->Aux, NULL)); in PCSetFromOptions_ML()
1053 …("-pc_ml_AuxThreshold", "Auxiliary smoother drop tol", "None", pc_ml->AuxThreshold, &pc_ml->AuxThr… in PCSetFromOptions_ML()
1112 PC_ML *pc_ml; in PCCreate_ML() local
1125 PetscCall(PetscNew(&pc_ml)); in PCCreate_ML()
1126 mg->innerctx = pc_ml; in PCCreate_ML()
1128 pc_ml->ml_object = 0; in PCCreate_ML()
1129 pc_ml->agg_object = 0; in PCCreate_ML()
1130 pc_ml->gridctx = 0; in PCCreate_ML()
1131 pc_ml->PetscMLdata = 0; in PCCreate_ML()
1132 pc_ml->Nlevels = -1; in PCCreate_ML()
1133 pc_ml->MaxNlevels = 10; in PCCreate_ML()
1134 pc_ml->MaxCoarseSize = 1; in PCCreate_ML()
1135 pc_ml->CoarsenScheme = 1; in PCCreate_ML()
1136 pc_ml->Threshold = 0.0; in PCCreate_ML()
1137 pc_ml->DampingFactor = 4.0 / 3.0; in PCCreate_ML()
1138 pc_ml->SpectralNormScheme_Anorm = PETSC_FALSE; in PCCreate_ML()
1139 pc_ml->size = 0; in PCCreate_ML()
1140 pc_ml->dim = 0; in PCCreate_ML()
1141 pc_ml->nloc = 0; in PCCreate_ML()
1142 pc_ml->coords = 0; in PCCreate_ML()
1143 pc_ml->Repartition = PETSC_FALSE; in PCCreate_ML()
1144 pc_ml->MaxMinRatio = 1.3; in PCCreate_ML()
1145 pc_ml->MinPerProc = 512; in PCCreate_ML()
1146 pc_ml->PutOnSingleProc = 5000; in PCCreate_ML()
1147 pc_ml->RepartitionType = 0; in PCCreate_ML()
1148 pc_ml->ZoltanScheme = 0; in PCCreate_ML()
1149 pc_ml->Aux = PETSC_FALSE; in PCCreate_ML()
1150 pc_ml->AuxThreshold = 0.0; in PCCreate_ML()