コード例 #1
0
def EvalProps():
    """Evaluate thermodynamic properties
    """
    density = _mdsim_globals['density']
    deltaT  = _mdsim_globals['deltaT']
    mol     = _mdsim_globals['mol']
    nMol    = _mdsim_globals['nMol']
    uSum    = _mdsim_globals['uSum']
    virSum  = _mdsim_globals['virSum']

    vSum = VecR()
    vvMax : float = 0.
    vvSum : float = 0.
    for m in mol:
        rv_add(vSum, m)
        vv = rv_dot(m, m)
        vvSum += vv
        vvMax = max([vvMax, vv])

    _mdsim_globals['dispHi'] += math.sqrt(vvMax) * deltaT
    if _mdsim_globals['dispHi'] > 0.5 * _mdsim_globals['rNebrShell']:
        _mdsim_globals['nebrNow'] = True

    _mdsim_globals['vSum'] = vSum
    _mdsim_globals['kinEnergy'].val = 0.5 * vvSum / nMol
    _mdsim_globals['totEnergy'].val = \
    _mdsim_globals['kinEnergy'].val + uSum / nMol
    _mdsim_globals['pressure'].val = density * (vvSum + virSum) / (nMol * NDIM)
コード例 #2
0
def EvalVelDist():
    j: int = 0
    deltaV: float = 0.0
    histSum: float = 0.0

    histVel = _mdsim_globals['histVel']
    mol = _mdsim_globals['mol']
    rangeVel = _mdsim_globals['rangeVel']
    sizeHistVel = _mdsim_globals['sizeHistVel']

    deltaV = rangeVel / sizeHistVel
    for m in mol:
        j = int(math.sqrt(rv_dot(m, m)) / deltaV)
        histVel[min([j, sizeHistVel - 1])] += 1

    _mdsim_globals['countVel'] += 1
    if _mdsim_globals['countVel'] == _mdsim_globals['limitVel']:
        histSum = np.sum(histVel)
        histVel /= histSum
        _mdsim_globals['hFucnction'] = 0.0
        for j in range(sizeHistVel):
            if histVel[j] > 0.0:
                _mdsim_globals['hFunction'] += histVel[j] * math.log(
                    histVel[j] / ((j + 0.5) * deltaV))
        PrintVelDist(sys.stdout)
        _mdsim_globals['countVel'] = 0
コード例 #3
0
def EvalProps():
    """Evaluate thermodynamic properties
    """
    density= _mdsim_globals['density']
    mol    = _mdsim_globals['mol']
    nMol   = _mdsim_globals['nMol']
    uSum   = _mdsim_globals['uSum']
    virSum = _mdsim_globals['virSum']

    vSum = VecR()
    vvSum : float = 0.
    for m in mol:
        rv_add(vSum, m)
        vvSum += rv_dot(m, m)

    _mdsim_globals['vSum'] = vSum
    _mdsim_globals['kinEnergy'].val = 0.5 * vvSum / nMol
    _mdsim_globals['totEnergy'].val = \
    _mdsim_globals['kinEnergy'].val + uSum / nMol
    _mdsim_globals['pressure'].val = density * (vvSum + virSum) / (nMol * NDIM)