সূর্য সিদ্ধান্ত পঞ্জিকা সকল প্রবন্ধ

অরুণোদয়, উষা ও ব্রাহ্মমুহূর্ত: সূর্যোদয়ের আগে কোন সময় কীভাবে গণনা হয়?

অরুণোদয়ের ৪ দণ্ড/৯৬ মিনিট, ব্রাহ্মমুহূর্তের fixed ও seasonal method, উষা এবং civil–nautical–astronomical dawn-এর C# calculation।

একটি app যদি “অরুণোদয় ৪:১৮ AM”, “ব্রাহ্মমুহূর্ত ৪:১৮–৫:০৬ AM” এবং “Astronomical dawn ৩:৫৪ AM” দেখায়, তিনটি আলাদা সময় হওয়াই স্বাভাবিক। প্রথম দুটি sunrise-relative ritual interval; তৃতীয়টি Sun-এর geometric altitude crossing। একই বাংলা শব্দে সবকিছুকে “ভোর” বলা গেলেও calculation key এক করা যাবে না।

তিনটি আলাদা time system

SystemBoundaryপ্রধান ব্যবহার
অরুণোদয়Chosen sunrise-এর ৪ দণ্ড আগেবৈষ্ণব একাদশী ও প্রাতঃকৃত্য rule
ব্রাহ্মমুহূর্তFixed অথবা seasonal night divisionপ্রাতঃসাধনা/ritual interval
Astronomical dawnSun center −১৮°, −১২°, −৬° crossingSky illumination ও twilight

উষা, প্রভাত, dawn ও twilight ভাষায় overlap করতে পারে, কিন্তু software-এ exact meaning profile দিয়ে ঘোষণা করতে হবে।

দণ্ড, ঘটিকা, নাড়ী ও মুহূর্ত

Fixed traditional civil conversion:

এটি equal clock-unit convention। Seasonal day/night division-এ daylight বা night length আলাদাভাবে ভাগ করলে unit duration ২৪/৪৮ মিনিট স্থির থাকে না। দুটি method mix করলে output self-contradictory হবে।

অরুণোদয়: এই project-এ ৪ দণ্ড আগে

Hari-bhakti-vilāsa-এর একাদশী-নির্ণয় অংশে অরুণোদয়কে sunrise-এর আগের চার ঘটিকা/দণ্ড বলা হয়েছে। Project rule:

উদাহরণ: chosen sunrise 05:54 হলে অরুণোদয় শুরু 04:18। Exact boundary-তে tithi evaluate করতে হলে unrounded instant ব্যবহার করুন; 04:18 display value থেকে reverse calculation নয়।

ব্রাহ্মমুহূর্তের fixed convention

Lexicographical/traditional description-এ ব্রাহ্মমুহূর্ত sunrise-এর চতুর্থ থেকে দ্বিতীয় ঘটিকার মধ্যবর্তী period—অর্থাৎ:

এই convention-এ Brahma-muhūrta অরুণোদয়ের প্রথম অর্ধ। Sunrise 05:54 হলে:

অরুণোদয়: 04:18 → 05:54
ব্রাহ্মমুহূর্ত: 04:18 → 05:06
সূর্যোদয়ের পূর্ববর্তী শেষ মুহূর্ত: 05:06 → 05:54

কিছু জনপ্রিয় source “sunrise-এর ৪৮ মিনিট আগে” কথাটিকে Brahma-muhūrta শুরু বলে; অন্য source এটিকে period-এর end/last pre-sunrise muhurta-এর সঙ্গে মেশায়। তাই UI-তে শুধু একটি clock time নয়, start–end interval দেখানো উত্তম।

Fixed ৪৮ মিনিট বনাম seasonal night division

আরেক approach-এ previous sunset থেকে sunrise পর্যন্ত night interval ১৫ সমান muhurta-তে ভাগ করা হয়। Penultimate night muhurta:

Night ঠিক ১২ ঘণ্টা হলে প্রতিটি unit ৪৮ মিনিট এবং fixed method-এর সঙ্গে মিলে যায়। শীতের দীর্ঘ রাতে seasonal interval ৪৮ মিনিটের বেশি, গ্রীষ্মের ছোট রাতে কম।

Methodপ্রয়োজনফল
fixed-48শুধু sunriseসব ঋতুতে ৪৮ মিনিট
seasonal-night-15Previous sunset + sunriseNight length অনুযায়ী duration

এই project-এর Ekādaśī Aruṇodaya rule fixed ৯৬ মিনিট। Brahma-muhūrta page-এ চাইলে fixed default এবং seasonal research option রাখা যায়; তাদের result key আলাদা হবে।

