Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Merge branch 'master' into barry/wirth-fusion-materials

  • Loading branch information...
commit 93f5c25957eee670237cfd39fb21f85c1a06b48b 2 parents c7ff62d + 54f71ec
@BarrySmith BarrySmith authored
View
2  config/PETSc/Configure.py
@@ -95,7 +95,7 @@ def setupDependencies(self, framework):
self.mpi.headerPrefix = self.headerPrefix
headersC = map(lambda name: name+'.h', ['setjmp','dos', 'endian', 'fcntl', 'float', 'io', 'limits', 'malloc', 'pwd', 'search', 'strings',
'unistd', 'sys/sysinfo', 'machine/endian', 'sys/param', 'sys/procfs', 'sys/resource',
- 'sys/systeminfo', 'sys/times', 'sys/utsname','string', 'stdlib','memory',
+ 'sys/systeminfo', 'sys/times', 'sys/utsname','string', 'stdlib',
'sys/socket','sys/wait','netinet/in','netdb','Direct','time','Ws2tcpip','sys/types',
'WindowsX', 'cxxabi','float','ieeefp','stdint','sched','pthread','mathimf'])
functions = ['access', '_access', 'clock', 'drand48', 'getcwd', '_getcwd', 'getdomainname', 'gethostname',
View
2  config/configure.py
@@ -25,7 +25,7 @@ def check_for_option_mistakes(opts):
name = opt.split('=')[0]
if name.find('_') >= 0:
exception = False
- for exc in ['superlu_dist', 'PETSC_ARCH', 'PETSC_DIR', 'CXX_CXXFLAGS', 'LD_SHARED', 'CC_LINKER_FLAGS', 'CXX_LINKER_FLAGS', 'FC_LINKER_FLAGS', 'AR_FLAGS', 'C_VERSION', 'CXX_VERSION', 'FC_VERSION', 'size_t', 'MPI_Comm','MPI_Fint']:
+ for exc in ['superlu_dist', 'PETSC_ARCH', 'PETSC_DIR', 'CXX_CXXFLAGS', 'LD_SHARED', 'CC_LINKER_FLAGS', 'CXX_LINKER_FLAGS', 'FC_LINKER_FLAGS', 'AR_FLAGS', 'C_VERSION', 'CXX_VERSION', 'FC_VERSION', 'size_t', 'MPI_Comm','MPI_Fint','int64_t']:
if name.find(exc) >= 0:
exception = True
if not exception:
View
4 include/petscsys.h
@@ -1813,9 +1813,7 @@ PETSC_EXTERN PetscErrorCode PetscRealView(PetscInt,const PetscReal[],PetscViewer
PETSC_EXTERN PetscErrorCode PetscScalarView(PetscInt,const PetscScalar[],PetscViewer);
#include <stddef.h>
-#if defined(PETSC_HAVE_MEMORY_H)
-#include <memory.h>
-#endif
+#include <string.h> /* for memcpy, memset */
#if defined(PETSC_HAVE_STDLIB_H)
#include <stdlib.h>
#endif
View
151 src/dm/impls/plex/f90-custom/zplexf90.c
@@ -48,188 +48,193 @@
/* Definitions of Fortran Wrapper routines */
-PETSC_EXTERN void PETSC_STDCALL dmplexgetcone_(DM *dm, PetscInt *p, F90Array1d *ptr, int *__ierr PETSC_F90_2PTR_PROTO(ptrd))
+PETSC_EXTERN void PETSC_STDCALL dmplexgetcone_(DM *dm, PetscInt *p, F90Array1d *ptr, int *ierr PETSC_F90_2PTR_PROTO(ptrd))
{
const PetscInt *v;
PetscInt n;
- *__ierr = DMPlexGetConeSize(*dm, *p, &n);if (*__ierr) return;
- *__ierr = DMPlexGetCone(*dm, *p, &v);if (*__ierr) return;
- *__ierr = F90Array1dCreate((void*) v, PETSC_INT, 1, n, ptr PETSC_F90_2PTR_PARAM(ptrd));
+ *ierr = DMPlexGetConeSize(*dm, *p, &n);if (*ierr) return;
+ *ierr = DMPlexGetCone(*dm, *p, &v);if (*ierr) return;
+ *ierr = F90Array1dCreate((void*) v, PETSC_INT, 1, n, ptr PETSC_F90_2PTR_PARAM(ptrd));
}
-PETSC_EXTERN void PETSC_STDCALL dmplexrestorecone_(DM *dm, PetscInt *p, F90Array1d *ptr, int *__ierr PETSC_F90_2PTR_PROTO(ptrd))
+PETSC_EXTERN void PETSC_STDCALL dmplexrestorecone_(DM *dm, PetscInt *p, F90Array1d *ptr, int *ierr PETSC_F90_2PTR_PROTO(ptrd))
{
- *__ierr = F90Array1dDestroy(ptr, PETSC_INT PETSC_F90_2PTR_PARAM(ptrd));if (*__ierr) return;
+ *ierr = F90Array1dDestroy(ptr, PETSC_INT PETSC_F90_2PTR_PARAM(ptrd));if (*ierr) return;
}
-PETSC_EXTERN void PETSC_STDCALL dmplexgetconeorientation_(DM *dm, PetscInt *p, F90Array1d *ptr, int *__ierr PETSC_F90_2PTR_PROTO(ptrd))
+PETSC_EXTERN void PETSC_STDCALL dmplexgetconeorientation_(DM *dm, PetscInt *p, F90Array1d *ptr, int *ierr PETSC_F90_2PTR_PROTO(ptrd))
{
const PetscInt *v;
PetscInt n;
- *__ierr = DMPlexGetConeSize(*dm, *p, &n);if (*__ierr) return;
- *__ierr = DMPlexGetConeOrientation(*dm, *p, &v);if (*__ierr) return;
- *__ierr = F90Array1dCreate((void*) v, PETSC_INT, 1, n, ptr PETSC_F90_2PTR_PARAM(ptrd));
+ *ierr = DMPlexGetConeSize(*dm, *p, &n);if (*ierr) return;
+ *ierr = DMPlexGetConeOrientation(*dm, *p, &v);if (*ierr) return;
+ *ierr = F90Array1dCreate((void*) v, PETSC_INT, 1, n, ptr PETSC_F90_2PTR_PARAM(ptrd));
}
-PETSC_EXTERN void PETSC_STDCALL dmplexrestoreconeorientation_(DM *dm, PetscInt *p, F90Array1d *ptr, int *__ierr PETSC_F90_2PTR_PROTO(ptrd))
+PETSC_EXTERN void PETSC_STDCALL dmplexrestoreconeorientation_(DM *dm, PetscInt *p, F90Array1d *ptr, int *ierr PETSC_F90_2PTR_PROTO(ptrd))
{
- *__ierr = F90Array1dDestroy(ptr, PETSC_INT PETSC_F90_2PTR_PARAM(ptrd));if (*__ierr) return;
+ *ierr = F90Array1dDestroy(ptr, PETSC_INT PETSC_F90_2PTR_PARAM(ptrd));if (*ierr) return;
}
-PETSC_EXTERN void PETSC_STDCALL dmplexgetsupport_(DM *dm, PetscInt *p, F90Array1d *ptr, int *__ierr PETSC_F90_2PTR_PROTO(ptrd))
+PETSC_EXTERN void PETSC_STDCALL dmplexgetsupport_(DM *dm, PetscInt *p, F90Array1d *ptr, int *ierr PETSC_F90_2PTR_PROTO(ptrd))
{
const PetscInt *v;
PetscInt n;
- *__ierr = DMPlexGetSupportSize(*dm, *p, &n);if (*__ierr) return;
- *__ierr = DMPlexGetSupport(*dm, *p, &v);if (*__ierr) return;
- *__ierr = F90Array1dCreate((void*) v, PETSC_INT, 1, n, ptr PETSC_F90_2PTR_PARAM(ptrd));
+ *ierr = DMPlexGetSupportSize(*dm, *p, &n);if (*ierr) return;
+ *ierr = DMPlexGetSupport(*dm, *p, &v);if (*ierr) return;
+ *ierr = F90Array1dCreate((void*) v, PETSC_INT, 1, n, ptr PETSC_F90_2PTR_PARAM(ptrd));
}
-PETSC_EXTERN void PETSC_STDCALL dmplexrestoresupport_(DM *dm, PetscInt *p, F90Array1d *ptr, int *__ierr PETSC_F90_2PTR_PROTO(ptrd))
+PETSC_EXTERN void PETSC_STDCALL dmplexrestoresupport_(DM *dm, PetscInt *p, F90Array1d *ptr, int *ierr PETSC_F90_2PTR_PROTO(ptrd))
{
- *__ierr = F90Array1dDestroy(ptr, PETSC_INT PETSC_F90_2PTR_PARAM(ptrd));if (*__ierr) return;
+ *ierr = F90Array1dDestroy(ptr, PETSC_INT PETSC_F90_2PTR_PARAM(ptrd));if (*ierr) return;
}
-PETSC_EXTERN void PETSC_STDCALL dmplexgettransitiveclosure_(DM *dm, PetscInt *p, PetscBool *useCone, F90Array1d *ptr, int *__ierr PETSC_F90_2PTR_PROTO(ptrd))
+PETSC_EXTERN void PETSC_STDCALL dmplexgettransitiveclosure_(DM *dm, PetscInt *p, PetscBool *useCone, F90Array1d *ptr, int *ierr PETSC_F90_2PTR_PROTO(ptrd))
{
PetscInt *v = NULL;
PetscInt n;
- *__ierr = DMPlexGetTransitiveClosure(*dm, *p, *useCone, &n, &v);if (*__ierr) return;
- *__ierr = F90Array1dCreate((void*) v, PETSC_INT, 1, n*2, ptr PETSC_F90_2PTR_PARAM(ptrd));
+ *ierr = DMPlexGetTransitiveClosure(*dm, *p, *useCone, &n, &v);if (*ierr) return;
+ *ierr = F90Array1dCreate((void*) v, PETSC_INT, 1, n*2, ptr PETSC_F90_2PTR_PARAM(ptrd));
}
-PETSC_EXTERN void PETSC_STDCALL dmplexrestoretransitiveclosure_(DM *dm, PetscInt *p, PetscBool *useCone, F90Array1d *ptr, int *__ierr PETSC_F90_2PTR_PROTO(ptrd))
+PETSC_EXTERN void PETSC_STDCALL dmplexrestoretransitiveclosure_(DM *dm, PetscInt *p, PetscBool *useCone, F90Array1d *ptr, int *ierr PETSC_F90_2PTR_PROTO(ptrd))
{
PetscInt *array;
- *__ierr = F90Array1dAccess(ptr, PETSC_INT, (void**) &array PETSC_F90_2PTR_PARAM(ptrd));if (*__ierr) return;
- *__ierr = DMPlexRestoreTransitiveClosure(*dm, *p, *useCone, NULL, &array);if (*__ierr) return;
- *__ierr = F90Array1dDestroy(ptr, PETSC_INT PETSC_F90_2PTR_PARAM(ptrd));if (*__ierr) return;
+ *ierr = F90Array1dAccess(ptr, PETSC_INT, (void**) &array PETSC_F90_2PTR_PARAM(ptrd));if (*ierr) return;
+ *ierr = DMPlexRestoreTransitiveClosure(*dm, *p, *useCone, NULL, &array);if (*ierr) return;
+ *ierr = F90Array1dDestroy(ptr, PETSC_INT PETSC_F90_2PTR_PARAM(ptrd));if (*ierr) return;
}
-PETSC_EXTERN void PETSC_STDCALL dmplexvecgetclosure_(DM *dm, PetscSection *section, Vec *x, PetscInt *point, F90Array1d *ptr, int *__ierr PETSC_F90_2PTR_PROTO(ptrd))
+PETSC_EXTERN void PETSC_STDCALL dmplexvecgetclosure_(DM *dm, PetscSection *section, Vec *x, PetscInt *point, F90Array1d *ptr, int *ierr PETSC_F90_2PTR_PROTO(ptrd))
{
PetscScalar *v = NULL;
PetscInt n;
- *__ierr = DMPlexVecGetClosure(*dm, *section, *x, *point, &n, &v);if (*__ierr) return;
- *__ierr = F90Array1dCreate((void*) v, PETSC_SCALAR, 1, n, ptr PETSC_F90_2PTR_PARAM(ptrd));
+ CHKFORTRANNULLOBJECT(section);
+ *ierr = DMPlexVecGetClosure(*dm, *section, *x, *point, &n, &v);if (*ierr) return;
+ *ierr = F90Array1dCreate((void*) v, PETSC_SCALAR, 1, n, ptr PETSC_F90_2PTR_PARAM(ptrd));
}
-PETSC_EXTERN void PETSC_STDCALL dmplexvecrestoreclosure_(DM *dm, PetscSection *section, Vec *v, PetscInt *point, F90Array1d *ptr, int *__ierr PETSC_F90_2PTR_PROTO(ptrd))
+PETSC_EXTERN void PETSC_STDCALL dmplexvecrestoreclosure_(DM *dm, PetscSection *section, Vec *v, PetscInt *point, F90Array1d *ptr, int *ierr PETSC_F90_2PTR_PROTO(ptrd))
{
PetscScalar *array;
- *__ierr = F90Array1dAccess(ptr, PETSC_SCALAR, (void **) &array PETSC_F90_2PTR_PARAM(ptrd));if (*__ierr) return;
- *__ierr = DMPlexVecRestoreClosure(*dm, *section, *v, *point, NULL, &array);if (*__ierr) return;
- *__ierr = F90Array1dDestroy(ptr, PETSC_SCALAR PETSC_F90_2PTR_PARAM(ptrd));if (*__ierr) return;
+ CHKFORTRANNULLOBJECT(section);
+ *ierr = F90Array1dAccess(ptr, PETSC_SCALAR, (void **) &array PETSC_F90_2PTR_PARAM(ptrd));if (*ierr) return;
+ *ierr = DMPlexVecRestoreClosure(*dm, *section, *v, *point, NULL, &array);if (*ierr) return;
+ *ierr = F90Array1dDestroy(ptr, PETSC_SCALAR PETSC_F90_2PTR_PARAM(ptrd));if (*ierr) return;
}
-PETSC_EXTERN void PETSC_STDCALL dmplexvecsetclosure_(DM *dm, PetscSection *section, Vec *v, PetscInt *point, F90Array1d *ptr, InsertMode *mode, int *__ierr PETSC_F90_2PTR_PROTO(ptrd))
+PETSC_EXTERN void PETSC_STDCALL dmplexvecsetclosure_(DM *dm, PetscSection *section, Vec *v, PetscInt *point, F90Array1d *ptr, InsertMode *mode, int *ierr PETSC_F90_2PTR_PROTO(ptrd))
{
PetscScalar *array;
- *__ierr = F90Array1dAccess(ptr, PETSC_SCALAR, (void**) &array PETSC_F90_2PTR_PARAM(ptrd));if (*__ierr) return;
- *__ierr = DMPlexVecSetClosure(*dm, *section, *v, *point, array, *mode);
+ CHKFORTRANNULLOBJECT(section);
+ *ierr = F90Array1dAccess(ptr, PETSC_SCALAR, (void**) &array PETSC_F90_2PTR_PARAM(ptrd));if (*ierr) return;
+ *ierr = DMPlexVecSetClosure(*dm, *section, *v, *point, array, *mode);
}
-PETSC_EXTERN void PETSC_STDCALL dmplexmatsetclosure_(DM *dm, PetscSection *section, PetscSection *globalSection, Mat *A, PetscInt *point, F90Array1d *ptr, InsertMode *mode, int *__ierr PETSC_F90_2PTR_PROTO(ptrd))
+PETSC_EXTERN void PETSC_STDCALL dmplexmatsetclosure_(DM *dm, PetscSection *section, PetscSection *globalSection, Mat *A, PetscInt *point, F90Array1d *ptr, InsertMode *mode, int *ierr PETSC_F90_2PTR_PROTO(ptrd))
{
PetscScalar *array;
- *__ierr = F90Array1dAccess(ptr, PETSC_SCALAR, (void**) &array PETSC_F90_2PTR_PARAM(ptrd));if (*__ierr) return;
- *__ierr = DMPlexMatSetClosure(*dm, *section, *globalSection, *A, *point, array, *mode);
+ CHKFORTRANNULLOBJECT(section);
+ CHKFORTRANNULLOBJECT(globalSection);
+ *ierr = F90Array1dAccess(ptr, PETSC_SCALAR, (void**) &array PETSC_F90_2PTR_PARAM(ptrd));if (*ierr) return;
+ *ierr = DMPlexMatSetClosure(*dm, *section, *globalSection, *A, *point, array, *mode);
}
-PETSC_EXTERN void PETSC_STDCALL dmplexgetjoin_(DM *dm, PetscInt *numPoints, F90Array1d *pptr, F90Array1d *cptr, int *__ierr PETSC_F90_2PTR_PROTO(pptrd) PETSC_F90_2PTR_PROTO(cptrd))
+PETSC_EXTERN void PETSC_STDCALL dmplexgetjoin_(DM *dm, PetscInt *numPoints, F90Array1d *pptr, F90Array1d *cptr, int *ierr PETSC_F90_2PTR_PROTO(pptrd) PETSC_F90_2PTR_PROTO(cptrd))
{
PetscInt *points;
const PetscInt *coveredPoints;
PetscInt numCoveredPoints;
- *__ierr = F90Array1dAccess(pptr, PETSC_INT, (void**) &points PETSC_F90_2PTR_PARAM(pptrd));if (*__ierr) return;
- *__ierr = DMPlexGetJoin(*dm, *numPoints, points, &numCoveredPoints, &coveredPoints);if (*__ierr) return;
- *__ierr = F90Array1dCreate((void*) coveredPoints, PETSC_INT, 1, numCoveredPoints, cptr PETSC_F90_2PTR_PARAM(cptrd));
+ *ierr = F90Array1dAccess(pptr, PETSC_INT, (void**) &points PETSC_F90_2PTR_PARAM(pptrd));if (*ierr) return;
+ *ierr = DMPlexGetJoin(*dm, *numPoints, points, &numCoveredPoints, &coveredPoints);if (*ierr) return;
+ *ierr = F90Array1dCreate((void*) coveredPoints, PETSC_INT, 1, numCoveredPoints, cptr PETSC_F90_2PTR_PARAM(cptrd));
}
-PETSC_EXTERN void PETSC_STDCALL dmplexgetfulljoin_(DM *dm, PetscInt *numPoints, F90Array1d *pptr, F90Array1d *cptr, int *__ierr PETSC_F90_2PTR_PROTO(pptrd) PETSC_F90_2PTR_PROTO(cptrd))
+PETSC_EXTERN void PETSC_STDCALL dmplexgetfulljoin_(DM *dm, PetscInt *numPoints, F90Array1d *pptr, F90Array1d *cptr, int *ierr PETSC_F90_2PTR_PROTO(pptrd) PETSC_F90_2PTR_PROTO(cptrd))
{
PetscInt *points;
const PetscInt *coveredPoints;
PetscInt numCoveredPoints;
- *__ierr = F90Array1dAccess(pptr, PETSC_INT, (void**) &points PETSC_F90_2PTR_PARAM(pptrd));if (*__ierr) return;
- *__ierr = DMPlexGetFullJoin(*dm, *numPoints, points, &numCoveredPoints, &coveredPoints);if (*__ierr) return;
- *__ierr = F90Array1dCreate((void*) coveredPoints, PETSC_INT, 1, numCoveredPoints, cptr PETSC_F90_2PTR_PARAM(cptrd));
+ *ierr = F90Array1dAccess(pptr, PETSC_INT, (void**) &points PETSC_F90_2PTR_PARAM(pptrd));if (*ierr) return;
+ *ierr = DMPlexGetFullJoin(*dm, *numPoints, points, &numCoveredPoints, &coveredPoints);if (*ierr) return;
+ *ierr = F90Array1dCreate((void*) coveredPoints, PETSC_INT, 1, numCoveredPoints, cptr PETSC_F90_2PTR_PARAM(cptrd));
}
-PETSC_EXTERN void PETSC_STDCALL dmplexrestorejoin_(DM *dm, PetscInt *numPoints, F90Array1d *pptr, F90Array1d *cptr, int *__ierr PETSC_F90_2PTR_PROTO(pptrd) PETSC_F90_2PTR_PROTO(cptrd))
+PETSC_EXTERN void PETSC_STDCALL dmplexrestorejoin_(DM *dm, PetscInt *numPoints, F90Array1d *pptr, F90Array1d *cptr, int *ierr PETSC_F90_2PTR_PROTO(pptrd) PETSC_F90_2PTR_PROTO(cptrd))
{
PetscInt *coveredPoints;
- *__ierr = F90Array1dAccess(cptr, PETSC_INT, (void**) &coveredPoints PETSC_F90_2PTR_PARAM(cptrd));if (*__ierr) return;
- *__ierr = DMPlexRestoreJoin(*dm, 0, NULL, NULL, (const PetscInt**) &coveredPoints);if (*__ierr) return;
- *__ierr = F90Array1dDestroy(cptr, PETSC_INT PETSC_F90_2PTR_PARAM(cptrd));if (*__ierr) return;
+ *ierr = F90Array1dAccess(cptr, PETSC_INT, (void**) &coveredPoints PETSC_F90_2PTR_PARAM(cptrd));if (*ierr) return;
+ *ierr = DMPlexRestoreJoin(*dm, 0, NULL, NULL, (const PetscInt**) &coveredPoints);if (*ierr) return;
+ *ierr = F90Array1dDestroy(cptr, PETSC_INT PETSC_F90_2PTR_PARAM(cptrd));if (*ierr) return;
}
-PETSC_EXTERN void PETSC_STDCALL dmplexgetmeet_(DM *dm, PetscInt *numPoints, F90Array1d *pptr, F90Array1d *cptr, int *__ierr PETSC_F90_2PTR_PROTO(pptrd) PETSC_F90_2PTR_PROTO(cptrd))
+PETSC_EXTERN void PETSC_STDCALL dmplexgetmeet_(DM *dm, PetscInt *numPoints, F90Array1d *pptr, F90Array1d *cptr, int *ierr PETSC_F90_2PTR_PROTO(pptrd) PETSC_F90_2PTR_PROTO(cptrd))
{
PetscInt *points;
const PetscInt *coveredPoints;
PetscInt numCoveredPoints;
- *__ierr = F90Array1dAccess(pptr, PETSC_INT, (void**) &points PETSC_F90_2PTR_PARAM(pptrd));if (*__ierr) return;
- *__ierr = DMPlexGetMeet(*dm, *numPoints, points, &numCoveredPoints, &coveredPoints);if (*__ierr) return;
- *__ierr = F90Array1dCreate((void*) coveredPoints, PETSC_INT, 1, numCoveredPoints, cptr PETSC_F90_2PTR_PARAM(cptrd));
+ *ierr = F90Array1dAccess(pptr, PETSC_INT, (void**) &points PETSC_F90_2PTR_PARAM(pptrd));if (*ierr) return;
+ *ierr = DMPlexGetMeet(*dm, *numPoints, points, &numCoveredPoints, &coveredPoints);if (*ierr) return;
+ *ierr = F90Array1dCreate((void*) coveredPoints, PETSC_INT, 1, numCoveredPoints, cptr PETSC_F90_2PTR_PARAM(cptrd));
}
-PETSC_EXTERN void PETSC_STDCALL dmplexgetfullmeet_(DM *dm, PetscInt *numPoints, F90Array1d *pptr, F90Array1d *cptr, int *__ierr PETSC_F90_2PTR_PROTO(pptrd) PETSC_F90_2PTR_PROTO(cptrd))
+PETSC_EXTERN void PETSC_STDCALL dmplexgetfullmeet_(DM *dm, PetscInt *numPoints, F90Array1d *pptr, F90Array1d *cptr, int *ierr PETSC_F90_2PTR_PROTO(pptrd) PETSC_F90_2PTR_PROTO(cptrd))
{
PetscInt *points;
const PetscInt *coveredPoints;
PetscInt numCoveredPoints;
- *__ierr = F90Array1dAccess(pptr, PETSC_INT, (void**) &points PETSC_F90_2PTR_PARAM(pptrd));if (*__ierr) return;
- *__ierr = DMPlexGetFullMeet(*dm, *numPoints, points, &numCoveredPoints, &coveredPoints);if (*__ierr) return;
- *__ierr = F90Array1dCreate((void*) coveredPoints, PETSC_INT, 1, numCoveredPoints, cptr PETSC_F90_2PTR_PARAM(cptrd));
+ *ierr = F90Array1dAccess(pptr, PETSC_INT, (void**) &points PETSC_F90_2PTR_PARAM(pptrd));if (*ierr) return;
+ *ierr = DMPlexGetFullMeet(*dm, *numPoints, points, &numCoveredPoints, &coveredPoints);if (*ierr) return;
+ *ierr = F90Array1dCreate((void*) coveredPoints, PETSC_INT, 1, numCoveredPoints, cptr PETSC_F90_2PTR_PARAM(cptrd));
}
-PETSC_EXTERN void PETSC_STDCALL dmplexrestoremeet_(DM *dm, PetscInt *numPoints, F90Array1d *pptr, F90Array1d *cptr, int *__ierr PETSC_F90_2PTR_PROTO(pptrd) PETSC_F90_2PTR_PROTO(cptrd))
+PETSC_EXTERN void PETSC_STDCALL dmplexrestoremeet_(DM *dm, PetscInt *numPoints, F90Array1d *pptr, F90Array1d *cptr, int *ierr PETSC_F90_2PTR_PROTO(pptrd) PETSC_F90_2PTR_PROTO(cptrd))
{
PetscInt *coveredPoints;
- *__ierr = F90Array1dAccess(cptr, PETSC_INT, (void**) &coveredPoints PETSC_F90_2PTR_PARAM(cptrd));if (*__ierr) return;
- *__ierr = DMPlexRestoreMeet(*dm, 0, NULL, NULL, (const PetscInt**) &coveredPoints);if (*__ierr) return;
- *__ierr = F90Array1dDestroy(cptr, PETSC_INT PETSC_F90_2PTR_PARAM(cptrd));if (*__ierr) return;
+ *ierr = F90Array1dAccess(cptr, PETSC_INT, (void**) &coveredPoints PETSC_F90_2PTR_PARAM(cptrd));if (*ierr) return;
+ *ierr = DMPlexRestoreMeet(*dm, 0, NULL, NULL, (const PetscInt**) &coveredPoints);if (*ierr) return;
+ *ierr = F90Array1dDestroy(cptr, PETSC_INT PETSC_F90_2PTR_PARAM(cptrd));if (*ierr) return;
}
-PETSC_EXTERN void PETSC_STDCALL dmplexcreatesection_(DM *dm, PetscInt *dim, PetscInt *numFields, F90Array1d *ptrC, F90Array1d *ptrD, PetscInt *numBC, F90Array1d *ptrF, F90Array1d *ptrP, PetscSection *section, int *__ierr PETSC_F90_2PTR_PROTO(ptrCd) PETSC_F90_2PTR_PROTO(ptrDd) PETSC_F90_2PTR_PROTO(ptrFd) PETSC_F90_2PTR_PROTO(ptrPd))
+PETSC_EXTERN void PETSC_STDCALL dmplexcreatesection_(DM *dm, PetscInt *dim, PetscInt *numFields, F90Array1d *ptrC, F90Array1d *ptrD, PetscInt *numBC, F90Array1d *ptrF, F90Array1d *ptrP, PetscSection *section, int *ierr PETSC_F90_2PTR_PROTO(ptrCd) PETSC_F90_2PTR_PROTO(ptrDd) PETSC_F90_2PTR_PROTO(ptrFd) PETSC_F90_2PTR_PROTO(ptrPd))
{
PetscInt *numComp;
PetscInt *numDof;
PetscInt *bcField;
IS *bcPoints;
- *__ierr = F90Array1dAccess(ptrC, PETSC_INT, (void**) &numComp PETSC_F90_2PTR_PARAM(ptrCd));if (*__ierr) return;
- *__ierr = F90Array1dAccess(ptrD, PETSC_INT, (void**) &numDof PETSC_F90_2PTR_PARAM(ptrDd));if (*__ierr) return;
- *__ierr = F90Array1dAccess(ptrF, PETSC_INT, (void**) &bcField PETSC_F90_2PTR_PARAM(ptrFd));if (*__ierr) return;
- *__ierr = F90Array1dAccess(ptrP, PETSC_FORTRANADDR, (void**) &bcPoints PETSC_F90_2PTR_PARAM(ptrPd));if (*__ierr) return;
- *__ierr = DMPlexCreateSection(*dm, *dim, *numFields, numComp, numDof, *numBC, bcField, bcPoints, section);
+ *ierr = F90Array1dAccess(ptrC, PETSC_INT, (void**) &numComp PETSC_F90_2PTR_PARAM(ptrCd));if (*ierr) return;
+ *ierr = F90Array1dAccess(ptrD, PETSC_INT, (void**) &numDof PETSC_F90_2PTR_PARAM(ptrDd));if (*ierr) return;
+ *ierr = F90Array1dAccess(ptrF, PETSC_INT, (void**) &bcField PETSC_F90_2PTR_PARAM(ptrFd));if (*ierr) return;
+ *ierr = F90Array1dAccess(ptrP, PETSC_FORTRANADDR, (void**) &bcPoints PETSC_F90_2PTR_PARAM(ptrPd));if (*ierr) return;
+ *ierr = DMPlexCreateSection(*dm, *dim, *numFields, numComp, numDof, *numBC, bcField, bcPoints, section);
}
-PETSC_EXTERN void PETSC_STDCALL dmplexcomputecellgeometry_(DM *dm, PetscInt *cell, F90Array1d *ptrV, F90Array1d *ptrJ, F90Array1d *ptrIJ, PetscReal *detJ, int *__ierr PETSC_F90_2PTR_PROTO(ptrVd) PETSC_F90_2PTR_PROTO(ptrJd) PETSC_F90_2PTR_PROTO(ptrIJd))
+PETSC_EXTERN void PETSC_STDCALL dmplexcomputecellgeometry_(DM *dm, PetscInt *cell, F90Array1d *ptrV, F90Array1d *ptrJ, F90Array1d *ptrIJ, PetscReal *detJ, int *ierr PETSC_F90_2PTR_PROTO(ptrVd) PETSC_F90_2PTR_PROTO(ptrJd) PETSC_F90_2PTR_PROTO(ptrIJd))
{
PetscReal *v0;
PetscReal *J;
PetscReal *invJ;
- *__ierr = F90Array1dAccess(ptrV, PETSC_REAL, (void**) &v0 PETSC_F90_2PTR_PARAM(ptrVd));if (*__ierr) return;
- *__ierr = F90Array1dAccess(ptrJ, PETSC_REAL, (void**) &J PETSC_F90_2PTR_PARAM(ptrJd));if (*__ierr) return;
- *__ierr = F90Array1dAccess(ptrIJ, PETSC_REAL, (void**) &invJ PETSC_F90_2PTR_PARAM(ptrIJd));if (*__ierr) return;
- *__ierr = DMPlexComputeCellGeometry(*dm, *cell, v0, J, invJ, detJ);
+ *ierr = F90Array1dAccess(ptrV, PETSC_REAL, (void**) &v0 PETSC_F90_2PTR_PARAM(ptrVd));if (*ierr) return;
+ *ierr = F90Array1dAccess(ptrJ, PETSC_REAL, (void**) &J PETSC_F90_2PTR_PARAM(ptrJd));if (*ierr) return;
+ *ierr = F90Array1dAccess(ptrIJ, PETSC_REAL, (void**) &invJ PETSC_F90_2PTR_PARAM(ptrIJd));if (*ierr) return;
+ *ierr = DMPlexComputeCellGeometry(*dm, *cell, v0, J, invJ, detJ);
}
View
6 src/dm/impls/plex/plex.c
@@ -5799,8 +5799,8 @@ PetscErrorCode indicesPointFields_private(PetscSection section, PetscInt point,
Input Parameters:
+ dm - The DM
-. section - The section describing the layout in v
-. globalSection - The section describing the layout in v
+. section - The section describing the layout in v, or NULL to use the default section
+. globalSection - The section describing the layout in v, or NULL to use the default global section
. A - The matrix
. point - The sieve point in the DM
. values - The array of values
@@ -5824,7 +5824,9 @@ PetscErrorCode DMPlexMatSetClosure(DM dm, PetscSection section, PetscSection glo
PetscFunctionBegin;
PetscValidHeaderSpecific(dm, DM_CLASSID, 1);
+ if (!section) {ierr = DMGetDefaultSection(dm, &section);CHKERRQ(ierr);}
PetscValidHeaderSpecific(section, PETSC_SECTION_CLASSID, 2);
+ if (!globalSection) {ierr = DMGetDefaultGlobalSection(dm, &globalSection);CHKERRQ(ierr);}
PetscValidHeaderSpecific(globalSection, PETSC_SECTION_CLASSID, 3);
PetscValidHeaderSpecific(A, MAT_CLASSID, 4);
ierr = PetscSectionGetNumFields(section, &numFields);CHKERRQ(ierr);
View
59 src/docs/tex/petscapp.bib
@@ -3,6 +3,27 @@
% LiteralHTML:
% LiteralHTML: <a name="nano"><H3><center>Nano-simulations</center></H3>
% LiteralHTML:
+@INPROCEEDINGS{asc2013,
+ author = "S. Abhyankar and B. F. Smith and E. Constantinescu",
+ title = "Evaluation of overlapping restricted additive Schwarz preconditioning for parallel solution of very large power flow problems",
+ booktitle = "HiPCNA-PG’13",
+ year = 2013
+}
+@INPROCEEDINGS{as2013,
+ author = "S. Abhyankar and B. F. Smith",
+ title = "{PETSc:} An Advanced Math and Computing Framework for Rapidly Developing Parallel Smart Grid Applications",
+ booktitle = "Proceedings of the IEEE PES General Meeting",
+ year = 2013
+}
+@techreport{tspaper,
+ title = {{PETSc/TS}: A Modern Scalable {DAE/ODE} Solver Library},
+ author = {Shrirang Abhyankar and Jed Brown and Emil Constantinescu and Debojyoti Ghosh and Barry F. Smith},
+ type = {Preprint},
+ number = {ANL/MCS-P5061-0114},
+ institution = {ANL},
+ month = {January},
+ year = {2014}
+}
@TechReport{bb2008,
author = "Tomasz Blachowicz and Bartlomiej Baron",
title = "A graphical extension for the Windows version of the Parallel Finite Element Micromagnetics Package (MagParExt)",
@@ -1358,8 +1379,40 @@ @article{kyrkesmith2013stress
journal={Journal of Glaciology},
volume={59},
number={215},
- pages={449},
- year={2013}
+ pages={449--466},
+ year={2013},
+ doi = {10.3189/2013JoG12J140}
+}
+@Article{takei2013anisotropy1,
+ author = {Takei Y. and R.F. Katz},
+ title = {{Consequences of viscous anisotropy in a deforming,
+ two-phase aggregate: 1. Governing equations and
+ linearised analysis}},
+ journal = {J.\ Fluid\ Mech.},
+ year = 2013,
+ volume = 734,
+ pages = {424-455},
+ doi = {10.1017/jfm.2013.482}
+}
+@Article{katz2013anisotropy2,
+ author = {Katz R.F. and Y. Takei},
+ title = {{Consequences of viscous anisotropy in a deforming,
+ two-phase aggregate: 2. Numerical solutions of the
+ full equations}},
+ journal = {J.\ Fluid\ Mech.},
+ year = 2013,
+ volume = 734,
+ pages = {456-485},
+ doi = {10.1017/jfm.2013.483}
+}
+@Article{kyrke-smith2014subglacial,
+ author = {Kyrke-Smith, T.M. and R.F. Katz and A.C. Fowler},
+ title = {Subglacial hydrology and the formation of ice streams},
+ journal = {Proc.\ Roy.\ Soc.\ A},
+ year = {2014},
+ volume = {470},
+ number = {2161},
+ doi = {10.1098/rspa.2013.0494}
}
@article{bueler2009shallow,
title={{Shallow shelf approximation as a ``sliding law'' in a thermomechanically coupled ice sheet model}},
@@ -4934,7 +4987,7 @@ @article{mszm2014
author = "Lois Curfman McInnes and Barry Smith and Hong Zhang and Richard Tran Mills",
number = {40},
pages = {17--31},
- year = {2014}
+ year = {2014},
journal = "Parallel Computing",
url = "http://dx.doi.org/10.1016/j.parco.2013.10.001"
}
View
10 src/ksp/pc/impls/fieldsplit/fieldsplit.c
@@ -194,11 +194,13 @@ static PetscErrorCode PCView_FieldSplit_Schur(PC pc,PetscViewer viewer)
}
ilink = ilink->next;
}
- ierr = PetscViewerASCIIPrintf(viewer,"KSP solver for A00 block \n");CHKERRQ(ierr);
+ ierr = PetscViewerASCIIPrintf(viewer,"KSP solver for A00 block\n");CHKERRQ(ierr);
ierr = PetscViewerASCIIPushTab(viewer);CHKERRQ(ierr);
- ierr = KSPView(jac->head->ksp,viewer);CHKERRQ(ierr);
+ if (jac->head) {
+ ierr = KSPView(jac->head->ksp,viewer);CHKERRQ(ierr);
+ } else {ierr = PetscViewerASCIIPrintf(viewer," not yet available\n");CHKERRQ(ierr);}
ierr = PetscViewerASCIIPopTab(viewer);CHKERRQ(ierr);
- if (jac->kspupper != jac->head->ksp) {
+ if (jac->head && jac->kspupper != jac->head->ksp) {
ierr = PetscViewerASCIIPrintf(viewer,"KSP solver for upper A00 in upper triangular factor \n");CHKERRQ(ierr);
ierr = PetscViewerASCIIPushTab(viewer);CHKERRQ(ierr);
if (jac->kspupper) {ierr = KSPView(jac->kspupper,viewer);CHKERRQ(ierr);}
@@ -214,7 +216,7 @@ static PetscErrorCode PCView_FieldSplit_Schur(PC pc,PetscViewer viewer)
}
ierr = PetscViewerASCIIPopTab(viewer);CHKERRQ(ierr);
ierr = PetscViewerASCIIPopTab(viewer);CHKERRQ(ierr);
- } else if (isdraw) {
+ } else if (isdraw && jac->head) {
PetscDraw draw;
PetscReal x,y,w,wd,h;
PetscInt cnt = 2;
View
2  src/mat/impls/aij/mpi/mmaij.c
@@ -61,6 +61,7 @@ PetscErrorCode MatSetUpMultiply_MPIAIJ(Mat mat)
}
}
aij->B->cmap->n = aij->B->cmap->N = ec;
+ aij->B->cmap->bs = 1;
ierr = PetscLayoutSetUp((aij->B->cmap));CHKERRQ(ierr);
ierr = PetscTableDestroy(&gid1_lid1);CHKERRQ(ierr);
@@ -94,6 +95,7 @@ PetscErrorCode MatSetUpMultiply_MPIAIJ(Mat mat)
}
}
aij->B->cmap->n = aij->B->cmap->N = ec;
+ aij->B->cmap->bs = 1;
ierr = PetscLayoutSetUp((aij->B->cmap));CHKERRQ(ierr);
ierr = PetscFree(indices);CHKERRQ(ierr);
View
13 src/mat/impls/aij/seq/seqcusp/aijcusp.cu
@@ -130,7 +130,6 @@ PetscErrorCode MatCUSPCopyToGPU(Mat A)
delete (CUSPMATRIXDIA *) cuspstruct->mat;
else
delete (CUSPMATRIX *) cuspstruct->mat;
- if (cuspstruct->tempvec) delete cuspstruct->tempvec;
} catch(char *ex) {
SETERRQ1(PETSC_COMM_SELF,PETSC_ERR_LIB,"CUSP error: %s", ex);
@@ -184,6 +183,7 @@ PetscErrorCode MatCUSPCopyToGPU(Mat A)
}
/* assign the compressed row indices */
+ if (cuspstruct->indices) delete (CUSPINTARRAYGPU*)cuspstruct->indices;
cuspstruct->indices = new CUSPINTARRAYGPU;
cuspstruct->indices->assign(ridx,ridx+m);
@@ -192,6 +192,7 @@ PetscErrorCode MatCUSPCopyToGPU(Mat A)
ierr = PetscFree(ii);CHKERRQ(ierr);
ierr = PetscFree(ridx);CHKERRQ(ierr);
}
+ if (cuspstruct->tempvec) delete (CUSPARRAY*)cuspstruct->tempvec;
cuspstruct->tempvec = new CUSPARRAY;
cuspstruct->tempvec->resize(m);
} catch(char *ex) {
@@ -389,8 +390,11 @@ PetscErrorCode MatMultAdd_SeqAIJCUSP(Mat A,Vec xx,Vec yy,Vec zz)
/* use compressed row format */
CUSPMATRIX *mat = (CUSPMATRIX*)cuspstruct->mat;
cusp::multiply(*mat,*xarray,*cuspstruct->tempvec);
- ierr = VecSet_SeqCUSP(yy,0.0);CHKERRQ(ierr);
- thrust::copy(cuspstruct->tempvec->begin(),cuspstruct->tempvec->end(),thrust::make_permutation_iterator(yarray->begin(),cuspstruct->indices->begin()));
+ thrust::for_each(thrust::make_zip_iterator(thrust::make_tuple(cuspstruct->tempvec->begin(),
+ thrust::make_permutation_iterator(zarray->begin(), cuspstruct->indices->begin()))),
+ thrust::make_zip_iterator(thrust::make_tuple(cuspstruct->tempvec->end(),
+ thrust::make_permutation_iterator(zarray->end(),cuspstruct->indices->end()))),
+ VecCUSPPlusEquals());
} else {
if (cuspstruct->format==MAT_CUSP_ELL) {
@@ -523,6 +527,9 @@ PetscErrorCode MatDestroy_SeqAIJCUSP(Mat A)
delete (CUSPMATRIXDIA*)(cuspcontainer->mat);
else
delete (CUSPMATRIX*)(cuspcontainer->mat);
+
+ if (cuspcontainer->indices) delete (CUSPINTARRAYGPU*)cuspcontainer->indices;
+ if (cuspcontainer->tempvec) delete (CUSPARRAY*)cuspcontainer->tempvec;
}
delete cuspcontainer;
A->valid_GPU_matrix = PETSC_CUSP_UNALLOCATED;
View
6 src/snes/examples/tutorials/ex7.c
@@ -139,14 +139,14 @@ int main(int argc,char **argv)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
ierr = DMDACreate2d(PETSC_COMM_WORLD, DMDA_BOUNDARY_NONE, DMDA_BOUNDARY_NONE,DMDA_STENCIL_BOX,-3,-3,PETSC_DECIDE,PETSC_DECIDE,3,1,NULL,NULL,&da);CHKERRQ(ierr);
ierr = DMDASetFieldName(da, 0, "ooblek");CHKERRQ(ierr);
- ierr = DMSetApplicationContext(da,&user);CHKERRQ(ierr);
+ ierr = DMSetApplicationContext(da,user);CHKERRQ(ierr);
ierr = SNESSetDM(snes, (DM) da);CHKERRQ(ierr);
/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Set the discretization functions
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */
- ierr = DMDASNESSetFunctionLocal(da,INSERT_VALUES,(PetscErrorCode (*)(DMDALocalInfo*,void*,void*,void*))FormFunctionLocal,&user);CHKERRQ(ierr);
- ierr = DMDASNESSetJacobianLocal(da,(PetscErrorCode (*)(DMDALocalInfo*,void*,Mat,Mat,MatStructure*,void*))FormJacobianLocal,&user);CHKERRQ(ierr);
+ ierr = DMDASNESSetFunctionLocal(da,INSERT_VALUES,(PetscErrorCode (*)(DMDALocalInfo*,void*,void*,void*))FormFunctionLocal,user);CHKERRQ(ierr);
+ ierr = DMDASNESSetJacobianLocal(da,(PetscErrorCode (*)(DMDALocalInfo*,void*,Mat,Mat,MatStructure*,void*))FormJacobianLocal,user);CHKERRQ(ierr);
ierr = SNESSetFromOptions(snes);CHKERRQ(ierr);
ierr = SNESSetComputeInitialGuess(snes, FormInitialGuess,NULL);CHKERRQ(ierr);
View
15 src/snes/linesearch/impls/bt/linesearchbt.c
@@ -174,7 +174,7 @@ static PetscErrorCode SNESLineSearchApply_BT(SNESLineSearch linesearch)
if (PetscIsInfOrNanReal(g)) {
ierr = SNESLineSearchSetSuccess(linesearch, PETSC_FALSE);CHKERRQ(ierr);
- ierr = PetscInfo(monitor,"Aborted due to Nan or Inf in function evaluation\n");CHKERRQ(ierr);
+ ierr = PetscInfo(snes,"Aborted due to Nan or Inf in function evaluation\n");CHKERRQ(ierr);
PetscFunctionReturn(0);
}
if (!objective) {
@@ -193,8 +193,13 @@ static PetscErrorCode SNESLineSearchApply_BT(SNESLineSearch linesearch)
} else {
/* Since the full step didn't work and the step is tiny, quit */
if (stol*xnorm > ynorm) {
+ ierr = SNESLineSearchSetNorms(linesearch,xnorm,fnorm,ynorm);CHKERRQ(ierr);
ierr = SNESLineSearchSetSuccess(linesearch, PETSC_FALSE);CHKERRQ(ierr);
- ierr = PetscInfo2(monitor,"Aborted due to ynorm < stol*xnorm (%14.12e < %14.12e) and inadequate full step.\n",(double)ynorm,(double)stol*xnorm);CHKERRQ(ierr);
+ if (monitor) {
+ ierr = PetscViewerASCIIAddTab(monitor,((PetscObject)linesearch)->tablevel);CHKERRQ(ierr);
+ ierr = PetscViewerASCIIPrintf(monitor," Line search: Aborted due to ynorm < stol*xnorm (%14.12e < %14.12e) and inadequate full step.\n",(double)ynorm,(double)stol*xnorm);CHKERRQ(ierr);
+ ierr = PetscViewerASCIISubtractTab(monitor,((PetscObject)linesearch)->tablevel);CHKERRQ(ierr);
+ }
PetscFunctionReturn(0);
}
/* Fit points with quadratic */
@@ -232,7 +237,7 @@ static PetscErrorCode SNESLineSearchApply_BT(SNESLineSearch linesearch)
}
if (PetscIsInfOrNanReal(g)) {
ierr = SNESLineSearchSetSuccess(linesearch, PETSC_FALSE);CHKERRQ(ierr);
- ierr = PetscInfo(monitor,"Aborted due to Nan or Inf in function evaluation\n");CHKERRQ(ierr);
+ ierr = PetscInfo(snes,"Aborted due to Nan or Inf in function evaluation\n");CHKERRQ(ierr);
PetscFunctionReturn(0);
}
if (monitor) {
@@ -322,7 +327,7 @@ static PetscErrorCode SNESLineSearchApply_BT(SNESLineSearch linesearch)
}
if (PetscIsInfOrNanReal(gnorm)) {
ierr = SNESLineSearchSetSuccess(linesearch, PETSC_FALSE);CHKERRQ(ierr);
- ierr = PetscInfo(monitor,"Aborted due to Nan or Inf in function evaluation\n");CHKERRQ(ierr);
+ ierr = PetscInfo(snes,"Aborted due to Nan or Inf in function evaluation\n");CHKERRQ(ierr);
PetscFunctionReturn(0);
}
if (.5*g < .5*f + lambda*alpha*initslope) { /* is reduction enough? */
@@ -391,7 +396,7 @@ static PetscErrorCode SNESLineSearchApply_BT(SNESLineSearch linesearch)
ierr = VecNorm(Y,NORM_2,&ynorm);CHKERRQ(ierr);
if (PetscIsInfOrNanReal(gnorm)) {
ierr = SNESLineSearchSetSuccess(linesearch, PETSC_FALSE);CHKERRQ(ierr);
- ierr = PetscInfo(monitor,"Aborted due to Nan or Inf in function evaluation\n");CHKERRQ(ierr);
+ ierr = PetscInfo(snes,"Aborted due to Nan or Inf in function evaluation\n");CHKERRQ(ierr);
PetscFunctionReturn(0);
}
}
View
4 src/vec/vec/interface/rvector.c
@@ -20,7 +20,11 @@ PETSC_EXTERN PetscErrorCode VecValidValues(Vec vec,PetscInt argnum,PetscBool beg
const PetscScalar *x;
PetscFunctionBegin;
+#if defined(PETSC_HAVE_CUSP)
+ if ((vec->petscnative || vec->ops->getarray) && vec->valid_GPU_array != PETSC_CUSP_GPU) {
+#else
if (vec->petscnative || vec->ops->getarray) {
+#endif
ierr = VecGetLocalSize(vec,&n);CHKERRQ(ierr);
ierr = VecGetArrayRead(vec,&x);CHKERRQ(ierr);
for (i=0; i<n; i++) {
Please sign in to comment.
Something went wrong with that request. Please try again.