TABLE OF CONTENTS


::pwtk::scaleAtmPos

SYNOPSIS

proc ::pwtk::scaleAtmPos {args} {

PURPOSE

Scale given atomic positions.

ARGUMENTS

SOURCE

    if { [ llength $args] < 2 || [llength $args] > 4 } {
        ::pwtk::error "wrong number of arguments, must be:   pwtk::scaleAtmPos scale_x ?scale_y? ?scale_z? atmPos"
    }

    set nargs [llength $args]
    set scale(0) [lindex $args 0]
    set scale(1) $scale(0)
    set scale(2) $scale(0)
    for {set i 1} {$i<$nargs-1} {incr i} {
        set scale($i) [lindex $args $i]
    }
    set atmPos [lindex $args end]

    set result ""
    foreach line [split $atmPos \n] {   
        set len [llength $line]
        if { $len == 4 || $len == 7 } {
            set sym [lindex $line 0]
            set x   [lindex $line 1]
            set y   [lindex $line 2]
            set z   [lindex $line 3]    
            set ix  [lindex $line 4]    
            set iy  [lindex $line 5]    
            set iz  [lindex $line 6]    
            # we multiply by 1.0 to force the use of floating-point arithmetics
            append result [format "%3s   %15.10f %15.10f %15.10f   %3s%3s%3s\n" \
                               $sym [expr $x * $scale(0) * 1.0] [expr $y * $scale(1) * 1.0] [expr $z * $scale(2) * 1.0] $ix $iy $iz]
        }
    }
    return $result
}