উষা, প্রভাত ও ভোর

Uṣā মূলত dawn-এর সাংস্কৃতিক/ঋগ্বৈদিক ধারণা; everyday বাংলা “উষা”, “প্রভাত”, “ভোর” strict mathematical boundary নয়। কোনো tradition নির্দিষ্ট rule না দিলে software-এ:

  • Usha নামে invented exact minute দেবেন না;
  • astronomical/civil/nautical dawn-এর exact label ব্যবহার করুন;
  • ritual Aruṇodaya আলাদা রাখুন;
  • localized prose-এ “উষাকাল” ব্যবহার করলে underlying key দেখান।

উদাহরণ: “উষাকাল (civil dawn): 05:27”—এখানে parenthesis calculation definition পরিষ্কার করে।

Astronomical, nautical ও civil dawn

U.S. Naval Observatory-এর standard geometric thresholds:

DawnSun center altitudeসাধারণ অর্থ
Astronomical dawn−১৮° rising crossingSun-scattered light starlight-কে ছাড়াতে শুরু
Nautical dawn−১২° rising crossingHorizon discernible; navigation context
Civil dawn−৬° rising crossingOutdoor activity-এর জন্য আলো বাড়তে শুরু
SunriseSelected limb/refraction profileSolar disk horizon event

Morning sequence সাধারণত:

Cloud, haze, Moonlight, terrain ও city light actual brightness বদলায়; thresholds conventional astronomical boundaries।

যে ধারণাগুলো সমার্থক নয়

ভুল সমীকরণকেন ভুল
অরুণোদয় = astronomical dawnএকটি sunrise−৯৬ মিনিট; অন্যটি Sun altitude −১৮°
ব্রাহ্মমুহূর্ত = civil dawnএকটি ritual interval; অন্যটি −৬° crossing
উষা = একটি universal minuteসাংস্কৃতিক শব্দ; calculation policy দরকার
সূর্যোদয় = Sun center ০° সর্বত্রProject/profile অনুযায়ী limb ও refraction বদলায়
৪ দণ্ড = seasonal night-এর ১/১৫ × ২Fixed civil unit ও seasonal division আলাদা

Sunrise profile বদলালে সব relative time সরে যায়

অরুণোদয় ও fixed Brahma-muhūrta chosen sunrise instant থেকে backward offset। তাই upper-limb/refraction sunrise যদি center/no-refraction sunrise-এর আগে হয়, তার Aruṇodaya-ও আগে হবে।

এই project-এর primary Panchanga sunrise profile hindu-center-geometric হলে Ekādaśī rule-এ একই profile ব্যবহার করুন। Public astronomical sunrise থেকে ৯৬ মিনিট বাদ দিয়ে এবং Panchanga sunrise অন্য profile রেখে hybrid result বানাবেন না।

Ekādaśī viddha rule-এ অরুণোদয়

Hari-bhakti-vilāsa চার দণ্ডের Aruṇodaya boundary-তে Daśamī contamination নিয়ে আলোচনা করে। এই project-এর computational policy:

  1. Chosen local sunrise exact UTC/JD-তে নির্ণয়;
  2. ৯৬ exact minutes বিয়োগ করে Aruṇodaya instant;
  3. সেই instant-এ geocentric tithi calculate;
  4. Daśamī থাকলে configured Vaiṣṇava viddha rule প্রয়োগ;
  5. school/authority key সহ decision trace সংরক্ষণ।
arunodayaInstantUtc = sunriseUtc.AddMinutes(-96.0);
tithiAtArunodaya = tithiEngine.Calculate(arunodayaInstantUtc);

// Festival policy layer:
isViddha = tithiAtArunodaya.Key == "dashami";

একটি rounded “04:18” string parse করে tithi পুনর্গণনা করবেন না। Root যদি 04:18:20 হয় এবং tithi 04:18:10-এ বদলে যায়, seconds হারালে decision উল্টো হতে পারে।

C# 5-compatible data model

public enum BrahmaMuhurtaMethod
{
    FixedFortyEightMinutes,
    SeasonalNightFifteenth
}

public sealed class DawnCalculationProfile
{
    public string Key { get; set; }
    public string Version { get; set; }
    public double DandaMinutes { get; set; }
    public int ArunodayaDandas { get; set; }
    public BrahmaMuhurtaMethod BrahmaMethod { get; set; }
    public int NightMuhurtaCount { get; set; }
    public string SunriseProfileKey { get; set; }
}

