HIPS / autograd

Efficiently computes derivatives of numpy code.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Can I differentiate this function?

sjj199405 opened this issue · comments

def gasrt1(MU, WAVENO, SFCTEMP, SFCEMIS, NLEV, TEMP, TAU, COALB): ###与我们的计算是一致的
RAD1UP = np.zeros(NLEV)
RAD0DN = np.zeros(NLEV)
PLANCK0 = 1.1911E-5 * WAVENO3 / (np.exp(1.4388 * WAVENO / TEMP[0]) - 1)
for i in range(NLEV-1):
PLANCK1 = 1.1911E-5 * WAVENO
3 / (np.exp(1.4388 * WAVENO / TEMP[i+1]) - 1)
TAUO = TAU[i] / MU
TRANS = np.exp(-TAUO)
DELPLANCK = (PLANCK1 - PLANCK0) / TAUO
RAD0DN1 = RAD0DN[i] * TRANS + COALB[i] * (PLANCK1 - DELPLANCK - TRANS * (PLANCK1 - DELPLANCK * (1.0 + TAUO)))
RAD0DN[i+1]=RAD0DN1
PLANCK0 = PLANCK1
PLANCKSFC = 1.1911E-5 * WAVENO3 / (np.exp(1.4388 * WAVENO / SFCTEMP) - 1)
RAD1UP0 = SFCEMIS * PLANCKSFC + RAD0DN1 * (1 - SFCEMIS)
RAD1UP[-1]=RAD1UP0
PLANCK1 = 1.1911E-5 * WAVENO
3 / (np.exp(1.4388 * WAVENO / TEMP[NLEV-1]) - 1)
for i in range(NLEV-2, -1, -1):
PLANCK0 = 1.1911E-5 * WAVENO**3 / (np.exp(1.4388 * WAVENO / TEMP[i]) - 1)
TAUO = TAU[i] / MU
TRANS = np.exp(-TAUO)
DELPLANCK = (PLANCK1 - PLANCK0) / TAUO
RAD1UP0 = RAD1UP0 * TRANS + COALB[i] * (PLANCK0 + DELPLANCK - TRANS * (PLANCK0 + DELPLANCK * (1.0 + TAUO)))
RAD1UP[i] = RAD1UP0
PLANCK1 = PLANCK0
return RAD1UP, RAD0DN