1!
2!     CalculiX - A 3-dimensional finite element program
3!              Copyright (C) 1998-2021 Guido Dhondt
4!
5!     This program is free software; you can redistribute it and/or
6!     modify it under the terms of the GNU General Public License as
7!     published by the Free Software Foundation(version 2);
8!
9!
10!     This program is distributed in the hope that it will be useful,
11!     but WITHOUT ANY WARRANTY; without even the implied warranty of
12!     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13!     GNU General Public License for more details.
14!
15!     You should have received a copy of the GNU General Public License
16!     along with this program; if not, write to the Free Software
17!     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
18!
19!     y=A*x for real sparse antisymmetric matrices,
20!     i.e. the transpose is the negative matrix: A^T=-A
21!
22!     storage of the matrix:
23!        au: first lower triangle
24!        ad: diagonal terms
25!
26      subroutine op_corio(n,x,y,ad,au,jq,irow)
27!
28      implicit none
29!
30      integer irow(*),n,j,l,i,jq(*)
31      real*8 y(*),x(*),au(*),ad(*)
32!
33!     diagonal terms
34!
35      do i=1,n
36         y(i)=ad(i)*x(i)
37      enddo
38!
39!     off-diagonal terms
40!
41      do j=1,n
42         do l=jq(j),jq(j+1)-1
43            i=irow(l)
44            y(i)=y(i)+au(l)*x(j)
45            y(j)=y(j)-au(l)*x(i)
46         enddo
47      enddo
48!
49      return
50      end
51