public sealed class DawnPeriods
{
    public DateTimeOffset PreviousSunsetUtc { get; set; }
    public DateTimeOffset AstronomicalDawnUtc { get; set; }
    public DateTimeOffset NauticalDawnUtc { get; set; }
    public DateTimeOffset CivilDawnUtc { get; set; }
    public DateTimeOffset ArunodayaStartUtc { get; set; }
    public DateTimeOffset BrahmaStartUtc { get; set; }
    public DateTimeOffset BrahmaEndUtc { get; set; }
    public DateTimeOffset SunriseUtc { get; set; }
    public string ProfileKey { get; set; }
    public string ProfileVersion { get; set; }
}

Twilight না পাওয়া high-latitude case-এর জন্য production model-এ nullable field বা explicit EventStatus ব্যবহার করুন। এখানে readable core model দেখানো হয়েছে।

Fixed ৯৬/৪৮-minute calculation

static DawnCalculationProfile VaisnavaFixedProfile()
{
    return new DawnCalculationProfile
    {
        Key = "vaisnava-arunodaya-fixed",
        Version = "1.0",
        DandaMinutes = 24.0,
        ArunodayaDandas = 4,
        BrahmaMethod =
            BrahmaMuhurtaMethod.FixedFortyEightMinutes,
        NightMuhurtaCount = 15,
        SunriseProfileKey = "hindu-center-geometric"
    };
}

static void ApplyFixedPeriods(
    DawnPeriods result,
    DawnCalculationProfile profile)
{
    double arunodayaMinutes =
        profile.ArunodayaDandas * profile.DandaMinutes;

    double muhurtaMinutes = profile.DandaMinutes * 2.0;

    result.ArunodayaStartUtc =
        result.SunriseUtc.AddMinutes(-arunodayaMinutes);

    result.BrahmaStartUtc =
        result.SunriseUtc.AddMinutes(-2.0 * muhurtaMinutes);

    result.BrahmaEndUtc =
        result.SunriseUtc.AddMinutes(-1.0 * muhurtaMinutes);
}

Default values-এ Aruṇodaya start ও Brahma start একই instant। তবু দুটি property রাখুন—semantic meaning এবং future profile আলাদা।

Seasonal night-fifteenth calculation

static void ApplySeasonalBrahmaMuhurta(
    DawnPeriods result,
    DawnCalculationProfile profile)
{
    if (result.PreviousSunsetUtc >= result.SunriseUtc)
        throw new InvalidOperationException(
            "Previous sunset must be before sunrise.");

    if (profile.NightMuhurtaCount <= 0)
        throw new ArgumentOutOfRangeException(
            "NightMuhurtaCount");

    TimeSpan night =
        result.SunriseUtc - result.PreviousSunsetUtc;

    TimeSpan oneNightMuhurta = TimeSpan.FromTicks(
        night.Ticks / profile.NightMuhurtaCount);

    result.BrahmaStartUtc =
        result.SunriseUtc -
        TimeSpan.FromTicks(oneNightMuhurta.Ticks * 2L);

    result.BrahmaEndUtc =
        result.SunriseUtc - oneNightMuhurta;
}

Previous sunset অবশ্যই sunrise-এর আগের local civil date-এর event। Current day sunset নিলে negative/invalid night হবে। DST transition থাকলেও absolute UTC duration ব্যবহার করায় calculation নিরাপদ।

Twilight boundary calculation

Swiss Ephemeris rise/set interface-এ twilight flags আছে:

static int TwilightMode(DawnKind kind)
{
    int mode = SweConst.SE_CALC_RISE;

    switch (kind)
    {
        case DawnKind.Civil:
            return mode | SweConst.SE_BIT_CIVIL_TWILIGHT;
        case DawnKind.Nautical:
            return mode | SweConst.SE_BIT_NAUTIC_TWILIGHT;
        case DawnKind.Astronomical:
            return mode | SweConst.SE_BIT_ASTRO_TWILIGHT;
        default:
            throw new ArgumentOutOfRangeException("kind");
    }
}

Standalone enum:

public enum DawnKind
{
    Astronomical,
    Nautical,
    Civil
}

Custom solver হলে morning rising root:

static double TargetAltitude(DawnKind kind)
{
    switch (kind)
    {
        case DawnKind.Astronomical: return -18.0;
        case DawnKind.Nautical: return -12.0;
        case DawnKind.Civil: return -6.0;
        default: throw new ArgumentOutOfRangeException("kind");
    }
}

Sunrise target-এর সঙ্গে twilight target mix করবেন না। Twilight Sun center-এর geometric altitude; Sunrise disc/refraction profile-এর event।

UTC subtraction, local display

৯৬ মিনিট local wall-clock text থেকে নয়, sunrise absolute instant থেকে বিয়োগ করুন:

