Checking units

A user written subroutine that manipulates values in the model must assume that the solve is running in a particular set of units. If the input file actually uses a different set of units, incorrect results are obtained. You check the units by calling routine TUNITS during initialization. For an example on how to perform the units check, see the following sample code.

 logical function checkunits
C
C   This routine checks model units against an internal set
C   of values. The tolerance for units checking is defined
C   by parameter unitstol.
C
        real unitscheck(5), unitstol
        parameter (unitstol=0.01)
C       Define SI units
        data unitscheck/1.0,1.0,1.0,-273.15,1.0/
C
        real uvals(5), xunits
        integer idum
        logical unitserror
C
C
        call tunits(idum,uvals(1), uvals(2), uvals(3), uvals(4),
        + uvals(5))
C
C   Check each unit for error, allow a tolerance of 1%
C
        unitserror=.false.
        do i=1,5
                xunits=abs((uvals(i)/unitscheck(i))-1)
                if(xunits .gt. unitstol) then
                        unitserror=.true.
                end if
        enddo
        if (unitserror) then
                call unitserrorhandler
        end if
        checkunits=unitserror
        return
end