github.com/gopherd/gonum@v0.0.4/unit/constant/faraday.go (about)

     1  // Code generated by "go generate github.com/gopherd/gonum/unit/constant”; DO NOT EDIT.
     2  
     3  // Copyright ©2019 The Gonum Authors. All rights reserved.
     4  // Use of this source code is governed by a BSD-style
     5  // license that can be found in the LICENSE file.
     6  
     7  package constant
     8  
     9  import (
    10  	"fmt"
    11  
    12  	"github.com/gopherd/gonum/unit"
    13  )
    14  
    15  // Faraday is the Faraday constant, the magnitude of electric charge per mole of electrons.
    16  // The dimensions of Faraday are A s mol^-1. The constant is exact.
    17  const Faraday = faradayUnits(96485.33212)
    18  
    19  type faradayUnits float64
    20  
    21  // Unit converts the faradayUnits to a *unit.Unit
    22  func (cnst faradayUnits) Unit() *unit.Unit {
    23  	return unit.New(float64(cnst), unit.Dimensions{
    24  		unit.CurrentDim: 1,
    25  		unit.TimeDim:    1,
    26  		unit.MoleDim:    -1,
    27  	})
    28  }
    29  
    30  func (cnst faradayUnits) Format(fs fmt.State, c rune) {
    31  	switch c {
    32  	case 'v':
    33  		if fs.Flag('#') {
    34  			fmt.Fprintf(fs, "%T(%v)", cnst, float64(cnst))
    35  			return
    36  		}
    37  		fallthrough
    38  	case 'e', 'E', 'f', 'F', 'g', 'G':
    39  		p, pOk := fs.Precision()
    40  		w, wOk := fs.Width()
    41  		switch {
    42  		case pOk && wOk:
    43  			fmt.Fprintf(fs, "%*.*"+string(c), w, p, cnst.Unit())
    44  		case pOk:
    45  			fmt.Fprintf(fs, "%.*"+string(c), p, cnst.Unit())
    46  		case wOk:
    47  			fmt.Fprintf(fs, "%*"+string(c), w, cnst.Unit())
    48  		default:
    49  			fmt.Fprintf(fs, "%"+string(c), cnst.Unit())
    50  		}
    51  	default:
    52  		fmt.Fprintf(fs, "%%!"+string(c)+"(constant.faradayUnits=%v A s mol^-1)", float64(cnst))
    53  	}
    54  }