module flags_data use typedef, only: & int64 implicit none integer(kind=int64), parameter :: & nflags = 32 integer(kind=int64), parameter :: & iuse_sd = 0, & iuse_td = 1, & iuse_tf = 2, & iuse_pn = 3, & iuse_gr = 4, & iuse_so = 5, & iuse_p2 = 6, & iuse_ss = 7, & iuse_rr = 8, & iuse_pnf = 9, & Iuse_sdh = 10, & Iuse_tdh = 11, & iuse_tfh = 12, & iuse_pnh = 13, & iuse_pnq = 14, & iuse_rxv = 15, & iuse_td3 = 16, & iuse_sdt = 17, & iuse_tdt = 18, & iuse_tft = 19, & iuse_pnt = 20, & iuse_t3t = 21, & iuse_t3h = 22, & iuse_t3s = 23, & iuse_qp = 24, & iuse_ori = 25, & iuse_orq = 26, & iuse_ors = 27, & iuse_pqm = 28, & iuse_pqh = 29, & iuse_pqq = 30, & iuse_cd = 31 logical, save :: & use_sd = .TRUE. , & use_td = .TRUE. , & use_tf = .TRUE. , & use_pn = .TRUE. , & use_gr = .FALSE., & use_so = .TRUE. , & use_p2 = .TRUE. , & use_ss = .TRUE. , & use_rr = .TRUE. , & use_pnf = .FALSE. , & use_sdh = .TRUE. , & use_tdh = .TRUE. , & use_tfh = .TRUE. , & use_pnh = .TRUE. , & use_pnq = .TRUE. , & use_rxv = .TRUE. , & use_td3 = .TRUE. , & use_sdt = .FALSE. , & use_tdt = .FALSE. , & use_tft = .FALSE. , & use_pnt = .FALSE. , & use_t3t = .FALSE. , & use_t3h = .FALSE. , & use_t3s = .FALSE. , & use_qp = .TRUE., & use_ori = .TRUE., & use_orq = .TRUE., & use_ors = .FALSE., & use_pqm = .TRUE., & use_pqh = .TRUE., & use_pqq = .TRUE., & use_cd = .TRUE. character(len=3), dimension(nflags) :: & flag_name = (/ & 'sd ', 'td ', 'tf ', 'pn ', 'gr ', 'so ', 'p2 ', 'ss ', 'rr ', & 'pnf', 'sdh', 'tdh', 'tfh', 'pnh', 'pnq', 'rxv', 'td3', 'sdt', & 'tdt', 'tft', 'pnt', 't3t', 't3h', 't3s', 'qp ', 'ori', 'orq', & 'ors', 'pqm', 'pqh', 'pqq', 'cd ' /) contains subroutine set_derivative_flags(flags) use typedef, only: & int64 implicit none integer(kind=int64), intent(in) :: & flags use_sd = btest(flags, iuse_sd ) use_td = btest(flags, iuse_td ) use_tf = btest(flags, iuse_tf ) use_pn = btest(flags, iuse_pn ) use_gr = btest(flags, iuse_gr ) use_so = btest(flags, iuse_so ) use_p2 = btest(flags, iuse_p2 ) use_ss = btest(flags, iuse_ss ) use_rr = btest(flags, iuse_rr ) use_pnf = btest(flags, iuse_pnf) use_sdh = btest(flags, iuse_sdh) use_tdh = btest(flags, iuse_tdh) use_tfh = btest(flags, iuse_tfh) use_pnh = btest(flags, iuse_pnh) use_pnq = btest(flags, iuse_pnq) use_rxv = btest(flags, iuse_rxv) use_td3 = btest(flags, iuse_td3) use_sdt = btest(flags, iuse_sdt) use_tdt = btest(flags, iuse_tdt) use_tft = btest(flags, iuse_tft) use_pnt = btest(flags, iuse_pnt) use_t3t = btest(flags, iuse_t3t) use_t3h = btest(flags, iuse_t3h) use_t3s = btest(flags, iuse_t3s) use_qp = btest(flags, iuse_qp ) use_ori = btest(flags, iuse_ori) use_orq = btest(flags, iuse_orq) use_ors = btest(flags, iuse_ors) use_pqm = btest(flags, iuse_pqm) use_pqh = btest(flags, iuse_pqh) use_pqq = btest(flags, iuse_pqq) use_cd = btest(flags, iuse_cd ) end subroutine set_derivative_flags function get_derivative_flags() result(flags) use typedef, only: & int64 implicit none integer(kind=int64) :: & flags flags = 0 if (use_sd ) flags = ibset(flags, iuse_sd ) if (use_td ) flags = ibset(flags, iuse_td ) if (use_tf ) flags = ibset(flags, iuse_tf ) if (use_pn ) flags = ibset(flags, iuse_pn ) if (use_gr ) flags = ibset(flags, iuse_gr ) if (use_so ) flags = ibset(flags, iuse_so ) if (use_p2 ) flags = ibset(flags, iuse_p2 ) if (use_ss ) flags = ibset(flags, iuse_ss ) if (use_rr ) flags = ibset(flags, iuse_rr ) if (use_pnf) flags = ibset(flags, iuse_pnf) if (use_sdh) flags = ibset(flags, iuse_sdh) if (use_tdh) flags = ibset(flags, iuse_tdh) if (use_tfh) flags = ibset(flags, iuse_tfh) if (use_pnh) flags = ibset(flags, iuse_pnh) if (use_pnq) flags = ibset(flags, iuse_pnq) if (use_rxv) flags = ibset(flags, iuse_rxv) if (use_td3) flags = ibset(flags, iuse_td3) if (use_sdt) flags = ibset(flags, iuse_sdt) if (use_tdt) flags = ibset(flags, iuse_tdt) if (use_tft) flags = ibset(flags, iuse_tft) if (use_pnt) flags = ibset(flags, iuse_pnt) if (use_t3t) flags = ibset(flags, iuse_t3t) if (use_t3h) flags = ibset(flags, iuse_t3h) if (use_t3s) flags = ibset(flags, iuse_t3s) if (use_qp ) flags = ibset(flags, iuse_qp ) if (use_ori) flags = ibset(flags, iuse_ori) if (use_orq) flags = ibset(flags, iuse_orq) if (use_ors) flags = ibset(flags, iuse_ors) if (use_pqm) flags = ibset(flags, iuse_pqm) if (use_pqh) flags = ibset(flags, iuse_pqh) if (use_pqq) flags = ibset(flags, iuse_pqq) if (use_cd ) flags = ibset(flags, iuse_cd ) end function get_derivative_flags end module flags_data