This code SeLaLib (for Semi-Lagrangian-Library)
is a parallel library for simulating the plasma turbulence
in a tokamak.
This software is governed by the CeCILL-B license
under French law and abiding by the rules of distribution
of free software. You can use, modify and redistribute
the software under the terms of the CeCILL-B license as
circulated by CEA, CNRS and INRIA at the following URL
"http://www.cecill.info".
===================================================================================================================================
Copyright (c) 2025 GVEC Contributors, Max Planck Institute for Plasma Physics
License: MIT
===================================================================================================================================
! GEMM does in general Y = fa A^?B^? + fy Y
! with structure: (m x n) = (m x k) (k x n)
! Y=A B : DGEMM('N','N',m,n,k,fa,Amat ,m, Bmat,k, fy,Y,m)
! Y=A^TB : DGEMM('T','N',m,n,k,fa,Amat ,k, Bmat,k, fy,Y,m)
! Y=A B^T : DGEMM('N','T',m,n,k,fa,Amat ,m, Bmat,n, fy,Y,m)
! Y=A^T*B^T : DGEMM('T','T',m,n,k,fa,Amat ,k, Bmat,n, fy,Y,m)
! SIMPLE INTERFACE FOR DGEMM, specifying nrows/ncols of mat A and nrows/ncols of mat B (for any transpose!)
! GEMM does in general Y = fa A^?B^? + fy Y
! with structure: (m x n) = (m x k) (k x n)
! Y=A B : DGEMM('N','N',m,n,k,fa,Amat ,m, Bmat,k, fy,Y,m)
! Y=A^TB : DGEMM('T','N',m,n,k,fa,Amat ,k, Bmat,k, fy,Y,m)
! Y=A B^T : DGEMM('N','T',m,n,k,fa,Amat ,m, Bmat,n, fy,Y,m)
! Y=A^T*B^T : DGEMM('T','T',m,n,k,fa,Amat ,k, Bmat,n, fy,Y,m)
Nodes of different colours represent the following:
Solid arrows point from a file to a file which it depends on. A file
is dependent upon another if the latter must be compiled before the former
can be.
Nodes of different colours represent the following:
Solid arrows point from a file to a file which it depends on. A file
is dependent upon another if the latter must be compiled before the former
can be.
Source Code
!**************************************************************! Copyright INRIA! Authors :! CALVI project team!! This code SeLaLib (for Semi-Lagrangian-Library)! is a parallel library for simulating the plasma turbulence! in a tokamak.!! This software is governed by the CeCILL-B license! under French law and abiding by the rules of distribution! of free software. You can use, modify and redistribute! the software under the terms of the CeCILL-B license as! circulated by CEA, CNRS and INRIA at the following URL! "http://www.cecill.info".!**************************************************************#ifndef DOXYGEN_SHOULD_SKIP_THIS#include "defines.FPP"module sll_m_assert!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++implicit none public::&sll_s_assertionprivate!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++! Instead of using the non-standard subroutine abort() provided by the compiler,! use abort() from the C standard library "stdlib.h"interface subroutine c_abort()bind(C,name="abort")end subroutine end interface!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++contains!+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++! This routine just takes the information about the assertion error and! writes it on the screen.! This function is only meant to be used by the assert macro. No Doxygen! documentation needed.subroutine sll_s_assertion(msg,file,line)use MODgvec_globals,only:abortcharacter(len=*),intent(in)::msgcharacter(len=*),intent(in)::fileinteger,intent(in)::line!write(*,*)!write(*,'(a)' ) "ASSERTION FAILURE: condition ( " // trim(msg) // " ) is not satisfied."!write(*,'(a,i0)') 'Triggered at '// file //':', line!!call c_abort()!!! => CALL GVEC abort insteadCALL abort(__STAMP__,&"SLL ASSERTION FAILURE: condition ( "//trim(msg)//" ) is not satisfied.")end subroutine sll_s_assertionend module sll_m_assert#endif /* DOXYGEN_SHOULD_SKIP_THIS */