1 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv! 2 ! ! 3 ! Module: ambm ! 4 ! Purpose: ! 5 ! IMPORTANT: For using these arrays in a subroutine ! 6 ! -lock the module in the beginning of the subroutine ! 7 ! call lock_ambm ! 8 ! -and unlock the module at the end of the subroutine ! 9 ! call unlock_ambm ! 10 ! Contains the following subroutines: ! 11 ! lock_ambm, unlock_ambm ! 12 ! ! 13 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^! 14 15 MODULE ambm 16 17 !----------------------------------------------- 18 ! Modules 19 !----------------------------------------------- 20 USE compar 21 USE funits 22 !----------------------------------------------- 23 24 ! linear equation matrix and vector 25 DOUBLE PRECISION, DIMENSION(:, :, :), ALLOCATABLE :: A_m 26 DOUBLE PRECISION, DIMENSION(:, :), ALLOCATABLE :: B_m 27 28 LOGICAL :: ambm_locked = .false. 29 30 CONTAINS 31 32 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv! 33 ! ! 34 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^! 35 SUBROUTINE lock_ambm 36 IF(ambm_locked) THEN 37 IF (DMP_LOG) WRITE(*,*) & 38 'Error: Multiple use of ambm (ambm_mod.f)' 39 CALL MFIX_EXIT(myPE) 40 ELSE 41 ambm_locked = .true. 42 ENDIF 43 END SUBROUTINE lock_ambm 44 45 46 !vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv! 47 ! ! 48 !^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^! 49 SUBROUTINE unlock_ambm 50 ambm_locked = .false. 51 END SUBROUTINE unlock_ambm 52 53 END MODULE ambm 54 55 56