You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
134 lines
4.0 KiB
134 lines
4.0 KiB
2 years ago
|
C Copyright(C) 1999-2020 National Technology & Engineering Solutions
|
||
|
C of Sandia, LLC (NTESS). Under the terms of Contract DE-NA0003525 with
|
||
|
C NTESS, the U.S. Government retains certain rights in this software.
|
||
|
C
|
||
|
C See packages/seacas/LICENSE for details
|
||
|
|
||
|
C=======================================================================
|
||
|
*DECK,INTRPN
|
||
|
SUBROUTINE INTRPN(ICONA,SOLNA,IELPT,STRPT,
|
||
|
& SOLNB,NDLSTB,XB,YB,ZB,
|
||
|
& IDBLK,TIMES,INSUB,SN)
|
||
|
|
||
|
C ******************************************************************
|
||
|
|
||
|
C SUBROUTINE TO CONTROL INTERPOLATION OF NODAL RESULTS FROM MESH-A
|
||
|
C TO MESH-B
|
||
|
C INTERPOLATED SOLUTION IS WRITTEN TO MESH-C EXODUS FILE
|
||
|
|
||
|
C Calls subroutine SHAPEF, ININOD
|
||
|
|
||
|
C Called by MAPVAR
|
||
|
|
||
|
C ******************************************************************
|
||
|
|
||
|
C ICONA INT Connectivity of donor Mesh (1:nelnda,1:numeba)
|
||
|
C SOLNA REAL Nodal variables for donor mesh
|
||
|
C IELPT INT The element in donor mesh within which the point
|
||
|
C (node in recipient mesh) is found
|
||
|
C STRPT REAL The isoparametric coords of point in IELPT element
|
||
|
C SOLNB REAL Nodal variables for recipient mesh
|
||
|
C NDLSTB INT List of recipient mesh nodes in current element block
|
||
|
C SOLN REAL SOLNA vector local to each donor mesh element
|
||
|
C TIMES REAL Array of times - just passed through
|
||
|
C INSUB INT Number of times into subroutine for this element block
|
||
|
C 1-first time; >1-second,etc time;
|
||
|
C used to control mapping for many element blocks to one
|
||
|
|
||
|
C ******************************************************************
|
||
|
|
||
|
include 'amesh.blk'
|
||
|
include 'bmesh.blk'
|
||
|
include 'aexds1.blk'
|
||
|
include 'contrl.blk'
|
||
|
include 'ebbyeb.blk'
|
||
|
include 'ex2tp.blk'
|
||
|
include 'steps.blk'
|
||
|
include 'tapes.blk'
|
||
|
include 'varnpt.blk'
|
||
|
|
||
|
DIMENSION XB(*), YB(*), ZB(*), TIMES(*)
|
||
|
DIMENSION ICONA(NELNDA,*), SOLNA(NODESA,NVARNP)
|
||
|
DIMENSION SOLNB(NODESB,NVARNP), NDLSTB(*)
|
||
|
DIMENSION IELPT(*), STRPT(3,NODESB)
|
||
|
DIMENSION SOLN(27), SN(*)
|
||
|
|
||
|
C ******************************************************************
|
||
|
|
||
|
C set up time steps
|
||
|
|
||
|
IF (ISTEP .EQ. -1)THEN
|
||
|
NTM = NTIMES
|
||
|
ELSE
|
||
|
NTM = 1
|
||
|
END IF
|
||
|
|
||
|
DO 5 IST = 1, NTM
|
||
|
IF (ISTEP .EQ. -1)THEN
|
||
|
ISTP = IST
|
||
|
ELSE
|
||
|
ISTP = ISTEP
|
||
|
END IF
|
||
|
|
||
|
C Start interpolation
|
||
|
|
||
|
DO 10 IVAR = 1, NVARNP
|
||
|
|
||
|
C For IDEF = 2 do mesh annealing (used by GOMA); write out all
|
||
|
C displacements as zero.
|
||
|
|
||
|
IF (IDEF .EQ. 2 .AND. (IVAR .EQ. IXDIS .OR. IVAR .EQ. IYDIS
|
||
|
& .OR. IVAR .EQ. IZDIS))GO TO 10
|
||
|
|
||
|
C If first time into INTRPN for this element block, initialize
|
||
|
C else you are mapping many to one and retrieve partially mapped
|
||
|
C results from temporary storage in EXODUS
|
||
|
|
||
|
IF (INSUB .EQ. 1)THEN
|
||
|
CALL ININOD(SOLNB,IVAR,TIMES,ISTP,IDBLK,NDLSTB,XB,YB,ZB,
|
||
|
& SN)
|
||
|
ELSE
|
||
|
CALL EXGNV(NTP4EX,IST,IVAR,NODESB,SOLNB(1,IVAR),IERR)
|
||
|
END IF
|
||
|
|
||
|
C Get nodal results on donor mesh
|
||
|
|
||
|
CALL EXGNV(NTP2EX,ISTP,IVAR,NODESA,SOLNA(1,IVAR),IERR)
|
||
|
|
||
|
C Loop on nodes in recipient mesh
|
||
|
|
||
|
DO 30 I = 1,NUMNDB
|
||
|
NEL = IELPT(I)
|
||
|
IF (NEL .NE. 0) THEN
|
||
|
|
||
|
C Set parameters for element in donor mesh
|
||
|
|
||
|
S = STRPT(1,I)
|
||
|
T = STRPT(2,I)
|
||
|
R = 0.
|
||
|
IF (NDIMB.EQ.3) R = STRPT(3,I)
|
||
|
C NNODES = NNELM(ITYPE)
|
||
|
NNODES = NELNDA
|
||
|
IF (ITYPE .EQ. 6) NNODES = 4
|
||
|
DO 20 J = 1,NNODES
|
||
|
INODE = ICONA(J,NEL)
|
||
|
SOLN(J) = SOLNA(INODE,IVAR)
|
||
|
20 CONTINUE
|
||
|
|
||
|
C Shape function
|
||
|
|
||
|
CALL SHAPEF(ITYPE,S,T,R,SOLN,BVALUE)
|
||
|
SOLNB(NDLSTB(I),IVAR) = BVALUE
|
||
|
END IF
|
||
|
30 CONTINUE
|
||
|
|
||
|
C Save results, it doesn't matter if they are preliminary or final
|
||
|
|
||
|
CALL EXPNV(NTP4EX,IST,IVAR,NODESB,SOLNB(1,IVAR),IERR)
|
||
|
|
||
|
10 CONTINUE
|
||
|
5 CONTINUE
|
||
|
|
||
|
RETURN
|
||
|
END
|