252
линейных систем, включая параллельные и последовательные, пря-
мые и итерационные. Программы SNES предназначены для решения
нелинейных систем и используют верхние уровни SLES.
Все перечисленные ранее уровни используются для решения сис-
тем ДУЧП (PDE Solvers). Компонент TS (Time Stepping) обеспечива-
ет решение дифференциальных уравнений, возникающих при дискре-
тизации времязависимых PDEs.
Более полную информацию о возможностях можно получить в
“PETSc Users Manual” [30].
Поскольку PETSc использует MPI для всех межпроцессорных об-
менов, пользователь свободен в использовании процедур MPI в своем
приложении. Однако пользователь изолирован от многих деталей пе-
редачи сообщений внутри PETSc, поскольку они невидимы внутри
параллельных объектов, таких как вектора, матрицы и методы реше-
ния систем. Кроме того, PETSc обеспечивает средства, такие как
обобщенные векторные scatters/gathers и распределенные массивы,
чтобы помочь в управлении параллельными данными.
Большинство программ PETSc начинаются обращением:
PetscInitialize(int *argc, char ***argv, char *file, char *help);
которое инициализирует PETSc и MPI. Аргументы argc и argv являют-
ся аргументами командной строки и поставляются во всех C и C++
программах. Файл аргументов в качестве опции указывает на альтер-
нативное имя файла опций, который размещается по умолчанию в
пользовательском директории. Конечный аргумент help есть знаковая
строка, которая будет печататься, если программа выполняется с оп-
цией –help.
PetscInitialize автоматически вызывает MPI_Init, если он не был
инициализирован ранее. В определенных обстоятельствах, когда нуж-
но инициализировать MPI (или инициализация производится некото-
рой другой библиотекой) необходимо сначала вызвать
MPI_Init, за-
тем выполнить обращение к
PetscInitialize. По умолчанию
PetscInitialize добавляет к MPI_COMM_WORLD коммуникатор с
фиксированным именем
PETSC_COMM_WORLD.
В большинстве случаев пользователь может использовать комму-
никатор
PETSC_COMM_WORLD, чтобы указать все процессы в
данном приложении, а
PETSC_COMM_SELF указывает одиночный
процесс.
Пользователи, которые хотят использовать процедуры PETSc
только для подмножества процессоров внутри большой работы, или