diff --git a/science/Makefile b/science/Makefile
index 41d3948935a4..0d99b056b3f1 100644
--- a/science/Makefile
+++ b/science/Makefile
@@ -339,6 +339,7 @@
     SUBDIR += szip
     SUBDIR += teem
     SUBDIR += tfel
+    SUBDIR += thermofun
     SUBDIR += tfel-edf
     SUBDIR += tinker
     SUBDIR += udunits
diff --git a/science/thermofun/Makefile b/science/thermofun/Makefile
new file mode 100644
index 000000000000..787a25afb753
--- /dev/null
+++ b/science/thermofun/Makefile
@@ -0,0 +1,24 @@
+# $FreeBSD$
+
+PORTNAME=	thermofun
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.3.6
+CATEGORIES=	science
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Code for calculating thermodynamic properties of materials
+
+LICENSE=	LGPL3
+LICENSE_FILE=	${WRKSRC}/COPYING
+
+BUILD_DEPENDS=	nlohmann-json>0:devel/nlohmann-json
+
+USES=		cmake compiler:c++14-lang
+USE_LDCONFIG=	yes
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	thermohub
+
+CMAKE_OFF=	TFUN_BUILD_PYTHON
+
+.include <bsd.port.mk>
diff --git a/science/thermofun/distinfo b/science/thermofun/distinfo
new file mode 100644
index 000000000000..0907bf793d17
--- /dev/null
+++ b/science/thermofun/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1612225842
+SHA256 (thermohub-thermofun-v0.3.6_GH0.tar.gz) = 083e55f1c142344870de9fe9638e5d14e541f33cf0968b681f1ee857ea2e17a0
+SIZE (thermohub-thermofun-v0.3.6_GH0.tar.gz) = 1195683
diff --git a/science/thermofun/pkg-descr b/science/thermofun/pkg-descr
new file mode 100644
index 000000000000..b9ea483f2589
--- /dev/null
+++ b/science/thermofun/pkg-descr
@@ -0,0 +1,4 @@
+A code for calculating the standard state thermodynamic properties at a given
+temperature and pressure.
+
+WWW: https://github.com/thermohub/thermofun
diff --git a/science/thermofun/pkg-plist b/science/thermofun/pkg-plist
new file mode 100644
index 000000000000..297c454ce87c
--- /dev/null
+++ b/science/thermofun/pkg-plist
@@ -0,0 +1,72 @@
+include/ThermoFun/Batch/OutputBatch.h
+include/ThermoFun/Batch/ThermoBatch.h
+include/ThermoFun/Common/Exception.h
+include/ThermoFun/Common/OutputToCSV.h
+include/ThermoFun/Common/OutputWaterSteamConventionProp.h
+include/ThermoFun/Common/ParseJsonToData.h
+include/ThermoFun/Common/ScalarTypes.hpp
+include/ThermoFun/Common/ThermoOmp.h
+include/ThermoFun/Common/ThermoScalar.hpp
+include/ThermoFun/Common/Units.hpp
+include/ThermoFun/Common/formuladata.h
+include/ThermoFun/Common/formulaparser.h
+include/ThermoFun/Database.h
+include/ThermoFun/ElectroModelsSolvent.h
+include/ThermoFun/Element.h
+include/ThermoFun/GlobalVariables.h
+include/ThermoFun/OptimizationUtils.h
+include/ThermoFun/Reaction.h
+include/ThermoFun/Reactions/DolejsManning2010.h
+include/ThermoFun/Reactions/FrantzMarshall.h
+include/ThermoFun/Reactions/LogK_function_of_T.h
+include/ThermoFun/Reactions/RyzhenkoBryzgalyn.h
+include/ThermoFun/Reactions/Volume_function_of_T.h
+include/ThermoFun/Substance.h
+include/ThermoFun/Substances/EmpiricalCpIntegration.h
+include/ThermoFun/Substances/Gases/GasCGF.h
+include/ThermoFun/Substances/Gases/GasCORK.h
+include/ThermoFun/Substances/Gases/GasPR78.h
+include/ThermoFun/Substances/Gases/GasPRSV.h
+include/ThermoFun/Substances/Gases/GasSRK.h
+include/ThermoFun/Substances/Gases/GasSTP.h
+include/ThermoFun/Substances/Gases/s_solmod_.h
+include/ThermoFun/Substances/Gases/verror.h
+include/ThermoFun/Substances/Solids/SolidBMGottschalk.h
+include/ThermoFun/Substances/Solids/SolidBerman88.h
+include/ThermoFun/Substances/Solids/SolidHPLandau.h
+include/ThermoFun/Substances/Solids/SolidMurnaghanHP98.h
+include/ThermoFun/Substances/Solute/SoluteADgems.h
+include/ThermoFun/Substances/Solute/SoluteAnderson91.h
+include/ThermoFun/Substances/Solute/SoluteHKFgems.h
+include/ThermoFun/Substances/Solute/SoluteHKFreaktoro.h
+include/ThermoFun/Substances/Solute/SoluteHollandPowell98.h
+include/ThermoFun/Substances/Solvent/Reaktoro/WaterConstants.hpp
+include/ThermoFun/Substances/Solvent/Reaktoro/WaterElectroState.hpp
+include/ThermoFun/Substances/Solvent/Reaktoro/WaterElectroStateJohnsonNorton.hpp
+include/ThermoFun/Substances/Solvent/Reaktoro/WaterHelmholtzState.hpp
+include/ThermoFun/Substances/Solvent/Reaktoro/WaterHelmholtzStateHGK.hpp
+include/ThermoFun/Substances/Solvent/Reaktoro/WaterHelmholtzStateWagnerPruss.hpp
+include/ThermoFun/Substances/Solvent/Reaktoro/WaterThermoState.hpp
+include/ThermoFun/Substances/Solvent/Reaktoro/WaterThermoStateUtils.hpp
+include/ThermoFun/Substances/Solvent/Reaktoro/WaterUtils.hpp
+include/ThermoFun/Substances/Solvent/WaterElectroFernandez1997.h
+include/ThermoFun/Substances/Solvent/WaterElectroSverjensky2014.h
+include/ThermoFun/Substances/Solvent/WaterHGK-JNgems.h
+include/ThermoFun/Substances/Solvent/WaterHGKreaktoro.h
+include/ThermoFun/Substances/Solvent/WaterIdealGasWolley.h
+include/ThermoFun/Substances/Solvent/WaterJN91reaktoro.h
+include/ThermoFun/Substances/Solvent/WaterWP95reaktoro.h
+include/ThermoFun/Substances/Solvent/WaterZhangDuan2005.h
+include/ThermoFun/Substances/StandardEntropyCpIntegration.h
+include/ThermoFun/ThermoEngine.h
+include/ThermoFun/ThermoFun.h
+include/ThermoFun/ThermoModelsReaction.h
+include/ThermoFun/ThermoModelsSolvent.h
+include/ThermoFun/ThermoModelsSubstance.h
+include/ThermoFun/ThermoParameters.h
+include/ThermoFun/ThermoProperties.h
+lib/cmake/ThermoFun/ThermoFunConfig.cmake
+lib/cmake/ThermoFun/ThermoFunConfigVersion.cmake
+lib/cmake/ThermoFun/ThermoFunTargets-%%CMAKE_BUILD_TYPE%%.cmake
+lib/cmake/ThermoFun/ThermoFunTargets.cmake
+lib/libThermoFun.so