diff options
| author | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
|---|---|---|
| committer | stainer_t <thomas.stainer@oecd-nea.org> | 2025-09-08 13:48:49 +0200 |
| commit | 7dfcc480ba1e19bd3232349fc733caef94034292 (patch) | |
| tree | 03ee104eb8846d5cc1a981d267687a729185d3f3 /Trivac/src/TRIASP.f | |
Initial commit from Polytechnique Montreal
Diffstat (limited to 'Trivac/src/TRIASP.f')
| -rwxr-xr-x | Trivac/src/TRIASP.f | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/Trivac/src/TRIASP.f b/Trivac/src/TRIASP.f new file mode 100755 index 0000000..76e0a0f --- /dev/null +++ b/Trivac/src/TRIASP.f @@ -0,0 +1,88 @@ +*DECK TRIASP + SUBROUTINE TRIASP (IELEM,IR,NEL,LL4,CYLIND,SGD,XX,DD,VOL,MAT,KN, + 1 LC,T,TS,VEC) +* +*----------------------------------------------------------------------- +* +*Purpose: +* Assembly of a diagonal system matrix corresponding to a single cross +* section type (primal formulation). Note: vector VEC should be +* initialized by the calling program. +* +*Copyright: +* Copyright (C) 2002 Ecole Polytechnique de Montreal +* This library 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 2.1 of the License, or (at your option) any later version +* +*Author(s): A. Hebert +* +*Parameters: input +* IELEM degree of the Lagrangian finite elements. +* IR number of material mixtures. +* NEL total number of finite elements. +* ll4 order of system matrices. +* CYLIND cylinderization flag (=.true. for cylindrical geometry). +* SGD cross section per material mixture. +* XX X-directed mesh spacings. +* DD used with cylindrical geometry. +* VOL volume of each element. +* MAT mixture index assigned to each element. +* KN element-ordered unknown list. +* LC order of the unit matrices. +* T Cartesian linear product vector. +* TS cylindrical linear product vector. +* +*Parameters: output +* VEC diagonal matrix corresponding to the cross section term. +* +*----------------------------------------------------------------------- +* +*---- +* SUBROUTINE ARGUMENTS +*---- + INTEGER IELEM,IR,NEL,LL4,MAT(NEL),KN(NEL*(IELEM+1)**3),LC + REAL SGD(IR),XX(NEL),DD(NEL),VOL(NEL),T(LC),TS(LC),VEC(LL4) + LOGICAL CYLIND +*---- +* LOCAL VARIABLES +*---- + REAL R3DP(125),R3DC(125) +*---- +* CALCULATION OF 3-D MASS MATRICES FROM TENSORIAL PRODUCT OF 1-D +* MATRICES +*---- + LL=LC*LC*LC + DO 20 L=1,LL + L1=1+MOD(L-1,LC) + L2=1+(L-L1)/LC + L3=1+MOD(L2-1,LC) + I1=L1 + I2=L3 + I3=1+(L2-L3)/LC + R3DP(L)=T(I1)*T(I2)*T(I3) + R3DC(L)=TS(I1)*T(I2)*T(I3) + 20 CONTINUE +* + NUM1=0 + DO 90 K=1,NEL + L=MAT(K) + IF(L.EQ.0) GO TO 90 + VOL0=VOL(K) + IF(VOL0.EQ.0.0) GO TO 80 + DX=XX(K) + DO 50 I=1,LL + IND1=KN(NUM1+I) + IF(IND1.EQ.0) GO TO 50 + IF(CYLIND) THEN + RR=(R3DP(I)+R3DC(I)*DX/DD(K))*VOL0 + ELSE + RR=R3DP(I)*VOL0 + ENDIF + VEC(IND1)=VEC(IND1)+RR*SGD(L) + 50 CONTINUE + 80 NUM1=NUM1+LL + 90 CONTINUE + RETURN + END |
