| multigrid.c (cb32e2e7f026784d97a57f1901677e9727def907) | multigrid.c (dc7d240c1c3ecbc40e893ea38e37c8e19d48593c) |
|---|---|
| 1// Copyright (c) 2017, Lawrence Livermore National Security, LLC. Produced at 2// the Lawrence Livermore National Laboratory. LLNL-CODE-734707. All Rights 3// reserved. See files LICENSE and NOTICE for details. 4// 5// This file is part of CEED, a collection of benchmarks, miniapps, software 6// libraries and APIs for efficient high-order finite element and spectral 7// element discretizations for exascale applications. For more information and 8// source code availability see http://github.com/ceed. --- 132 unchanged lines hidden (view full) --- 141 } 142 } 143 144 // Allocate arrays for PETSc objects for each level 145 switch (coarsen) { 146 case COARSEN_UNIFORM: 147 numlevels = degree; 148 break; | 1// Copyright (c) 2017, Lawrence Livermore National Security, LLC. Produced at 2// the Lawrence Livermore National Laboratory. LLNL-CODE-734707. All Rights 3// reserved. See files LICENSE and NOTICE for details. 4// 5// This file is part of CEED, a collection of benchmarks, miniapps, software 6// libraries and APIs for efficient high-order finite element and spectral 7// element discretizations for exascale applications. For more information and 8// source code availability see http://github.com/ceed. --- 132 unchanged lines hidden (view full) --- 141 } 142 } 143 144 // Allocate arrays for PETSc objects for each level 145 switch (coarsen) { 146 case COARSEN_UNIFORM: 147 numlevels = degree; 148 break; |
| 149 case COARSEN_LOGRITHMIC: | 149 case COARSEN_LOGARITHMIC: |
| 150 numlevels = ceil(log(degree)/log(2)) + 1; 151 break; 152 } 153 ierr = PetscMalloc1(numlevels, &leveldegrees); CHKERRQ(ierr); 154 switch (coarsen) { 155 case COARSEN_UNIFORM: 156 for (int i=0; i<numlevels; i++) leveldegrees[i] = i + 1; 157 break; | 150 numlevels = ceil(log(degree)/log(2)) + 1; 151 break; 152 } 153 ierr = PetscMalloc1(numlevels, &leveldegrees); CHKERRQ(ierr); 154 switch (coarsen) { 155 case COARSEN_UNIFORM: 156 for (int i=0; i<numlevels; i++) leveldegrees[i] = i + 1; 157 break; |
| 158 case COARSEN_LOGRITHMIC: | 158 case COARSEN_LOGARITHMIC: |
| 159 for (int i=0; i<numlevels-1; i++) leveldegrees[i] = pow(2,i); 160 leveldegrees[numlevels-1] = degree; 161 break; 162 } 163 ierr = PetscMalloc1(numlevels, &dm); CHKERRQ(ierr); 164 ierr = PetscMalloc1(numlevels, &X); CHKERRQ(ierr); 165 ierr = PetscMalloc1(numlevels, &Xloc); CHKERRQ(ierr); 166 ierr = PetscMalloc1(numlevels, &mult); CHKERRQ(ierr); --- 459 unchanged lines hidden --- | 159 for (int i=0; i<numlevels-1; i++) leveldegrees[i] = pow(2,i); 160 leveldegrees[numlevels-1] = degree; 161 break; 162 } 163 ierr = PetscMalloc1(numlevels, &dm); CHKERRQ(ierr); 164 ierr = PetscMalloc1(numlevels, &X); CHKERRQ(ierr); 165 ierr = PetscMalloc1(numlevels, &Xloc); CHKERRQ(ierr); 166 ierr = PetscMalloc1(numlevels, &mult); CHKERRQ(ierr); --- 459 unchanged lines hidden --- |