Files
LaGriT/src/xyznorm.f
2025-12-17 11:00:57 +08:00

98 lines
2.2 KiB
Fortran
Executable File

*deck xyznorm
subroutine xyznorm(x1,y1,z1,x2,y2,z2)
C
C#######################################################################
C
C PURPOSE -
C
C THIS ROUTINE TRANSLATES POINTS FROM THE CURRENT LOCAL COORDINATE
C SYSTEM TO THE NORMAL COORDINATE SYSTEM. THE CURRENT ORIGIN AND
C ROTATION MATRIX ARE USED FOR THE TRANSALTION.
C
C
C INPUT ARGUMENTS -
C
C x1 - CURRENT X COORDINATE
C y1 - CURRENT Y COORDINATE
C z1 - CURRENT Z COORDINATE
C
C
C OUTPUT ARGUMENTS -
C
C x2 - NORMAL X COORDINATE
C y2 - NORMAL Y COORDINATE
C z2 - NORMAL Z COORDINATE
C
C
C CHANGE HISTORY -
C
C $Log: xyznorm.f,v $
C Revision 2.00 2007/11/09 20:04:06 spchu
C Import to CVS
C
CPVCS
CPVCS Rev 1.2 Mon Apr 14 17:06:16 1997 pvcs
CPVCS No change.
CPVCS
CPVCS Rev 1.1 05/11/95 13:14:44 het
CPVCS Add diffusion solver
CPVCS
CPVCS Rev 1.0 11/10/94 12:20:42 pvcs
CPVCS Original version.
C
C
C
C
C#######################################################################
C
implicit none
include "chydro.h"
C arguments
real*8 x1,y1,z1,x2,y2,z2
C variables
real*8 x0,y0,z0,ax,bx,cx,ay,by,cy,az,bz,cz
C
C#######################################################################
C
C
C ******************************************************************
C
C GET THE CURRENT ORIGIN
C
x0=origc(1)
y0=origc(2)
z0=origc(3)
C
C ******************************************************************
C
C GET THE CURRENT ROTATION MATRIX
C
ax=rotatc(1,1)
bx=rotatc(1,2)
cx=rotatc(1,3)
ay=rotatc(2,1)
by=rotatc(2,2)
cy=rotatc(2,3)
az=rotatc(3,1)
bz=rotatc(3,2)
cz=rotatc(3,3)
C
C ******************************************************************
C TRANSPOSE AND ROTATE THE POINT TO THE REAL ORIGIN AND AXIS
C
x2=ax*x1 + ay*y1 + az*z1 + x0
y2=bx*x1 + by*y1 + bz*z1 + y0
z2=cx*x1 + cy*y1 + cz*z1 + z0
C
C
C ******************************************************************
C SET UP THE CFT IMMUNE STATEMENT FOR DDT
C
goto 9999
9999 continue
C
return
end