Ejemplo n.º 1
0
    def test_atmosphere_pik(self):
        "Model 'pik'"

        parameterizations = {
            "martin": (248.13, [248.13], [self.P]),
            "huybrechts_dewolde": (252.59, [237.973373], [self.P]),
            "martin_huybrechts_dewolde": (248.13, [233.51337298], [self.P]),
            "era_interim": (256.27, [243.0939774], [self.P]),
            "era_interim_sin": (255.31577, [241.7975841], [self.P]),
            "era_interim_lon": (248.886139, [233.3678998], [self.P])
        }

        for p, (T, Ts, Ps) in parameterizations.items():
            config.set_string("atmosphere.pik.parameterization", p)

            model = PISM.AtmospherePIK(self.grid)
            model.init(self.geometry)

            # t and dt are irrelevant here
            model.update(self.geometry, 0, 1)

            check_model(model, T=T, P=self.P, ts=[0.5], Ts=Ts, Ps=Ps)

        assert model.max_timestep(0).infinite()

        try:
            config.set_string("atmosphere.pik.parameterization", "invalid")
            model = PISM.AtmospherePIK(self.grid)
            assert False, "failed to catch an invalid parameterization"
        except RuntimeError:
            pass