1 MODULE functions 2 3 ! Functions for generating IJK indices for indicated basis: 4 !---------------------------------------------------------------------// 5 ! INTEGER :: FUNIJK, FUNIJK_0 6 ! INTEGER :: FUNIJK_PROC 7 ! INTEGER :: FUNIJK_GL 8 ! INTEGER :: FUNIJK_IO 9 10 11 ! Logical functions to determine whether index is on my PE's domain or 12 ! indicated subset: 13 !---------------------------------------------------------------------// 14 ! LOGICAL :: IS_ON_myPE_owns 15 ! LOGICAL :: IS_ON_myPE_plus1layer 16 ! LOGICAL :: IS_ON_myPE_plus2layers 17 ! LOGICAL :: IS_ON_myPE_wobnd 18 19 20 ! Functions for calculating indicated directional shift in given IJK 21 ! index. This will return the ijk index of the computational cell 22 ! corresponding to the indicated shift when that computational cell 23 ! is NOT a wall cell. If the computational cell is a wall cell then 24 ! this will return its own ijk index. For example, east_of will return 25 ! IPJK when IPJK is a fluid or flow at cell. However, if IPJK is a 26 ! wall cell east_of will return IJK. 27 !---------------------------------------------------------------------// 28 ! INTEGER :: EAST_OF, EAST_OF_0 29 ! INTEGER :: WEST_OF, WEST_OF_0 30 ! INTEGER :: SOUTH_OF, SOUTH_OF_0 31 ! INTEGER :: NORTH_OF, NORTH_OF_0 32 ! INTEGER :: BOTTOM_OF, BOTTOM_OF_0 33 ! INTEGER :: TOP_OF, TOP_OF_0 34 35 36 ! Functions for calculating indicated directional shift in given IJK 37 ! index. This will generally return the ijk index of the computational 38 ! cell corresponding to the indicated shift regardless of the wall 39 ! status of that computational cell. It may not return corner cells 40 ! unless the ijk cell itself is a corner cell. 41 !---------------------------------------------------------------------// 42 ! INTEGER :: IP_OF, IP_OF_0 43 ! INTEGER :: IM_OF, IM_OF_0 44 ! INTEGER :: JP_OF, JP_OF_0 45 ! INTEGER :: JM_OF, JM_OF_0 46 ! INTEGER :: KP_OF, KP_OF_0 47 ! INTEGER :: KM_OF, KM_OF_0 48 49 50 ! Logical functions to identify indicated condition: 51 !---------------------------------------------------------------------// 52 ! logical function to identify various fluid/flow cells 53 ! LOGICAL :: FLUID_AT 54 ! LOGICAL :: P_FLOW_AT 55 ! LOGICAL :: P_OUTFLOW_AT 56 ! LOGICAL :: MASS_OUTFLOW_AT 57 ! LOGICAL :: OUTFLOW_AT 58 ! LOGICAL :: FLOW_AT 59 ! LOGICAL :: FLUIDorP_FLOW_AT 60 61 ! logical function to identify various wall cells 62 ! LOGICAL :: WALL_AT 63 ! LOGICAL :: NS_WALL_AT, FS_WALL_AT, PS_WALL_AT 64 ! LOGICAL :: DEFAULT_WALL_AT 65 ! LOGICAL :: WALL_ICBC_FLAG 66 67 ! Logical function to identify a cyclic cell and different 68 ! cyclic flow boundaries 69 ! LOGICAL :: CYCLIC_AT 70 ! LOGICAL :: CYCLIC_AT_E, CYCLIC_AT_N, CYCLIC_AT_T 71 72 ! logical function to identify different flow at boundaries 73 ! LOGICAL :: FLOW_AT_E, FLOW_AT_N, FLOW_AT_T 74 ! LOGICAL :: PFLOW_AT_E, PFLOW_AT_N, PFLOW_AT_T 75 ! LOGICAL :: MFLOW_AT_E, MFLOW_AT_N, MFLOW_AT_T 76 77 ! Logical functions to identify different impermeable/semipermeable 78 ! surface boundaries (specific type of internal surface) 79 ! LOGICAL :: IP_AT_E, IP_AT_N, IP_AT_T 80 ! LOGICAL :: SIP_AT_E, SIP_AT_N, SIP_AT_T 81 ! LOGICAL :: SP_AT_E, SP_AT_N, SP_AT_T 82 83 ! Logical functions concerning general internal surfaces 84 ! LOGICAL :: IS_AT_E, IS_AT_N, IS_AT_T 85 ! LOGICAL :: NO_IS_AT_E, NO_IS_AT_N, NO_IS_AT_T 86 ! Integer function to return internal surface ID 87 ! INTEGER :: IS_ID_AT_E, IS_ID_AT_N, IS_ID_AT_T 88 89 90 ! Additional functions 91 !---------------------------------------------------------------------// 92 ! DOUBLE PRECISION :: ZMAX 93 ! INTEGER FUNCTION :: FUNLM 94 95 96 CONTAINS 97 98 INCLUDE 'functions.inc' 99 100 END MODULE functions 101