! --- program tc_scf BEGIN_DOC ! TODO : Put the documentation of the program here END_DOC implicit none write(json_unit,json_array_open_fmt) 'tc-scf' print *, ' starting ...' my_grid_becke = .True. my_n_pt_r_grid = 30 my_n_pt_a_grid = 50 ! my_n_pt_r_grid = 10 ! small grid for quick debug ! my_n_pt_a_grid = 26 ! small grid for quick debug touch my_grid_becke my_n_pt_r_grid my_n_pt_a_grid PROVIDE mu_erf print *, ' mu = ', mu_erf PROVIDE j1b_type print *, ' j1b_type = ', j1b_type print *, j1b_pen !call create_guess() !call orthonormalize_mos() PROVIDE tcscf_algorithm PROVIDE var_tc if(var_tc) then print *, ' VAR-TC' if(tcscf_algorithm == 'DIIS') then print*, ' NOT implemented yet' elseif(tcscf_algorithm == 'Simple') then call rh_vartcscf_simple() else print *, ' not implemented yet', tcscf_algorithm stop endif else if(tcscf_algorithm == 'DIIS') then call rh_tcscf_diis() elseif(tcscf_algorithm == 'Simple') then call rh_tcscf_simple() else print *, ' not implemented yet', tcscf_algorithm stop endif call minimize_tc_orb_angles() endif write(json_unit,json_array_close_fmtx) call json_close end ! --- subroutine create_guess() implicit none logical :: exists PROVIDE ezfio_filename !call ezfio_has_mo_basis_mo_coef(exists) exists = .false. if(.not.exists) then mo_label = 'Guess' if(mo_guess_type == "HCore") then mo_coef = ao_ortho_lowdin_coef call restore_symmetry(ao_num, mo_num, mo_coef, size(mo_coef, 1), 1.d-10) TOUCH mo_coef call mo_as_eigvectors_of_mo_matrix(mo_one_e_integrals, size(mo_one_e_integrals, 1), size(mo_one_e_integrals, 2), mo_label, 1, .false.) call restore_symmetry(ao_num, mo_num, mo_coef, size(mo_coef, 1), 1.d-10) SOFT_TOUCH mo_coef elseif (mo_guess_type == "Huckel") then call huckel_guess else print *, 'Unrecognized MO guess type : '//mo_guess_type stop 1 endif SOFT_TOUCH mo_label endif end subroutine create_guess ! ---