/** * @file README_mod.txt * * @brief * * @copyright * Copyright (©) 2021 EPFL (Ecole Polytechnique Fédérale de Lausanne) * SPC (Swiss Plasma Center) * * SPClibs is free software: you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation, either version 3 of the License, or (at your option) * any later version. * * SPClibs is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program. If not, see . * * @author * (in alphabetical order) * @author Trach-Minh Tran */ 1) Module parmg ============ - types: grid2_type INTEGER, DIMENSION(2) :: s, e, s0, e0, npt_loc, npt REAL(rkind), ALLOCATABLE :: x(:), y(:) TYPE(gvector_2d) :: f, v TYPE(stencil_2d) :: fdmat, restrict_mat - module procedures: creat_grid coarse (1d, 2d) exchange (gvector) prolong (gvector) restrict (gvector) jacobi get_resids init_restrict (gvector) disp (0d, 1d array of int) get_lmax - Uses gvector stencil 2) Module stencil ============== - types: LOGICAL :: nluni INTEGER, DIMENSION(2) :: ldim, gdim, s0, e0, s, e INTEGER :: npoints INTEGER, ALLOCATABLE :: id(:,:) REAL(rkind), ALLOCATABLE :: val(:,:,:) - module procedures: init vmx laplacian putmat - operators: *: vmx - Uses gvector 3) Module gvector ============== - types: gvector_2d INTEGER, DIMENSION(2) :: s, e ! vector internal bounds INTEGER, DIMENSION(2) :: g ! ghost cell widths REAL(rkind), ALLOCATABLE :: val(:,:) - module procedures: constructor (gvector_2d) disp norm2 (serial, mpi) - operators: + : add_scal, add_vec - : minus_vec, substract_vec * : scale_left, scale_right - assignment: = : from_scal, from_vec