@@ -288,6 +288,9 @@ MODULE COMPLEX_GEOMETRY
288
288
289
289
! Max numbers of link attempts for small faces and cut-cells:
290
290
INTEGER, PARAMETER :: N_LINK_ATTMP = 1, N_LINK_ATTMP_F=50
291
+ ! Number of digits in loose precision used in normals definition for linking.
292
+ INTEGER, PARAMETER :: LINK_DIGITS = 8
293
+ REAL(EB),PARAMETER :: LINK_FCT = REAL(10**LINK_DIGITS,EB)
291
294
292
295
! Areas per SURF and GEOM:
293
296
REAL(EB), ALLOCATABLE, DIMENSION(:,:) :: FDS_AREA_GEOM
@@ -8268,6 +8271,11 @@ SUBROUTINE GET_CELL_LINK_INFO(NM)
8268
8271
8269
8272
! With the surface normal search for a Regular Gasphase face in that direction.
8270
8273
AREA_IF_1 : IF (AREA > TWO_EPSILON_EB) THEN
8274
+ NRML = NRML / AREA ! Normalize unit vector:
8275
+ ! Normalize NRML vector to LINK_DIGITS:
8276
+ DO DUM=IAXIS,KAXIS
8277
+ NRML(DUM) = REAL(INT(LINK_FCT*NRML(DUM)),EB)/LINK_FCT
8278
+ ENDDO
8271
8279
MASK(IAXIS:KAXIS) = .TRUE.
8272
8280
INRM(1) = MAXLOC(ABS(NRML(IAXIS:KAXIS)),MASK=MASK,DIM=1); MASK(INRM(1))=.FALSE.
8273
8281
INRM(2) = MAXLOC(ABS(NRML(IAXIS:KAXIS)),MASK=MASK,DIM=1); MASK(INRM(2))=.FALSE.
@@ -8373,6 +8381,11 @@ SUBROUTINE GET_CELL_LINK_INFO(NM)
8373
8381
ENDDO
8374
8382
8375
8383
AREA_IF_2 : IF (AREA > TWO_EPSILON_EB) THEN
8384
+ NRML = NRML / AREA ! Normalize unit vector:
8385
+ ! Normalize NRML vector to LINK_DIGITS:
8386
+ DO DUM=IAXIS,KAXIS
8387
+ NRML(DUM) = REAL(INT(LINK_FCT*NRML(DUM)),EB)/LINK_FCT
8388
+ ENDDO
8376
8389
MASK(IAXIS:KAXIS) = .TRUE.
8377
8390
INRM(1) = MAXLOC(ABS(NRML(IAXIS:KAXIS)),MASK=MASK,DIM=1); MASK(INRM(1))=.FALSE.
8378
8391
INRM(2) = MAXLOC(ABS(NRML(IAXIS:KAXIS)),MASK=MASK,DIM=1); MASK(INRM(2))=.FALSE.
0 commit comments