The following are the changes I made to main.f to account for rigid atoms. Addtions: 44 dimension iswitch(MAXATM) 53 call GetInpV(NDIM,MAXATM,MAXTYP,natom,h0,kcell,Omega,rnuc, 54 & zchg,vnuc,amass,nttot,ia,nnuc,hard,chi,zeff,zeta,potparm,time, 55 & iswitch) 4995 subroutine GetInpV(NDIM,MAXATM,MAXTYP,natom,ucell,kcell,Omega, 4996 & rnuc,zchg,vnuc,amass,nttot,ntype,nnuc,hard,chi,zeff,zeta, 4997 & potparm,time,iswitch) 5027 dimension iswitch(MAXATM) 5049 call RdInpV(NDIM,MAXATM,MAXTYP,natom,ucell,kcell,Omega,rnuc, 5050 & zchg,vnuc,amass,nttot,ntype,nnuc,hard,chi,zeff,zeta,potparm, 5051 & iswitch) 5160 subroutine RdInpV(NDIM,MAXATM,MAXTYP,natom,ucell,kcell,Omega,rnuc, 5161 & zchg,vnuc,amass,nttot,ntype,nnuc,hard,chi,zeff,zeta,potparm, 5162 & iswitch) 5193 dimension iswitch(MAXATM) 5241 call GtReal(nn,nline,line,iswitch(natom)) 5247 iswitch(natom)=0 After all these additions, it seems to compile. Now for more... 98 do i=1,natom 99 if (iswitch(i).eq.2) then 100 force(1,i)=0.0 101 force(2,i)=0.0 102 force(3,i)=0.0 103 endif 104 enddo 266 do j=1,natom 267 if (iswitch(j).eq.2) then 268 force(1,j)=0.0 269 force(2,j)=0.0 270 force(3,j)=0.0 271 endif 272 enddo