DateTimeOffset arunodayaUtc =
    sunriseUtc.ToUniversalTime().AddMinutes(-96.0);

DateTimeOffset arunodayaLocal =
    TimeZoneInfo.ConvertTime(arunodayaUtc, zone);

DST spring/fall transition ভোরের কাছে ঘটলেও UTC arithmetic physical ৯৬ মিনিট বজায় রাখে। Local DateTime.AddMinutes(-96) ambiguous/invalid wall time বানাতে পারে।

Historical calculation

ঐতিহাসিক পঞ্জিকায়:

  • Sunrise ও sunset internal JD/UT-তে রাখুন;
  • অরুণোদয়ের জন্য ৯৬/১৪৪০ day বিয়োগ করা যায়;
  • historical LMT/time-zone profile স্পষ্ট করুন;
  • Julian/Gregorian label presentation layer-এ;
  • festival decision trace-এ sunrise JD, Aruṇodaya JD ও tithi boundary JD রাখুন।

JD arithmetic early year-এ .NET DateTime range এবং ১৫৮২ calendar reform gap এড়ায়।

High latitude-এ sunrise না হলে

Sunrise-relative Aruṇodaya-এর জন্য sunrise লাগবেই। Polar night/day-এ chosen date-এ sunrise না থাকলে:

ArunodayaStatus = "NoLocalSunrise";
BrahmaStatus = "NoLocalSunrise";
TwilightStatus = "CrossingNotFound";

Nearest sunrise নিয়ে ৯৬ মিনিট বাদ দিয়ে current day-এর অরুণোদয় বলবেন না। কোনো alternative high-latitude ritual convention নিলে authority, fallback latitude বা proportional rule প্রকাশ করুন।

API ও XML output

{
  "date": "2026-10-09",
  "location": "Dhaka",
  "sunrise": "2026-10-09T05:54:00+06:00",
  "sunriseProfile": "hindu-center-geometric",
  "arunodaya": {
    "start": "2026-10-09T04:18:00+06:00",
    "end": "2026-10-09T05:54:00+06:00",
    "rule": "four-dandas-before-sunrise",
    "minutesBeforeSunrise": 96
  },
  "brahmaMuhurta": {
    "start": "2026-10-09T04:18:00+06:00",
    "end": "2026-10-09T05:06:00+06:00",
    "method": "fixed-48"
  },
  "dawn": {
    "astronomical": "2026-10-09T04:31:00+06:00",
    "nautical": "2026-10-09T05:00:00+06:00",
    "civil": "2026-10-09T05:29:00+06:00"
  }
}

সময়গুলো format example; astronomical test vector নয়। XML:

<dawn-periods date="2026-10-09"
              sunrise-profile="hindu-center-geometric">
  <arunodaya start="2026-10-09T04:18:00+06:00"
              end="2026-10-09T05:54:00+06:00"
              rule="four-dandas" />
  <brahma-muhurta start="2026-10-09T04:18:00+06:00"
                    end="2026-10-09T05:06:00+06:00"
                    method="fixed-48" />
  <dawn astronomical="2026-10-09T04:31:00+06:00"
        nautical="2026-10-09T05:00:00+06:00"
        civil="2026-10-09T05:29:00+06:00" />
</dawn-periods>

সাধারণ implementation error

ভুলফলসংশোধন
অরুণোদয় = −১৮° dawnঋতুভেদে wrong intervalSunrise−৯৬ মিনিট
ব্রাহ্মমুহূর্ত = sunrise−৪৮ থেকে sunriseInterval one muhurta lateFixed start −৯৬, end −৪৮
৪ দণ্ড = ৪৮ মিনিটঅর্ধেক সময়১ দণ্ড ২৪ মিনিট; ৪=৯৬
Fixed ও seasonal mixUntraceable outputMethod key/version
Current sunset দিয়ে nightNegative intervalPrevious local sunset
Local wall-clock subtractionDST ambiguityUTC instant arithmetic
Rounded display time-এ tithiBoundary decision ভুলExact JD/UTC
Mixed sunrise profilesFestival mismatchOne profile chain
উষা universal exact timeInvented definitionUnderlying rule label
No sunrise-এ midnight fallbackFabricated AruṇodayaExplicit no-result/policy

