diff --git a/models/c/general/CFUN_HTS_JcFit_Succi_v1.c b/models/c/general/CFUN_HTS_JcFit_Succi_v2.c similarity index 89% rename from models/c/general/CFUN_HTS_JcFit_Succi_v1.c rename to models/c/general/CFUN_HTS_JcFit_Succi_v2.c index 19ed0fe27882c30e640b9b219f3458541b468266..f6b65a4ca1c5faabbece2beb313e4621844a07ae 100644 --- a/models/c/general/CFUN_HTS_JcFit_Succi_v1.c +++ b/models/c/general/CFUN_HTS_JcFit_Succi_v2.c @@ -60,10 +60,14 @@ EXPORT int eval(const char *func, double *outReal, double *outImag) { - if (nArgs != 2) { - // Top_IN, Bnorm_IN, thetaFieldTape_IN - error = "CFUN_HTS_JcFit_Succi expects two arguments"; - return 0; + if (nArgs != 2) { + error = "CFUN_HTS_JcFit_Succi expects two arguments"; + return 0; + } + + if(strcmp("CFUN_HTS_JcFit_Succi_v2", func) != 0) { + error = "Unknown function"; + return 0; } // Fit Parameters @@ -88,10 +92,22 @@ EXPORT int eval(const char *func, double Top_IN = inReal[0][i]; double Bnorm_IN = inReal[1][i]; - //Pre-allocation + // temperature above Tc0 + if (Top_IN >= Tc0) { + outReal[i] = 0; + return 1; + } + + double Birr_T_val = Birr_T(Birr, Tc0, Top_IN, birr_pow); + + // B above Birr_T + if (Bnorm_IN >= Birr_T_val) { + outReal[i] = 0; + return 1; + } + double Ic0_T_val = Ic0_T(Ic0, Tc0, gamma, Top_IN); double B0_T_val = B0_T(B0, Tc0, Top_IN); - double Birr_T_val = Birr_T(Birr, Tc0, Top_IN, birr_pow); double Ic = Ic0_T_val * pow(1 + Bnorm_IN / B0_T_val, -alpha) * pow(1 - Bnorm_IN / Birr_T_val, q);