package MoleculeObject @ISA = qw() sub Title return shift->{Title}; sub SetTitle sub SetTitle { my ($this,$t)= return $this->{Title} = $t; sub SampleName return shift->{SampleName}; sub SetSampleName sub SetSampleName { my ($this,$s)= return $this->{SampleName} = $s; sub SetMoleculeName sub SetMoleculeName { my ($this,$name) = return $this->{MoleculeName} = $name; sub MoleculeName sub MoleculeName { my ($this) = return $this->{MoleculeName}; sub SetCalculationCondition sub SetCalculationCondition { my ($this,$c)= return $this->{SetCalculationCondition} = $c; sub CalculationCondition sub CalculationCondition { my ($this)= return $this->{SetCalculationCondition}; sub nAtomSite return shift->{nAtomSite}; sub SetnAtomSite sub SetnAtomSite { my ($this,$n)= return $this->{nAtomSite} = $n; sub nAtomType return shift->{nAtomType}; sub SetnAtomType sub SetnAtomType { my ($this,$n)= return $this->{nAtomType} = $n; sub nZMatrix return shift->{nZMatrix}; sub SetnZMatrix sub SetnZMatrix { my ($this,$n)= return $this->{nZMatrix} = $n; sub pZMatrixList return shift->{RefZMatrixList}; sub ZMatrix sub ZMatrix { my ($this,$i)= return $this->{RefZMatrixList}->[$i]; sub SetnAtomType sub SetnAtomType { my ($this,$n) = return $this->{nAtomType} = $n; sub nAtomType sub nAtomType { my ($this) = return $this->{nAtomType}; sub SetCAtomTypeList my ($this, @atomlist) = @_; return $this->{RefAtomTypeList} = \@atomlist; sub GetCAtomTypeList my ($this) = @_; return () if($RefAtomList eq ''); return @$RefAtomList; sub GetCAtomType my ($this,$i) = @_; return 0; return $atomtype; sub SetCAtomSiteList my ($this, @atomlist) = @_; return $this->{RefAtomSiteList} = \@atomlist; sub GetCAtomSiteList my ($this) = @_; return () if($RefAtomList eq ''); return @$RefAtomList; sub GetCAtomSite my ($this,$i) = @_; return 0; return $atomsite; sub new my ($module) = @_; return $this; sub DESTROY my $this = shift; sub Initialize my ($this) = @_; return $this; sub TranslateToCenter my ($this) = @_; sub CalculateCenterPosition my ($this) = @_; return ($xc / $nSite, $yc / $nSite, $zc / $nSite); sub AddZMatrix my ($this, $atom, $R, $Angle1, $Angle2, $iAtom2, $iAtom3, $iAtom4, $idR, $idAngle1, $idAangle2) = @_; return $this->{nZMatrix}++; sub ZMatrixToXYZ my ($this, $TranslateToCenter, $IsPrint) = @_; sub FindNearestEquivalentFractionCoordinate my ($this, $x2, $x) = @_; return $xret; sub FractionalToCartesian my ($this, $x,$y,$z) = @_; return ($xc,$yc,$zc); sub FindAtomTypeByName my ($this, $atomname) = @_; return $type if(uc $name eq uc $atomname); return undef; sub AddAtomType my ($this, $atomname, $CheckRegistered) = @_; return; return $this->{nAtomType}; sub AddAtomSite my ($this, $label, $atomname, $x, $y, $z, $occ, $fx, $fy, $fz) = @_; return $this->{nAtomSite} if($atomname eq ''); return $this->{nAtomSite}; sub GetInterAtomicDistance my ($this, $x0, $y0, $z0, $x1, $y1, $z1) = @_; return sqrt($r2); sub GetInterAtomicAngle my ($this, $x0, $y0, $z0, $x1, $y1, $z1, $x2, $y2, $z2) = @_; return 0.0 if($dis01 == 0.0); return 0.0 if($dis02 == 0.0); return $angle; sub FindiAtomType my ($this, $atomname) = @_; return $i+1 if($atomname eq uc $name); return -1; sub FillAtomTypeData my ($this) = @_; sub AtomicScatteringFactor my ($this, $s) = @_; return $this->asf($s); sub asfElectron my ($this, $iAtomType, $s) = @_; return $val; sub ReadASF my ($this, $Source) = @_; sub asf my ($this, $iAtomType, $s, $Source) = @_; return $b; return $asf;