Validation checklist

  1. ১ দণ্ড = ২৪ মিনিট;
  2. ১ মুহূর্ত = ৪৮ মিনিট;
  3. ৪ দণ্ড = ৯৬ মিনিট;
  4. Aruṇodaya start sunrise−৯৬;
  5. Aruṇodaya end exact sunrise;
  6. Fixed Brahma start sunrise−৯৬;
  7. Fixed Brahma end sunrise−৪৮;
  8. Fixed Brahma duration ৪৮ মিনিট;
  9. ১২-hour night-এ seasonal=fixed;
  10. Long winter night-এ seasonal duration >৪৮;
  11. Short summer night-এ seasonal duration <৪৮;
  12. Seasonal previous sunset ব্যবহার;
  13. Previous sunset < sunrise validation;
  14. NightMuhurtaCount=15;
  15. Astronomical dawn target −১৮°;
  16. Nautical dawn target −১২°;
  17. Civil dawn target −৬°;
  18. Dawn order −১৮ → −১২ → −৬;
  19. Twilight ≠ Aruṇodaya;
  20. Civil dawn ≠ Brahma-muhūrta;
  21. Uṣā label includes rule;
  22. Chosen sunrise profile inherited;
  23. Center/no-refraction regression;
  24. Upper-limb/refraction comparison;
  25. Profile change invalidates cache;
  26. Exact UTC subtraction;
  27. DST spring transition;
  28. DST fall transition;
  29. Dhaka regression;
  30. Kolkata regression;
  31. New York regression;
  32. Same sunrise instant gives exact ৯৬-minute offset;
  33. Rounded display does not feed calculation;
  34. Tithi boundary one second before Aruṇodaya;
  35. Tithi boundary exact Aruṇodaya;
  36. Tithi boundary one second after Aruṇodaya;
  37. Daśamī-at-Aruṇodaya viddha path;
  38. Ekādaśī-at-Aruṇodaya śuddha path;
  39. School/authority key in trace;
  40. Festival rule separate from astronomy;
  41. Historical JD subtraction ১/১৫ day;
  42. Julian/Gregorian same instant;
  43. Historical LMT profile;
  44. Polar no-sunrise status;
  45. No fabricated fallback;
  46. Twilight crossing-not-found status;
  47. HTML/API/XML same interval;
  48. Start–end displayed, not single time;
  49. Profile key/version exported;
  50. Regression against accepted Vaiṣṇava calendar।

উপসংহার

অরুণোদয়, ব্রাহ্মমুহূর্ত ও astronomical dawn একই “ভোর” অঞ্চলে হলেও calculation এক নয়। এই project-এর Vaiṣṇava Aruṇodaya হলো chosen sunrise-এর চার দণ্ড—৯৬ মিনিট—আগে থেকে sunrise পর্যন্ত। Fixed Brahma-muhūrta হলো sunrise-এর ৯৬ থেকে ৪৮ মিনিট আগে।

Seasonal research method previous sunset থেকে sunrise পর্যন্ত night-কে ১৫ ভাগ করে penultimate unit নেয়; night ১২ ঘণ্টা না হলে fixed method-এর সঙ্গে ফল মেলে না। Civil, nautical ও astronomical dawn আবার Sun center-এর −৬°, −১২° ও −১৮° crossings।

Exact sunrise UTC/JD থেকে interval তৈরি, profile key সংরক্ষণ, tithi exact Aruṇodaya instant-এ evaluate এবং local display পরে করলে Ekādaśī, Sandhyā page, Daily Details, API ও XML একই rule অনুসরণ করবে।

তথ্যসূত্র ও আরও পাঠ

  1. Hari-bhakti-vilāsa, Vilāsa 12; Ekādaśī determination, চার ঘটিকা/দণ্ড Aruṇodaya ও viddha discussion.
  2. U.S. Naval Observatory—Rise, Set and Twilight Definitions; civil −৬°, nautical −১২°, astronomical −১৮° thresholds.
  3. U.S. Naval Observatory—Astronomical Almanac Glossary; twilight terminology ও zenith distances.
  4. Sanskrit dictionary compilation—Brāhma-muhūrta; fourth-to-second ghaṭikā before sunrise definition.
  5. Swiss Ephemeris Programmer’s Documentation; civil, nautical ও astronomical twilight flags.
  6. Positional Astronomy Centre—Rashtriya Panchang Explanation; sunrise convention ও sunrise-to-sunrise daily framework.
  7. সূর্য সিদ্ধান্ত পঞ্জিকা project specification; ৯৬-minute Vaiṣṇava Aruṇodaya, Ekādaśī schools ও exact tithi-at-boundary rule.

মন্তব্য, আলোচনা ও প্রশ্ন

  • Uttam Singha (2026-10-10 11:11:36)
    Test
    • সূর্য সিদ্ধান্ত পঞ্জিকা গবেষণা দল (2026-10-10 12:35:19)
      Great.