Dimer formation and simulation

I am trying to simulate dimer particles (two charged point particles separated by a length). The bond length is maintained when I initialize these dimers and simulate them using fix rigid and fix langevin. However, when I apply a radial electric field, dimers move in closer to each other and the dimer length is reduced and dimers behavior is lost. Below is my code snippet to have a look. In my data file I have two atom types and I have 50(A-A) dimers of each type (no A-B). I want help with this code, so that I can have dimers whose lengths don’t change through out the simulation.

#Initialization

units si
atom_style hybrid charge
atom_modify map array first big

atom_modify map array first small

dimension 2
boundary p p p

#Atom definition

fix molprop all property/atom mol
read_data data.dimer fix molprop NULL Molecules

group big type 1
group small type 2

velocity big create {T} 239874 loop all velocity small create {T} 239874 loop all
velocity all zero angular

Force field

pair_style coul/debye {kappa} {cutf}
pair_coeff * *

#Settings
neighbor ${ngh} bin
neigh_modify every 1 delay 0 check yes one 50000 page 560000 ### this one is used not to overflow the neighbor

comm_modify mode single group all vel yes

neigh_modify include all

variable K2 equal 25000.0

variable xn atom x-0.05
variable yn atom y-0.05

variable Ehx atom {K2}*v_xn variable Ehy atom {K2}*v_yn

temperature controller

compute new3d big temp

timestep ${dt}

fixes

fix r1 all rigid/nve molecule reinit no
fix l1 all langevin {T} {T} 0.00002 92647382
fix 2d all enforce2d

fix ef all efield v_Ehx v_Ehy 0.0

fix_modify ef energy yes

Outputs

thermo_style custom step temp pe ke etotal epair press
thermo ${Nth}
thermo_modify temp new3d

dump dp1 all custom 1000 dump_lang.lammpstrj mol type x y z vx vy vz
run ${nt}

I am attaching my data file and input file here.
in.dimer (5.2 KB)
data.dimer (27.7 KB)