subroutine init_tJ_model character(*), parameter :: this_routine = "init_tJ_model" real(dp) :: tau_opt root_print "initializing tJ-model with parameters: " root_print "t: ", bhub root_print "J: ", exchange_j ! after having used the tHub and treal parameters set them to false ! now thub = .false. treal = .false. t_new_real_space_hubbard = .false. ! reuse real-space-hubbard stugg call check_real_space_hubbard_input() get_umat_el => get_umat_el_heisenberg if (trim(adjustl(lattice_type)) == 'read') then ! then i have to construct tmat first call stop_all(this_routine, "starting from fcidump not yet implemented!") ! and then construct the lattice lat => lattice(lattice_type, length_x, length_y, length_z,.not. t_open_bc_x, & .not. t_open_bc_y,.not. t_open_bc_z) else ! otherwise i have to do it the other way around lat => lattice(lattice_type, length_x, length_y, length_z,.not. t_open_bc_x, & .not. t_open_bc_y,.not. t_open_bc_z, t_bipartite_order = t_bipartite_order) ! if nbasis was not yet provided: if (nbasis <= 0) then nbasis = 2 * lat%get_nsites() end if call init_tmat(lat) call setup_exchange_matrix(lat) end if if (nel >= nbasis / 2) then call stop_all(this_routine, & " too many electrons for the tJ model! nel >= nbasis/2") end if ! and also check the double occupancy in the starting det, ! no double occupancy allowed! if (count_double_orbs(ilutRef) > 0) then call stop_all(this_routine, & "incorrect starting state for tJ model: there is an doubly occupied site!") end if ! i guess i have to setup G1 also.. argh.. i hate this! allocate(G1(nbasis)) G1(1:nbasis - 1:2)%ms = -1 G1(2:nbasis:2)%ms = 1 ! Ecore should default to 0, but be sure anyway! ecore = 0.0_dp ! and i have to calculate the optimal time-step for the hubbard models. ! where i need the connectivity of the lattice i guess? tau_opt = determine_optimal_time_step() if (tau < EPS) then call assign_value_to_tau(& lat_tau_factor * tau_opt, & 'Initialization with optimal tau value asdf.') else root_print "optimal time-step would be: ", tau_opt root_print "but tau specified in input!" end if if (tau_search_method /= possible_tau_search_methods%OFF) then call stop_all(this_routine, "tau-search should be switched off") end if if (t_start_neel_state) then root_print "starting from the Neel state: " if (nel > nbasis / 2) then call stop_all(this_routine, & "more than half-filling! does neel state make sense?") end if end if end subroutine init_tJ_model